C#程序版本更新教程之C#实现winform版本升级
2010-06-18 00:11
656 查看
我们做了程序,不免会有版本升级,这就需要程序有自动版本升级的功能。
那么看看我是如何实现程序自动更新的。
直接上代码:
Code [http://www.xueit.com]
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.csdn.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;
}
}
}
文章来自学IT网:http://www.xueit.com/asp.net/show-6296-1.aspx
那么看看我是如何实现程序自动更新的。
直接上代码:
Code [http://www.xueit.com]
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.csdn.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;
}
}
}
文章来自学IT网:http://www.xueit.com/asp.net/show-6296-1.aspx
相关文章推荐
- asp.net(c#)程序版本升级更新的实现代码
- C#实现程序的版本升级更新
- C#实现程序的版本升级更新
- C#实现程序的版本升级更新
- C#实现程序的版本升级更新
- C#实现程序的版本升级更新
- asp.net(c#)程序版本升级更新的实现代码
- C#实现程序的版本升级更新
- C#实现程序的版本自动升级更新
- C#实现程序的版本自动升级更新
- C#实现程序的版本升级更新
- C#实现程序的版本升级更新
- C# 自动升级更新winform程序
- 猛犸代码助手开通官网,最新版本实现程序自动更新升级
- c# Winform 程序自动更新实现方法
- SVN自动更新测试服务器工作副本(C#写winform程序实现)
- C# WinForm实现任务栏程序图标闪烁
- C#Winform程序如何发布并自动升级(图解)
- winform程序实现客户端的自动更新