最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

asp.net(c#)程序版本升级更新的实现代码

来源:懂视网 责编:小采 时间:2020-11-27 22:43:18
文档

asp.net(c#)程序版本升级更新的实现代码

asp.net(c#)程序版本升级更新的实现代码:直接上代码: 代码如下:using System; using System.Collections.Generic; using System.Text; using System.Reflection; using System.IO; using System.Net; using System.Xml; namespace Update
推荐度:
导读asp.net(c#)程序版本升级更新的实现代码:直接上代码: 代码如下:using System; using System.Collections.Generic; using System.Text; using System.Reflection; using System.IO; using System.Net; using System.Xml; namespace Update

直接上代码:
代码如下:

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 = "//www.gxlcms.com/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>//www.gxlcms.com/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);
        }
    }
}

好了,整个程序到此结束。如觉得有哪里不正确或者有疑问的请给我留言。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

asp.net(c#)程序版本升级更新的实现代码

asp.net(c#)程序版本升级更新的实现代码:直接上代码: 代码如下:using System; using System.Collections.Generic; using System.Text; using System.Reflection; using System.IO; using System.Net; using System.Xml; namespace Update
推荐度:
标签: 升级 更新 版本
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top