asp.net(c#)程序版本升级更新的实现代码
2010-03-30 00:00
1056 查看
直接上代码:
把代码编译为一个类库文件,通过程序引用就OK啦。
传入的参数已经有注释了。
下面是更新的XML文件类容,传到空间上面就可以了,得到XML文件的地址。
程序更新调用方法:
1、先引用上面的DLL。
2、调用方法代码 如下:
好了,整个程序到此结束。如觉得有哪里不正确或者有疑问的请给我留言。
using System; using System.Collections.Generic; using System.Text; using System.Reflection; using System.IO; using System.Net; using System.Xml; namespace Update { /// <summary> /// 更新完成触发的事件 /// </summary> public delegate void UpdateState(); /// <summary> /// 程序更新 /// </summary> public class SoftUpdate { private string download; private const string updateUrl = "http://www.jb51.net/update.xml";//升级配置的XML文件地址 #region 构造函数 public SoftUpdate() { } /// <summary> /// 程序更新 /// </summary> /// <param name="file">要更新的文件</param> public SoftUpdate(string file,string softName) { this.LoadFile = file; this.SoftName = softName; } #endregion #region 属性 private string loadFile; private string newVerson; private string softName; private bool isUpdate; /// <summary> /// 或取是否需要更新 /// </summary> public bool IsUpdate { get { checkUpdate(); return isUpdate; } } /// <summary> /// 要检查更新的文件 /// </summary> public string LoadFile { get { return loadFile; } set { loadFile = value; } } /// <summary> /// 程序集新版本 /// </summary> public string NewVerson { get { return newVerson; } } /// <summary> /// 升级的名称 /// </summary> public string SoftName { get { return softName; } set { softName = value; } } #endregion /// <summary> /// 更新完成时触发的事件 /// </summary> public event UpdateState UpdateFinish; private void isFinish() { if(UpdateFinish != null) UpdateFinish(); } /// <summary> /// 下载更新 /// </summary> public void Update() { try { if (!isUpdate) return; WebClient wc = new WebClient(); string filename = ""; string exten = download.Substring(download.LastIndexOf(".")); if (loadFile.IndexOf(@"\") == -1) filename = "Update_" + Path.GetFileNameWithoutExtension(loadFile) + exten; else filename = Path.GetDirectoryName(loadFile) + "\\Update_" + Path.GetFileNameWithoutExtension(loadFile) + exten; wc.DownloadFile(download, filename); wc.Dispose(); isFinish(); } catch { throw new Exception("更新出现错误,网络连接失败!"); } } /// <summary> /// 检查是否需要更新 /// </summary> public void checkUpdate() { try { WebClient wc = new WebClient(); Stream stream = wc.OpenRead(updateUrl); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(stream); XmlNode list = xmlDoc.SelectSingleNode("Update"); foreach(XmlNode node in list) { if(node.Name == "Soft" && node.Attributes["Name"].Value.ToLower() == SoftName.ToLower()) { foreach(XmlNode xml in node) { if(xml.Name == "Verson") newVerson = xml.InnerText; else download = xml.InnerText; } } } Version ver = new Version(newVerson); Version verson = Assembly.LoadFrom(loadFile).GetName().Version; int tm = verson.CompareTo(ver); if(tm >= 0) isUpdate = false; else isUpdate = true; } catch(Exception ex) { throw new Exception("更新出现错误,请确认网络连接无误后重试!"); } } /// <summary> /// 获取要更新的文件 /// </summary> /// <returns></returns> public override string ToString() { return this.loadFile; } } }
把代码编译为一个类库文件,通过程序引用就OK啦。
传入的参数已经有注释了。
下面是更新的XML文件类容,传到空间上面就可以了,得到XML文件的地址。
<?xml version="1.0" encoding="utf-8" ?> <Update> <Soft Name="BlogWriter"> <Verson>1.0.1.2</Verson> <DownLoad>http://www.jb51.net/BlogWrite.rar</DownLoad> </Soft> </Update>
程序更新调用方法:
1、先引用上面的DLL。
2、调用方法代码 如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Threading; using System.Net; using System.Xml; using Update; namespace UpdateTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); checkUpdate(); } public void checkUpdate() { SoftUpdate app = new SoftUpdate(Application.ExecutablePath, "BlogWriter"); app.UpdateFinish += new UpdateState(app_UpdateFinish); try { if (app.IsUpdate && MessageBox.Show("检查到新版本,是否更新?", "Update", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { Thread update = new Thread(new ThreadStart(app.Update)); update.Start(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } void app_UpdateFinish() { MessageBox.Show("更新完成,请重新启动程序!", "Update", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
好了,整个程序到此结束。如觉得有哪里不正确或者有疑问的请给我留言。
相关文章推荐
- asp.net(c#)程序版本升级更新的实现代码
- C#实现程序的版本自动升级更新
- Asp.Net 用C# 实现B/S的软件程序更新
- C#实现程序的版本升级更新
- C#实现程序的版本升级更新
- [C#]使用 C# 代码实现拓扑排序 dotNet Core WEB程序使用 Nginx反向代理 C#里面获得应用程序的当前路径 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法 .Net程序员 初学Ubuntu ,配置Nignix 夜深了,写了个JQuery的省市区三级级联效果
- 一个简单的AJAX实现,基于C#的ASP.Net,包括服务器端的程序代码
- 在IIS中改变ASP.NET程序版本的实现方法附批处理代码
- C#实现程序的版本升级更新
- C#实现程序的版本升级更新
- C#实现程序的版本升级更新
- C#实现程序的版本升级更新
- C#实现程序的版本自动升级更新
- C#实现程序的版本升级更新
- C#程序版本更新教程之C#实现winform版本升级
- C#实现程序的版本升级更新
- 一个简单的AJAX实现,基于C#的ASP.Net,包括服务器端的程序代码
- .NET中RAS加解密和签名与验证的c#实现代码讲解,及实现程序提供——转自《起跑线的专栏》
- asp.net实现C#代码加亮显示