WinForm通用自動更新AutoUpdater專案實戰

常哥說程式設計發表於2020-06-11

目前我們做的上位機專案還是以Winform為主,在實際應用過程中,可能還會出現一些細節的修改。對於這種情況,如果上位機帶有自動更新功能,我們只需要將更新後的應用程式打包放在指定的路徑下,可以讓使用者自己來進行更新使用,會大大增加專案的便捷性。

 

01.自動更新整體思路

今天給大家介紹一下如何基於C#實現WinForm自動更新的一種方式,這種方式長期應用在專案中,提供了很多幫助,也節約了大量的時間成本,並且也使用在CMSPro軟體中,整體流程如下圖所示:

WinForm通用自動更新AutoUpdater專案實戰

圖表 1自動更新流程

 

02.實現說明

通過上圖,可以發現這種方式是基於打包檔案的方式實現的,好處在於整體打包下載,即使中途出現網路中斷也不會有任何影響,當然相比於那種單個檔案更新的方式,可能每次耗時會多一些,但是由於更新並不是一個頻繁操作的過程,這個時間是可以接受的。

(1)首先對於專案是否啟用自動更新,是通過配置的方式實現的,在實際開發中,可以使用手動更新和自動更新兩種方式,當啟用自動更新時,每次啟動應用程式都會與伺服器版本號做下比較,判斷是否執行自動更新的流程。

WinForm通用自動更新AutoUpdater專案實戰

圖表 2自動更新介面

 

(2)對於手動更新,可以通過點選,彈出一個手動更新窗體,如下圖所示:

WinForm通用自動更新AutoUpdater專案實戰

圖表 3手動更新介面

 

(3)對於伺服器路徑、本地版本號等資訊都是通過本地配置檔案儲存的,因此本地需要有一個LocalVersion的配置檔案,具體用什麼形式,可以自由選擇,Ini、Txt、Xml、Json都可以,如下圖所示:

WinForm通用自動更新AutoUpdater專案實戰

圖表 4本地配置檔案參考

 

(4)伺服器側也會有一個配置檔案,形式自由選擇,應該包含以下資訊:當前伺服器版本號、最新版本的程式包、該版本是否更新、該版本更新內容等資訊,同時如果有新版本,應該將新版本的檔案放到指定路徑下,保證最新版本包的這個路徑是有效路徑。

WinForm通用自動更新AutoUpdater專案實戰

圖表 5伺服器配置檔案參考

 

(5)上位機通過將伺服器的最新版本號與本地的版本號做對比,如果伺服器的版本號較大,說明伺服器有更新版本,因此,會根據最新版本包的地址進行下載,這裡採用的是zip檔案,下載過程根據網路及實際情況可能會耗時,因此上位機側應該做個進度條,讓使用者知道下載的進度情況,同時對於每一步的狀態也應該通過圖示的方式來進行顯示,讓使用者明確更新的進度情況。

WinForm通用自動更新AutoUpdater專案實戰

圖表 6自動更新流程

 

(6)更新完成後,系統會自動重啟新的應用程式,可以看到軟體從之前的5.3.5版本升級到最新的6.0.0版本。

WinForm通用自動更新AutoUpdater專案實戰

圖表 7更新結果

03.整體總結

本文主要工控上位機進行自動更新的流程做了一個整體介紹,主要是介紹流程為主,給大家分享一下實現的整體思路,畢竟每個人的實現方式都可能有所不同,大家也可以在此基礎上增加一個新的功能,給自己的上位機軟體增加一點特色的同時,也給自己提供了便捷一下升級的過程的話,可以通過關注本公眾號:dotNet工控上位機,併傳送關鍵詞:CMSPro,下載之後安裝執行,便會直接進入版本升級的過程。

公眾號:thinger_swj

相關文章