手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net(c#)程序版本升级更新的实现代码
asp.net(c#)程序版本升级更新的实现代码
摘要:直接上代码:复制代码代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem...

直接上代码:

复制代码 代码如下:

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#)程序版本升级更新的实现代码】相关文章:

asp.net图片上传实例

asp.net(C#) 生成随机验证码的代码

ASP.Net 图片存入数据库的实现代码

asp.net如何在图片上加水印文字具体实现

asp.net(c#) MS AJAX的安装

asp.net 获取图片高度和宽度实例代码

asp.net汉字转拼音和获取汉字首字母的代码

asp.net(c#)有关 Session 操作的几个误区

asp.net 无重复随机数代码

asp.net 购物车实现详细代码

精品推荐
分类导航