转的,还没有测试
1
//
这是一个webservice
2
3 private AppUpdate.UpdateServ UpdateSvr;
4
5
6 private void button1_Click( object sender, System.EventArgs e)
7 {
8
9 if(LinkWebServices()==true)
10 {
11 this.label1.Text=“连接服务器. PASS“;
12
13 if(CheckVer()==true)
14 {
15 this.label2.Text=“检查最新版本并下载.PASS“;
16
17 }
18 else
19 {
20 this.label2.Text=“检查最新版本并下载.FAIL“;
21 }
22 }
23 else
24 {
25 this.label1.Text=“连接服务器.FAIL“;
26 }
27 }
28
29 // 这是用来与升级服务器建立连接
30 private bool LinkWebServices()
31 {
32 try
33 {
34 UpdateSvr=new UpdateServ();
35 return true;
36 }
37 catch
38 {
39 return false;
40 }
41 }
42
43 // 调用webservice用来检查是不是有最新的版本
44 private bool CheckVer()
45 {
46 string path =Application.StartupPath;
47 try
48 {
49 VersionCheck(path);
50 return true;
51 }
52 catch(Exception ex)
53 {
54 MessageBox.Show(ex.ToString());
55 return false;
56 }
57 }
58
59 private void VersionCheck( string desPath)
60 {
61 try
62 {
63 查看文件和目录#region 查看文件和目录
64 if(!desPath.EndsWith(@“\“))
65 desPath += @“\“;
66
67 if(!System.IO.Directory.Exists(desPath))
68 {
69 System.IO.Directory.CreateDirectory(desPath);
70 }
71
72 string tempPath = desPath + @“tempDesPathCache\“;
73
74 if(System.IO.Directory.Exists(tempPath))
75 {
76 System.IO.Directory.Delete(tempPath,true);
77 System.IO.Directory.CreateDirectory(tempPath);
78 }
79 else
80 System.IO.Directory.CreateDirectory(tempPath);
81
82 if(!System.IO.File.Exists(desPath + “UpdateConfig.xml“))
83 {
84 System.Xml.XmlDocument updateConfig = new System.Xml.XmlDocument();
85 updateConfig.LoadXml(@“〈root〉〈/root〉“);
86 updateConfig.Save(desPath + “UpdateConfig.xml“);
87 }
88 #endregion
89
90
91 System.Xml.XmlDocument serverXmlDoc = UpdateSvr.AppUpdateVertion();
92 System.Xml.XmlDocument localXmlDoc = new System.Xml.XmlDocument();
93 localXmlDoc.Load(desPath + “UpdateConfig.xml“);
94 bool newVersionExist = false;
95 bool moduleExist = false;
96 System.Xml.XmlNode serverNode0 = serverXmlDoc.ChildNodes[0];
97 System.Xml.XmlNode localNode0 = localXmlDoc.ChildNodes[0];
98 foreach(System.Xml.XmlNode serverNode in serverNode0)
99 {
100 moduleExist = false;
101 foreach(System.Xml.XmlNode localNode in localNode0)
102 {
103 //找到对应模块
104 if(localNode.ChildNodes[0].InnerText == serverNode.ChildNodes[0].InnerText)
105 {
106 moduleExist = true;
107 //版本号判断
108 if(localNode.ChildNodes[1].InnerText.CompareTo(serverNode.ChildNodes[1].InnerText) 〈 0)
109 {
110 newVersionExist = true;
111 if(System.Configuration.ConfigurationSettings.AppSettings[“NetStyle“].ToString()==“internet“)
112 {
113 DownloadFile(serverNode.ChildNodes[2].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
114 }
115 else
116 {
117 DownloadFile(serverNode.ChildNodes[3].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
118 }
119 }
120 break;
121 }
122 }
123 //没找到对应模块
124 if(false == moduleExist)
125 {
126
127 if(System.Configuration.ConfigurationSettings.AppSettings[“NetStyle“].ToString()==“internet“)
128 {
129 DownloadFile(serverNode.ChildNodes[2].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
130 }
131 else
132 {
133 DownloadFile(serverNode.ChildNodes[3].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
134 }
135 }
136 }
137 //写入新UpdateConfig.xml升级完毕后替换
138 if(newVersionExist)
139 {
140 serverXmlDoc.Save(tempPath + “UpdateConfig.xml“);
141 if(DialogResult.Yes == MessageBox.Show(“有新版本,是否更新?“,“提示“,MessageBoxButtons.YesNo))
142 {
143 string[] dirs = System.IO.Directory.GetFiles(tempPath, “*.*“);
144 string fileName;
145 foreach (string dir in dirs)
146 {
147 fileName = ((dir.Split(Convert.ToChar(@“\“)))[dir.Split(Convert.ToChar(@“\“)).Length - 1]);
148 if(System.IO.File.Exists(desPath + fileName))
149 {
150 //TODO:可以支持备份以前版本
151 System.IO.File.Delete(desPath + fileName);
152 }
153 //TODO:如果系统正在运行,您得停止系统,至于如何停止,也许可以使用System.Diagnostics.Process
154 System.IO.File.Move(dir,desPath + fileName);
155 }
156 MessageBox.Show(“升级完毕“);
157 }
158 else
159 {
160 //TODO:可以支持重新提示升级
161 }
162 }
163 }
164 catch(Exception ex)
165 {
166 throw new Exception(“升级失败,原因是:“ + ex.Message,ex);
167 }
168 }
169
170 // 下载最新的文件
171
172 private void DownloadFile( string source, string fileName)
173 {
174 try
175 {
176 System.Net.WebClient myWebClient = new System.Net.WebClient();
177 myWebClient.DownloadFile(source,fileName);
178 }
179 catch(Exception ex)
180 {
181 throw new Exception(“下载失败,原因是:“ + ex.Message,ex);
182 }
183 }
184
185 该文章转载自网络大本营:http: // www.xrss.cn/Dev/DotNet/200722310638.Html
2
3 private AppUpdate.UpdateServ UpdateSvr;
4
5
6 private void button1_Click( object sender, System.EventArgs e)
7 {
8
9 if(LinkWebServices()==true)
10 {
11 this.label1.Text=“连接服务器. PASS“;
12
13 if(CheckVer()==true)
14 {
15 this.label2.Text=“检查最新版本并下载.PASS“;
16
17 }
18 else
19 {
20 this.label2.Text=“检查最新版本并下载.FAIL“;
21 }
22 }
23 else
24 {
25 this.label1.Text=“连接服务器.FAIL“;
26 }
27 }
28
29 // 这是用来与升级服务器建立连接
30 private bool LinkWebServices()
31 {
32 try
33 {
34 UpdateSvr=new UpdateServ();
35 return true;
36 }
37 catch
38 {
39 return false;
40 }
41 }
42
43 // 调用webservice用来检查是不是有最新的版本
44 private bool CheckVer()
45 {
46 string path =Application.StartupPath;
47 try
48 {
49 VersionCheck(path);
50 return true;
51 }
52 catch(Exception ex)
53 {
54 MessageBox.Show(ex.ToString());
55 return false;
56 }
57 }
58
59 private void VersionCheck( string desPath)
60 {
61 try
62 {
63 查看文件和目录#region 查看文件和目录
64 if(!desPath.EndsWith(@“\“))
65 desPath += @“\“;
66
67 if(!System.IO.Directory.Exists(desPath))
68 {
69 System.IO.Directory.CreateDirectory(desPath);
70 }
71
72 string tempPath = desPath + @“tempDesPathCache\“;
73
74 if(System.IO.Directory.Exists(tempPath))
75 {
76 System.IO.Directory.Delete(tempPath,true);
77 System.IO.Directory.CreateDirectory(tempPath);
78 }
79 else
80 System.IO.Directory.CreateDirectory(tempPath);
81
82 if(!System.IO.File.Exists(desPath + “UpdateConfig.xml“))
83 {
84 System.Xml.XmlDocument updateConfig = new System.Xml.XmlDocument();
85 updateConfig.LoadXml(@“〈root〉〈/root〉“);
86 updateConfig.Save(desPath + “UpdateConfig.xml“);
87 }
88 #endregion
89
90
91 System.Xml.XmlDocument serverXmlDoc = UpdateSvr.AppUpdateVertion();
92 System.Xml.XmlDocument localXmlDoc = new System.Xml.XmlDocument();
93 localXmlDoc.Load(desPath + “UpdateConfig.xml“);
94 bool newVersionExist = false;
95 bool moduleExist = false;
96 System.Xml.XmlNode serverNode0 = serverXmlDoc.ChildNodes[0];
97 System.Xml.XmlNode localNode0 = localXmlDoc.ChildNodes[0];
98 foreach(System.Xml.XmlNode serverNode in serverNode0)
99 {
100 moduleExist = false;
101 foreach(System.Xml.XmlNode localNode in localNode0)
102 {
103 //找到对应模块
104 if(localNode.ChildNodes[0].InnerText == serverNode.ChildNodes[0].InnerText)
105 {
106 moduleExist = true;
107 //版本号判断
108 if(localNode.ChildNodes[1].InnerText.CompareTo(serverNode.ChildNodes[1].InnerText) 〈 0)
109 {
110 newVersionExist = true;
111 if(System.Configuration.ConfigurationSettings.AppSettings[“NetStyle“].ToString()==“internet“)
112 {
113 DownloadFile(serverNode.ChildNodes[2].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
114 }
115 else
116 {
117 DownloadFile(serverNode.ChildNodes[3].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
118 }
119 }
120 break;
121 }
122 }
123 //没找到对应模块
124 if(false == moduleExist)
125 {
126
127 if(System.Configuration.ConfigurationSettings.AppSettings[“NetStyle“].ToString()==“internet“)
128 {
129 DownloadFile(serverNode.ChildNodes[2].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
130 }
131 else
132 {
133 DownloadFile(serverNode.ChildNodes[3].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
134 }
135 }
136 }
137 //写入新UpdateConfig.xml升级完毕后替换
138 if(newVersionExist)
139 {
140 serverXmlDoc.Save(tempPath + “UpdateConfig.xml“);
141 if(DialogResult.Yes == MessageBox.Show(“有新版本,是否更新?“,“提示“,MessageBoxButtons.YesNo))
142 {
143 string[] dirs = System.IO.Directory.GetFiles(tempPath, “*.*“);
144 string fileName;
145 foreach (string dir in dirs)
146 {
147 fileName = ((dir.Split(Convert.ToChar(@“\“)))[dir.Split(Convert.ToChar(@“\“)).Length - 1]);
148 if(System.IO.File.Exists(desPath + fileName))
149 {
150 //TODO:可以支持备份以前版本
151 System.IO.File.Delete(desPath + fileName);
152 }
153 //TODO:如果系统正在运行,您得停止系统,至于如何停止,也许可以使用System.Diagnostics.Process
154 System.IO.File.Move(dir,desPath + fileName);
155 }
156 MessageBox.Show(“升级完毕“);
157 }
158 else
159 {
160 //TODO:可以支持重新提示升级
161 }
162 }
163 }
164 catch(Exception ex)
165 {
166 throw new Exception(“升级失败,原因是:“ + ex.Message,ex);
167 }
168 }
169
170 // 下载最新的文件
171
172 private void DownloadFile( string source, string fileName)
173 {
174 try
175 {
176 System.Net.WebClient myWebClient = new System.Net.WebClient();
177 myWebClient.DownloadFile(source,fileName);
178 }
179 catch(Exception ex)
180 {
181 throw new Exception(“下载失败,原因是:“ + ex.Message,ex);
182 }
183 }
184
185 该文章转载自网络大本营:http: // www.xrss.cn/Dev/DotNet/200722310638.Html