分享一个自己写的简单的自动更新插件

自动更新插件通常需要三部分

1.配合需要升级的程序的一个dll

2.自动升级程序

3.打包程序

第一部分 配合主程序的dll

在这个升级程序中我将配合主程序用来校验版本号的代码封装在AutoUpdateHelper中,主要包括两个函数,一个是检查版本并自动更新CheckAndUpdate,一个是用来获取当前的版本号GetVersion

第二部分 自动升级程序

升级程序主要的步骤:

1.根据本地的update.xml中的manifest文件的远程地址下载manifest文件

2.根据本地的version和远程manifest中的version校对

3.如果版本不一致,下载manifest中的webpath+版本号.zip文件

4.解压,覆盖原文件

5.根据manifest中配置的exepath,重新启动对应的主程序

第三部分 打包程序

由于自动更新程序和主程序是在同一路径下,因此发布新版本打包的时候需要把自动更新程序相关的exe,dll去掉,防止自动更新程序覆盖原文件的时候,出现文件占用的错误

因此,将项目文件过滤一下,然后执行zip打包。之后将新版本的包提交到服务器上,将服务器的manifest文件,进行相应版本的修改。

使用说明 

项目地址 github点击下载

1.首先将AutoUpdate.exe和DotNetZip.dll(用了第三方的解压缩)   和AutoUpdateHelper.dll(主程序调用的dll)和update.xml(本地记录版本号)

拷贝到主程序的目录下

2.在主程序中加入校验代码

try
            {
                if (AutoUpdateHelper.AutoUpdate.CheckAndUpdate())
                {
                    Environment.Exit(0);
                }
            }
            catch(Exception e)
            {
                MessageBoxEx.Show("网络异常~~~赶紧检查一下吧……");
                Environment.Exit(Environment.ExitCode);
            }

3.修改update.xml

<?xml version="1.0" encoding="utf-8" ?>
<localconf>
  <version>1.0</version>
  <manifest>http://www.xxx.com/mainfests.xml</manifest>
  <update>AutoUpdate.exe</update>
</localconf>

4.将manifests.xml修改 并且放到update.xml中manifest对应的远程地址上

<?xml version="1.0" encoding="utf-8" ?>
<manifest>
  <!--版本号,无格式要求,更新时需要修改-->
  <version>1.1</version>
  <description>更新说明</description>
  <!--启动程序的名称-->
  <exepath>味来外卖客户端.exe</exepath>
  <webpath>http://www.xxx.com/update/</webpath>
</manifest>

5.将与manifests.xml中对应版本好的包上传到manifests.webpath配置的远程路径下,例如1.1.zip文件,放到 http://www.xxx.com/update/目录下

大功告成~~~

程序的部分截图

自动更新程序

打包程序

原文地址:https://www.cnblogs.com/mengxingxinqing/p/6517299.html