C#实现程序的版本自动升级更新.docx
- 文档编号:7905689
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:13
- 大小:23.34KB
C#实现程序的版本自动升级更新.docx
《C#实现程序的版本自动升级更新.docx》由会员分享,可在线阅读,更多相关《C#实现程序的版本自动升级更新.docx(13页珍藏版)》请在冰豆网上搜索。
C#实现程序的版本自动升级更新
我们做了程序,不免会有版本升级,这就需要程序有自动版本升级的功能。
那么看看我是如何实现程序自动更新的。
直接上代码:
1usingSystem;
2usingSystem.Collections.Generic;
3usingSystem.Text;
4usingSystem.Reflection;
5usingSystem.IO;
6usingSystem.Net;
7usingSystem.Xml;
8
9namespaceUpdate
10{
11///<summary>
12///更新完成触发的事件
13///</summary>
14publicdelegatevoidUpdateState();
15///<summary>
16///程序更新
17///</summary>
18publicclassSoftUpdate
19{
20
21privatestringdownload;
22privateconststringupdateUrl="http:
//www.csdn.net/update.xml";//升级配置的XML文件地址
23
24#region构造函数
25publicSoftUpdate(){}
26
27///<summary>
28///程序更新
29///</summary>
30///<paramname="file">要更新的文件</param>
31publicSoftUpdate(stringfile,stringsoftName){
32this.LoadFile=file;
33this.SoftName=softName;
34}
35#endregion
36
37#region属性
38privatestringloadFile;
39privatestringnewVerson;
40privatestringsoftName;
41privateboolisUpdate;
42
43///<summary>
44///或取是否需要更新
45///</summary>
46publicboolIsUpdate
47{
48get
49{
50checkUpdate();
51returnisUpdate;
52}
53}
54
55///<summary>
56///要检查更新的文件
57///</summary>
58publicstringLoadFile
59{
60get{returnloadFile;}
61set{loadFile=value;}
62}
63
64///<summary>
65///程序集新版本
66///</summary>
67publicstringNewVerson
68{
69get{returnnewVerson;}
70}
71
72///<summary>
73///升级的名称
74///</summary>
75publicstringSoftName
76{
77get{returnsoftName;}
78set{softName=value;}
79}
80
81#endregion
82
83///<summary>
84///更新完成时触发的事件
85///</summary>
86publiceventUpdateStateUpdateFinish;
87privatevoidisFinish(){
88if(UpdateFinish!
=null)
89UpdateFinish();
90}
91
92///<summary>
93///下载更新
94///</summary>
95publicvoidUpdate()
96{
97try
98{
99if(!
isUpdate)
100return;
101WebClientwc=newWebClient();
102stringfilename="";
103stringexten=download.Substring(download.LastIndexOf("."));
104if(loadFile.IndexOf(@"\")==-1)
105filename="Update_"+Path.GetFileNameWithoutExtension(loadFile)+exten;
106else
107filename=Path.GetDirectoryName(loadFile)+"\\Update_"+Path.GetFileNameWithoutExtension(loadFile)+exten;
108wc.DownloadFile(download,filename);
109wc.Dispose();
110isFinish();
111}
112catch
113{
114thrownewException("更新出现错误,网络连接失败!
");
115}
116}
117
118///<summary>
119///检查是否需要更新
120///</summary>
121publicvoidcheckUpdate()
122{
123try{
124WebClientwc=newWebClient();
125Streamstream=wc.OpenRead(updateUrl);
126XmlDocumentxmlDoc=newXmlDocument();
127xmlDoc.Load(stream);
128XmlNodelist=xmlDoc.SelectSingleNode("Update");
129foreach(XmlNodenodeinlist){
130if(node.Name=="Soft"&&node.Attributes["Name"].Value.ToLower()==SoftName.ToLower()){
131foreach(XmlNodexmlinnode){
132if(xml.Name=="Verson")
133newVerson=xml.InnerText;
134else
135download=xml.InnerText;
136}
137}
138}
139
140Versionver=newVersion(newVerson);
141Versionverson=Assembly.LoadFrom(loadFile).GetName().Version;
142inttm=verson.CompareTo(ver);
143
144if(tm>=0)
145isUpdate=false;
146else
147isUpdate=true;
148}
149catch(Exceptionex){
150thrownewException("更新出现错误,请确认网络连接无误
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 实现 程序 版本 自动 升级 更新