自动更新插件通常需要三部分
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/目录下
大功告成~~~
程序的部分截图
自动更新程序
打包程序