原理:
在服務端存放所有的版本內容,在用戶端只存放最新的版本,根據版本資訊來進行自動的更新。
相關配置:
服務端需要設定一個虛擬目錄,也就是說要開放80連接埠,然後將不同版本的程式放在虛擬目錄下不同的檔案夾中。例如:虛擬目錄中有"1.0.0.0,"1.1.0.1","1.1.1.8"三個目錄,那麼在其中就存放著三個不同版本的程式。
根目錄下面的檔案:
1、serverManifest.xml檔案:裡面存放當前最新版本所在的路徑,每次需要更新的檔案名稱以及相關的認證(加密解密用)。
2、PublilcKey.xml和PrivateKey.xml,:裡面有根據相關資訊產生的RSA演算法的密鑰,用來進行使用者的認證和檔案的加密。
用戶端存放檔案的檔案夾中有一個子件夾,檔案夾的名稱就是最後下載的版本的名稱,例如:"1.1.0.0",在其中存放著需要更新的程式檔案,在根資料夾中有以下的幾個檔案:
1、AppStart.exe->用來啟動自動更新
2、Appstart.exe.config->裡面有相關的配置資訊
A、程式檔案存放的位置
B、當前最新的版本號碼
C、更新程式的名字
D、最後更新的時間
3、每次更新的記錄檔,記錄檔的起名方式”UpdateLog+年月日時分秒”
運行步驟:
1、用戶端運行程式,該程式是通過自動更新程式啟動的。
2、自動更新程式會檢查網路是否連通。
3、如果網路可用,程式會檢測當前的程式的版本和伺服器上最新的版本是否一樣,如果一樣就不進行更新操作。
4、如果本地的程式版本號碼小於伺服器的版本,那麼會彈出對話方塊,提示使用者當前伺服器上有更新的版本,問使用者是否馬上進行更新。
5、如果使用者選擇開始更新,那麼首先用戶端要與服務端進行認證
6、在認證通過之後,從服務端先下載serverManifest.xml檔案,從其中找到需要更新的檔案的位置和名字,並進行認證的驗證。
7、認證通過之後,在本地建立“Newfile”目錄,將需要下載的檔案先下載到這個臨時目錄裡面。
8、待下載完成之後,以新的版本號碼來重新命名檔案夾,並更改本地的設定檔
9、提示使用者重新啟動程式,確認後刪除舊版本的檔案更新結束。
值得借鑒的地方:
1、所有的操作都記錄到記錄檔中,不管成功與否,我們都可以看到我們的操作產生了什麼樣的結果。
2、很多資訊都使用xml檔案來存放,方便。
3、在進行更新的時候充分的進行了使用者的驗證和檔案的驗證,保證了程式的安全。
4、對異常的情況進行了充分的處理。例如:當一個使用者自己改變了自己本地的版本資訊,使得本地的版本比伺服器還要高的時候,程式會自動將本地所有的檔案刪除。還有當操作發生了錯誤的時候,會將錯誤也都寫到記錄檔中。