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