一、前言 前不久因公司產品需要完成了線上升級功能,因為編程技術不精,不敢冒然採用Socket方法實現線上升級,所以使用比較方便穩妥的WCF方式 如果考慮併發能力的話還是Socket>WCF>Remoting,所以如果你是Socket專家的話這篇你就不用看了。 二、流程 本篇主要講述一個完整的升級思路 ...
一、前言
前不久因公司產品需要完成了線上升級功能,因為編程技術不精,不敢冒然採用Socket方法實現線上升級,所以使用比較方便穩妥的WCF方式
如果考慮併發能力的話還是Socket>WCF>Remoting,所以如果你是Socket專家的話這篇你就不用看了。
二、流程
本篇主要講述一個完整的升級思路,如果你正需要實現升級請結合你公司的情況與自身情況作出調整
1. 從本地讀取公司的註冊表信息:
一般公司軟體產品都會在客戶機的Local_Machine下將產品信息寫入,包括:產品名稱,安裝路徑,安裝日期,產品版本等等,以方便日後升級點擊這裡
2. 通過WCF服務的ReadUpdateInformation方法(名字自己定義)讀取更新文件伺服器上的信息,並與註冊表上的版本信息進行對比,判斷是否需要升級:
假如客戶端讀出的產品信息為18.0.0,伺服器讀取的某個更新壓縮包的文件名稱為18.0.1,說明要升級了。
不推薦將客戶機上產品所有的dll與伺服器上更新壓縮包里所有的dll進行對比,太麻煩! 不如直接對比名稱並下載全覆蓋來的方便
3. 將需要升級的信息返回到客戶機的升級界面上,如果用戶選擇升級,則可以通過WCF服務的GetFile方法斷點續傳下載文件點擊這裡
4. 將客戶機下載完的文件進行MD5檢查,並通過WCF服務的ServerFileMD5方法得到更新文件的MD5值並返回進行對比點擊這裡
5. 對比成功後讓用戶選擇是直接更新還是下次開機自動更新:
其實更新就是個File.Copy的過程,重要的還是你能否完整的正確的下載完更新包,更新程式中最後一部別忘了修改註冊表信息,將新的版本與更新時間寫入!
開機自動更新的方法在此:點擊這裡
三、其他
WCF的部署點擊這裡
用戶升級界面 我使用WPF來實現,MVVM使用的是輕量級的MVVMLight (Dev的MVVM框架太大,我還沒這麼大需求)點擊這裡