WinForm通用自動(dòng)更新AutoUpdater項(xiàng)目實(shí)戰(zhàn)

目前我們做的上位機(jī)項(xiàng)目還是以Winform為主,在實(shí)際應(yīng)用過程中,可能還會(huì)出現(xiàn)一些細(xì)節(jié)的修改。對(duì)于這種情況,如果上位機(jī)帶有自動(dòng)更新功能,我們只需要將更新后的應(yīng)用程序打包放在指定的路徑下,可以讓用戶自己來進(jìn)行更新使用,會(huì)大大增加項(xiàng)目的便捷性。
01.自動(dòng)更新整體思路
今天給大家介紹一下如何基于C#實(shí)現(xiàn)WinForm自動(dòng)更新的一種方式,這種方式長(zhǎng)期應(yīng)用在項(xiàng)目中,提供了很多幫助,也節(jié)約了大量的時(shí)間成本,并且也使用在CMSPro軟件中,整體流程如下圖所示:

02.實(shí)現(xiàn)說明
通過上圖,可以發(fā)現(xiàn)這種方式是基于打包文件的方式實(shí)現(xiàn)的,好處在于整體打包下載,即使中途出現(xiàn)網(wǎng)絡(luò)中斷也不會(huì)有任何影響,當(dāng)然相比于那種單個(gè)文件更新的方式,可能每次耗時(shí)會(huì)多一些,但是由于更新并不是一個(gè)頻繁操作的過程,這個(gè)時(shí)間是可以接受的。
(1)首先對(duì)于項(xiàng)目是否啟用自動(dòng)更新,是通過配置的方式實(shí)現(xiàn)的,在實(shí)際開發(fā)中,可以使用手動(dòng)更新和自動(dòng)更新兩種方式,當(dāng)啟用自動(dòng)更新時(shí),每次啟動(dòng)應(yīng)用程序都會(huì)與服務(wù)器版本號(hào)做下比較,判斷是否執(zhí)行自動(dòng)更新的流程。

(2)對(duì)于手動(dòng)更新,可以通過點(diǎn)擊,彈出一個(gè)手動(dòng)更新窗體,如下圖所示:

?
(3)對(duì)于服務(wù)器路徑、本地版本號(hào)等信息都是通過本地配置文件存儲(chǔ)的,因此本地需要有一個(gè)LocalVersion的配置文件,具體用什么形式,可以自由選擇,Ini、Txt、Xml、Json都可以,如下圖所示:

(4)服務(wù)器側(cè)也會(huì)有一個(gè)配置文件,形式自由選擇,應(yīng)該包含以下信息:當(dāng)前服務(wù)器版本號(hào)、最新版本的程序包、該版本是否更新、該版本更新內(nèi)容等信息,同時(shí)如果有新版本,應(yīng)該將新版本的文件放到指定路徑下,保證最新版本包的這個(gè)路徑是有效路徑。

(5)上位機(jī)通過將服務(wù)器的最新版本號(hào)與本地的版本號(hào)做對(duì)比,如果服務(wù)器的版本號(hào)較大,說明服務(wù)器有更新版本,因此,會(huì)根據(jù)最新版本包的地址進(jìn)行下載,這里采用的是zip文件,下載過程根據(jù)網(wǎng)絡(luò)及實(shí)際情況可能會(huì)耗時(shí),因此上位機(jī)側(cè)應(yīng)該做個(gè)進(jìn)度條,讓用戶知道下載的進(jìn)度情況,同時(shí)對(duì)于每一步的狀態(tài)也應(yīng)該通過圖標(biāo)的方式來進(jìn)行顯示,讓用戶明確更新的進(jìn)度情況。

(6)更新完成后,系統(tǒng)會(huì)自動(dòng)重啟新的應(yīng)用程序,可以看到軟件從之前的5.3.5版本升級(jí)到最新的6.0.0版本。

03.整體總結(jié)
本文主要工控上位機(jī)進(jìn)行自動(dòng)更新的流程做了一個(gè)整體介紹,主要是介紹流程為主,給大家分享一下實(shí)現(xiàn)的整體思路,畢竟每個(gè)人的實(shí)現(xiàn)方式都可能有所不同,大家也可以在此基礎(chǔ)上增加一個(gè)新的功能,給自己的上位機(jī)軟件增加一點(diǎn)特色的同時(shí),也給自己提供了便捷一下升級(jí)的過程的話,可以通過關(guān)注本公眾號(hào):dotNet工控上位機(jī),并發(fā)送關(guān)鍵詞:CMSPro,下載之后安裝運(yùn)行,便會(huì)直接進(jìn)入版本升級(jí)的過程。

