GeneralUpdate实现应用程序更新
微軟中國MSDN??點擊上方藍字關注我們
大家好,我是本期的實驗室研究員——朱震。今天我將通過實驗和完整的操作過程,向大家介紹如何基于開源項目GeneralUpdate打造一個能自動升級的客戶端應用。接下來就讓我們一起到實驗室中一探究竟吧!
微軟MVP實驗室研究員
朱震?Juster?zhu
GeneralUpdate開源項目作者
Dotnet源計劃b站、公眾號作者
主要從事客戶端領域開發
項目介紹
GeneralUpdate是基于.net standard開發的一款(c/s應用)自動升級程序。該組件將更新的核心部分抽離出來方便應用于多種項目當中目前適用于wpf,控制臺應用,winfrom。目前封裝了六個組件功能分別如下:
GeneralUpdate.Core:斷點續傳、逐版本更新、下載超時時間
GeneralUpdate.ClientCore:斷點續傳、逐版本更新、更新組件自更新、便捷啟動更新組件
GeneralUpdate.AspNetCore:服務端支持更新包下載地址、版本信息等內容
GeneralUpdate.Zip:解壓更新包、解壓進度通知
GeneralUpdate.Single:應用程序單例運行
GeneralUpdate.Common:組件公共類、方法
以及生成版本信息的數據庫結構腳本。
編碼實現
在講編碼實現之前,可能大家對自動更新流程不太熟悉,這里我整理了一張更新的流程圖來為大家講解:
請先記住幾個名詞,MainApp是公司的產品項目,UpdateApp是獨立進程的升級程序,Service是服務器。
(1)Mainapp會向服務器請求UpdateApp更新程序的包(這一步是為了自更新UpdateApp)
(2)如果UpdateApp需要更新則下載更新包(進行MD5加密驗證)
(3)不需要更新或更新完成之后都會通過進程通訊打開UpdateApp
(4)UpdateApp啟動之后則開始向服務器請求Mainapp的更新包(進行MD5加密驗證)
(5)如果有則把更新包下載下來,并把Mainapp更新包里的文件解壓并覆蓋到本地實現更新
(6)UpdateApp更新完成后則啟動Mainapp并關閉自身
大致知道更新流程之后我們來分別看看MainApp、UpdateApp、Service的應用吧。
MainApp
大家可以看到在引用GeneralUpdate.ClientCore 的nuget包之后,可以直接按照以上語法直接使用非常方便,基本上你所關注的一些信息都封裝在了這些事件里,我們一起來看看封裝了那些內容。
MutiDownloadProgressChanged該事件可提供信息,單個或多個更新包的:
當前下載包大小
下載進度
進度百分比
下載的版本信息
當前正在執行的操作(檢查版本信息中、正在下載當前版本、更新完成、更新失敗)
已下載大小
MutiDownloadStatistics該事件可提供信息:
剩余下載時間
下載速度
OnMutiDownloadCompleted該事件可提供信息:
當前下載的更新包是否下載完成
OnMutiAllDownloadCompleted該事件可提供信息:
這一次如果有多個版本需要更新則會在所有版本更新文件下載完成之后通知
OnMutiDownloadError該事件可提供信息:
下載版本文件過程出現的異常信息
Exception:
整個下載、安裝、啟動程序的過程任何異常都會通過該事件返回
Config:
進程之間需要傳遞的內容
Strategy<>:
是開放給開發者擴展的入口,如果更新流程有新的變更則可以繼承組件默認自帶的DefaultStrategy類進行自定義擴展
LaunchTaskAsync:
啟動更新引導類
UpdateApp
這里幾乎和上一個組件的功能一樣這里簡單的看看代碼如何應用。
Service
這里我們只需要在IServiceCollection中注入我們實現好的更新邏輯即可。
接下來再看看controller中如何實現。
運行效果
下載安裝
項目地址:
https://github.com/WELL-E/AutoUpdater
https://gitee.com/Juster-zhu/GeneralUpdate
Nuget地址:
https://www.nuget.org/packages/GeneralUpdate.Common/
https://www.nuget.org/packages/GeneralUpdate.ClientCore/
https://www.nuget.org/packages/GeneralUpdate.AspNetCore/
https://www.nuget.org/packages/GeneralUpdate.Zip/
https://www.nuget.org/packages/GeneralUpdate.Single/
https://www.nuget.org/packages/GeneralUpdate.Core/
微軟最有價值專家(MVP)
微軟最有價值專家是微軟公司授予第三方技術專業人士的一個全球獎項。28年來,世界各地的技術社區領導者,因其在線上和線下的技術社區中分享專業知識和經驗而獲得此獎項。
MVP是經過嚴格挑選的專家團隊,他們代表著技術最精湛且最具智慧的人,是對社區投入極大的熱情并樂于助人的專家。MVP致力于通過演講、論壇問答、創建網站、撰寫博客、分享視頻、開源項目、組織會議等方式來幫助他人,并最大程度地幫助微軟技術社區用戶使用Microsoft技術。
更多詳情請登錄官方網站:
https://mvp.microsoft.com/zh-cn
微軟MVP,期待你加入
總結
以上是生活随笔為你收集整理的GeneralUpdate实现应用程序更新的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MAUI安卓子系统调试方法(附安装教程)
- 下一篇: MAUI中Maui.Graphics.C