private void ReadXML(out string re,string path,string nodename)
{
re = "";
if (File.Exists(path))
{
string element = string.Empty;
//string[] returnstr;
XmlDocument xml = new XmlDocument();
xml.Load(path);
XmlNodeReader read = new XmlNodeReader(xml);
while (read.Read())
{
switch (read.NodeType)
{
element = read.Name;
break;
if (element.Equals(nodename))
{
re = read.Value;
}
//if (element.Equals("service"))
//{
// re = read.Value;
//}
//if (element.Equals("Message"))
//{
// Message = read.Value;
//}
break;
}
}
}
}//读配置文件,获取对应于nodename的信息
private void UpdateXmlVersion(string path)
{
if (File.Exists(path))
{
string element = string.Empty;
XmlDocument xml = new XmlDocument();
xml.Load(path);
XmlNodeList nodeList=xml.SelectSingleNode("update").ChildNodes;//获取节点的所有子节点
foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;
XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "version")//如果找到
{
xe2.InnerText = serviceversion;//则修改
break;//找到退出来就可以了
}
}
}
xml.Save(path);//保存。
}
}//更新版本号
private void checkxml(string nodepath)
{
if (File.Exists("updateserverconfig.xml"))
{
XmlDocument xml = new XmlDocument();
xml.Load("updateserverconfig.xml");
XmlNodeList nodeList = xml.SelectSingleNode(nodepath).ChildNodes;//获取某节点的所有子节点
foreach (XmlNode xn in nodeList)
{
//XmlElement xe = (XmlElement)xn;
if (!xn.HasChildNodes)
{
//对该节点操作
string file;
file = "/" + xn.Value.Substring(0,xn.Value.LastIndexOf("#"));
string tempurlpath;
tempurlpath = url + serverpath + file;
string templocalpath;
//templocalpath = Application.StartupPath + serverpath + file;
templocalpath = @"c:\temp" + serverpath + file;
templocalpath = templocalpath.Replace("/", @"\");
int n = templocalpath.LastIndexOf(@"\");
string filepath = templocalpath.Substring(0, n);
if (!Directory.Exists(filepath))
{
Directory.CreateDirectory(filepath);
}
WebClient wc = new WebClient();
wc.DownloadFile(tempurlpath, templocalpath);
//wc.DownloadFile(tempurlpath, file);
strr = tempurlpath;
MyInvoke1 mi1 = new MyInvoke1(loadfileshow);
this.BeginInvoke(mi);
this.Invoke(mi1(tempurlpath));
mi1(tempurlpath);
this.Invoke(mi1);//下載文件
MyInvoke2 mi2 = new MyInvoke2(DownFile);
this.Invoke(mi2, url + serverpath, file);
//MyInvoke mi = new MyInvoke(loadFiles);
//this.BeginInvoke(mi);
//this.Invoke(mi);
this.Invoke(new MyInvoke(loadFiles));//下載進度條
}
else
{
//先对该节点操作
nodepath = nodepath + "/" + xn.Name;
serverpath = path;
string tempnodepath = nodepath;
path =path + "/" + xn.Name;
string temppath;
temppath = path;
this.checkxml(nodepath);
//path = temppath;//文件夹里有文件夹,往回返的时候用到的
//path = "";
path = temppath.Substring(0, temppath.LastIndexOf("/"));
//nodepath = "update/updatelist";
nodepath = tempnodepath.Substring(0, tempnodepath.LastIndexOf("/"));
}
//nodepath = "update/updatelist";
}
}
}//下载更新文件
private void copy(string nodepath)
{
if (File.Exists("updateserverconfig.xml"))
{
XmlDocument xml = new XmlDocument();
xml.Load("updateserverconfig.xml");
XmlNodeList nodeList = xml.SelectSingleNode(nodepath).ChildNodes;//获取某节点的所有子节点
foreach (XmlNode xn in nodeList)
{
//XmlElement xe = (XmlElement)xn;
if (!xn.HasChildNodes)
{
//对该节点操作
string fromfile;
fromfile =@"\" + xn.Value.Substring(0, xn.Value.LastIndexOf("#"));
string tofile;
tofile = @"\" + xn.Value.Substring(xn.Value.LastIndexOf("#") + 1, xn.Value.Length - xn.Value.LastIndexOf("#") - 1);
//string tempurlpath;
//tempurlpath = url + serverpath + file;
//string templocalpath;
//templocalpath = Application.StartupPath + serverpath + file;
//templocalpath = templocalpath.Replace("/", @"\");
//int n = templocalpath.LastIndexOf(@"\");
//string filepath = templocalpath.Substring(0, n);
string frompath = @"c:\temp" +serverpath + fromfile;
string topath = Application.StartupPath + serverpath;
if (!Directory.Exists(topath))
{
Directory.CreateDirectory(topath);
}
topath = topath + tofile;
frompath = frompath.Replace("/", @"\");
topath = topath.Replace("/", @"\");
File.Copy(frompath, topath,true);
File.Delete(frompath );
//WebClient wc = new WebClient();
//wc.DownloadFile(tempurlpath, templocalpath);
}
else
{
//先对该节点操作
nodepath = nodepath + "/" + xn.Name;
serverpath = path;
string tempnodepath = nodepath;
path = path + "/" + xn.Name;
string temppath;
temppath = path;
this.copy(nodepath);
//path = temppath;//文件夹里有文件夹,往回返的时候用到的
//path = "";
path = temppath.Substring(0, temppath.LastIndexOf("/"));
//nodepath = "update/updatelist";
nodepath = tempnodepath.Substring(0, tempnodepath.LastIndexOf("/"));
}
}
}
}//把跟新文件copy到当前目录