CAutoupdater通用自動升級組件用戶手冊
1、CAutoupdater通用自動升級組件介紹
1.1、組件介紹
C/S構的特點是能充分發揮客戶端的處理能力,很多工作可以由客戶端處理后再提交給服務器,對應的優點就是客戶端響應速度快模式客戶端以其強大的功能,豐富的表現力受到相當大部分用戶的青睞,但是客戶端布署,維護升級的成本卻是非常的高的。
C/S客戶端需要安裝專用的客戶端軟件及運行環境。首先涉及到安裝的工作量,其次任何一台電腦出問題,如病毒、硬件損壞,都需要進行安裝或維護。特別是有很多分部或專賣店的情況,不是工作量的問題,而是路程的問題。還有,系統軟件升級時,每一台客戶機需要重新安裝,其維護和升級成本非常高。
CAutoupdater組件就是為了解決C/S在維護升級方面的問題而存在的,本組件可以快速建立升級部署應用,完全控制整個升級部署過程,全功能的、快速、易於使用,設立發布你的客戶端應用。
本組件以最簡單的模式提供給客戶端在線布署和自動升級功能,徹底解決升級部署方面的后顧之憂。組件中提供的的接口以最簡單的方式來對升級過程提供完全控制。CAutoupdater組件為你的軟件集成穩定/高效的自動升級功能,是本升級組件的宗旨。
CAutoupdater組件四步完成升級工作:檢查新版本、下載到臨時目錄、檢查本地文件、拷貝到工作目錄。
無需特被的服務器,傳統的Web服務即可,如IIS等。服務器部署最新版的軟件文件(文件列表保存在一個XML文件中),CAutoupdater組件對比分析服務器和客戶端的XML對比配置文件,不同就更新。
CAutoupdater組件采用C#語言編寫,可應用於目前大多流行語言開發的軟件之中,不依賴任何類庫,穩定,高效。
2.2、CAutoupdater組件升級原理及過程。
2.2.1、CAutoupdater組件工作原理。
圖2.1.1.1 不必關心當前使用的版本
圖2.1.1.2對比分析服務端與客戶端使用的軟件版本
2.2.2、服務端部署。
要使用CAutoupdater組件必須部署服務端,服務端的部署很簡單,在這兒我們選擇傳統的IIS進行部署。假設我們升級的相關文件放在服務端的D盤CAutoupdater文件夾下,打開IIS,新建一個網站,將其物理路徑指向:D:\CAutoupdater,具體IIS的配置可參考相關文章,在這兒不再介紹。在這兒重點介紹服務端AutoupdateService.xml文件。
圖2.2.1 AutoupdateService.xml文件
通過AutoupdateService.xml文件可以看到,目前我們新增了一個待更新的文件RDIFramework.NET.exe,其版本號通過lastver配置項提供,文件大小通過size配置項提供,還有一個配置項needRestart,是否需要重啟應用程序,意思是說,更新本文件后,主程序是否需要重新啟動。url配置項就是待更新文件實際的服務端地址,客戶端通過這個地址來下載這個文件。
客戶端是如何判斷當前是否需要更新呢?這兒主要是通過lastver(最新的版本號)與size(文件大小)來判斷,兩者只要取其一即可,在CAutoupdater組件中是兩者同時取,只要客戶端對應文件與服務端對應文件的最新版本號或文件大小不一樣,則更新。下面我們來看一下如何自動生成服務端的配置文件(AutoupdateService.xml),如下圖所示:
圖2.2.2.1 CAutoupdater服務端配置
在圖2.2.2.1中,配置文件的名稱默認不允許修改,服務端地址就是我們配置IIS時的URL地址,在我的這個實例中是:http://localhost:8010/,服務端目錄就是IIS對應URL地址所在的物理地址,在我的實例中是:D:\CAutoupdater,在界面下方的文件列表中,我們可以添加需要更新的文件,對於選擇錯誤的文件,也可以對其選中后移除,可以看到文件列表的第一列為“重啟?”,如果選中,則表示客戶端升級后,需要重啟客戶端主程序,以完成更新,這需要根據實際的項目要求做相應的設置,沒有定論。單擊“生成”按鈕,即可自動生成服務端的配置文件AutoupdateService.xml,同時把文件列表中的文件拷貝到指定的“服務端目錄”中去。這樣,就完成了服務端的配置。
同時需要說明的時,同時要修改CAutoUpdater項目文件中的“Autoupdater.config”文件,此文件實例設置如下:
<?xml version="1.0" encoding="utf-8"?> <Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Enabled>true</Enabled> <ServerUrl>http://localhost:8010/AutoupdateService.xml</ServerUrl> </Config>
其中的:http://localhost:8010/AutoupdateService.xml 就是升級服務器上升級配置文件的URL地址。在客戶端中也要包含這個文件,以讓客戶可以通過這個文件中配置的升級服務器的地址,找到待升級的文件。
2.3、客戶端部署。
客戶端的配置非常簡單,只需引用“AutoUpdater.dll”文件,然后在需要的位置(一般是在程序啟動時檢查更新,也可讓用戶手動檢查更新),我一般都是在程序啟動時(在Program.cs文件的Main函數中)檢查待更新的文件,參考代碼為:
#region check and download new version program bool bHasError = false; IAutoUpdater autoUpdater = new AutoUpdater(); try { autoUpdater.Update(); } catch (WebException ex) { LogHelper.WriteException(ex); MessageBoxHelper.ShowErrorMsg("連接自動升級服務器出錯,請檢查網絡連接或聯系軟件提供商。"); bHasError = true; } catch (XmlException ex) { LogHelper.WriteException(ex); bHasError = true; MessageBoxHelper.ShowErrorMsg("AutoUpdate Error:Download the upgrade file error"); } catch (NotSupportedException ex) { LogHelper.WriteException(ex); bHasError = true; MessageBoxHelper.ShowErrorMsg("AutoUpdate Error:Upgrade address configuration error"); } catch (ArgumentException ex) { LogHelper.WriteException(ex); bHasError = true; MessageBoxHelper.ShowErrorMsg("AutoUpdate Error:Download the upgrade file error"); } catch (Exception ex) { LogHelper.WriteException(ex); bHasError = true; MessageBoxHelper.ShowErrorMsg("AutoUpdate Error:An error occurred during the upgrade process"); } finally { if (bHasError == true) { try { autoUpdater.RollBack(); } catch (Exception ex) { LogHelper.WriteException(ex); } } } #endregion
客戶端啟動時,檢查若有升級,就會彈出下面的窗口。