CAutoupdater通用 自動(dòng)升級(jí)組件用戶手冊(cè)
CAutoupdater通用自動(dòng)升級(jí)組件用戶手冊(cè)
1、CAutoupdater通用自動(dòng)升級(jí)組件介紹
1.1、組件介紹
C/S構(gòu)的特點(diǎn)是能充分發(fā)揮客戶端的處理能力,很多工作可以由客戶端處理后再提交給服務(wù)器,對(duì)應(yīng)的優(yōu)點(diǎn)就是客戶端響應(yīng)速度快模式客戶端以其強(qiáng)大的功能,豐富的表現(xiàn)力受到相當(dāng)大部分用戶的青睞,但是客戶端布署,維護(hù)升級(jí)的成本卻是非常的高的。
C/S客戶端需要安裝專用的客戶端軟件及運(yùn)行環(huán)境。首先涉及到安裝的工作量,其次任何一臺(tái)電腦出問(wèn)題,如病毒、硬件損壞,都需要進(jìn)行安裝或維護(hù)。特別是有很多分部或?qū)Yu店的情況,不是工作量的問(wèn)題,而是路程的問(wèn)題。還有,系統(tǒng)軟件升級(jí)時(shí),每一臺(tái)客戶機(jī)需要重新安裝,其維護(hù)和升級(jí)成本非常高。
CAutoupdater組件就是為了解決C/S在維護(hù)升級(jí)方面的問(wèn)題而存在的,本組件可以快速建立升級(jí)部署應(yīng)用,完全控制整個(gè)升級(jí)部署過(guò)程,全功能的、快速、易于使用,設(shè)立發(fā)布你的客戶端應(yīng)用。
本組件以最簡(jiǎn)單的模式提供給客戶端在線布署和自動(dòng)升級(jí)功能,徹底解決升級(jí)部署方面的后顧之憂。組件中提供的的接口以最簡(jiǎn)單的方式來(lái)對(duì)升級(jí)過(guò)程提供完全控制。CAutoupdater組件為你的軟件集成穩(wěn)定/高效的自動(dòng)升級(jí)功能,是本升級(jí)組件的宗旨。
CAutoupdater組件四步完成升級(jí)工作:檢查新版本、下載到臨時(shí)目錄、檢查本地文件、拷貝到工作目錄。
無(wú)需特被的服務(wù)器,傳統(tǒng)的Web服務(wù)即可,如IIS等。服務(wù)器部署最新版的軟件文件(文件列表保存在一個(gè)XML文件中),CAutoupdater組件對(duì)比分析服務(wù)器和客戶端的XML對(duì)比配置文件,不同就更新。
CAutoupdater組件采用C#語(yǔ)言編寫(xiě),可應(yīng)用于目前大多流行語(yǔ)言開(kāi)發(fā)的軟件之中,不依賴任何類庫(kù),穩(wěn)定,高效。
2.2、CAutoupdater組件升級(jí)原理及過(guò)程。
2.2.1、CAutoupdater組件工作原理。

圖2.1.1.1 不必關(guān)心當(dāng)前使用的版本

圖2.1.1.2對(duì)比分析服務(wù)端與客戶端使用的軟件版本
2.2.2、服務(wù)端部署。
要使用CAutoupdater組件必須部署服務(wù)端,服務(wù)端的部署很簡(jiǎn)單,在這兒我們選擇傳統(tǒng)的IIS進(jìn)行部署。假設(shè)我們升級(jí)的相關(guān)文件放在服務(wù)端的D盤(pán)CAutoupdater文件夾下,打開(kāi)IIS,新建一個(gè)網(wǎng)站,將其物理路徑指向:D:\CAutoupdater,具體IIS的配置可參考相關(guān)文章,在這兒不再介紹。在這兒重點(diǎn)介紹服務(wù)端AutoupdateService.xml文件。
圖2.2.1 AutoupdateService.xml文件
通過(guò)AutoupdateService.xml文件可以看到,目前我們新增了一個(gè)待更新的文件RDIFramework.NET.exe,其版本號(hào)通過(guò)lastver配置項(xiàng)提供,文件大小通過(guò)size配置項(xiàng)提供,還有一個(gè)配置項(xiàng)needRestart,是否需要重啟應(yīng)用程序,意思是說(shuō),更新本文件后,主程序是否需要重新啟動(dòng)。url配置項(xiàng)就是待更新文件實(shí)際的服務(wù)端地址,客戶端通過(guò)這個(gè)地址來(lái)下載這個(gè)文件。
客戶端是如何判斷當(dāng)前是否需要更新呢?這兒主要是通過(guò)lastver(最新的版本號(hào))與size(文件大小)來(lái)判斷,兩者只要取其一即可,在CAutoupdater組件中是兩者同時(shí)取,只要客戶端對(duì)應(yīng)文件與服務(wù)端對(duì)應(yīng)文件的最新版本號(hào)或文件大小不一樣,則更新。下面我們來(lái)看一下如何自動(dòng)生成服務(wù)端的配置文件(AutoupdateService.xml),如下圖所示:

圖2.2.2.1 CAutoupdater服務(wù)端配置
在圖2.2.2.1中,配置文件的名稱默認(rèn)不允許修改,服務(wù)端地址就是我們配置IIS時(shí)的URL地址,在我的這個(gè)實(shí)例中是:http://localhost:8010/,服務(wù)端目錄就是IIS對(duì)應(yīng)URL地址所在的物理地址,在我的實(shí)例中是:D:\CAutoupdater,在界面下方的文件列表中,我們可以添加需要更新的文件,對(duì)于選擇錯(cuò)誤的文件,也可以對(duì)其選中后移除,可以看到文件列表的第一列為“重啟?”,如果選中,則表示客戶端升級(jí)后,需要重啟客戶端主程序,以完成更新,這需要根據(jù)實(shí)際的項(xiàng)目要求做相應(yīng)的設(shè)置,沒(méi)有定論。單擊“生成”按鈕,即可自動(dòng)生成服務(wù)端的配置文件AutoupdateService.xml,同時(shí)把文件列表中的文件拷貝到指定的“服務(wù)端目錄”中去。這樣,就完成了服務(wù)端的配置。
同時(shí)需要說(shuō)明的時(shí),同時(shí)要修改CAutoUpdater項(xiàng)目文件中的“Autoupdater.config”文件,此文件實(shí)例設(shè)置如下:
<?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 就是升級(jí)服務(wù)器上升級(jí)配置文件的URL地址。在客戶端中也要包含這個(gè)文件,以讓客戶可以通過(guò)這個(gè)文件中配置的升級(jí)服務(wù)器的地址,找到待升級(jí)的文件。
2.3、客戶端部署。
客戶端的配置非常簡(jiǎn)單,只需引用“AutoUpdater.dll”文件,然后在需要的位置(一般是在程序啟動(dòng)時(shí)檢查更新,也可讓用戶手動(dòng)檢查更新),我一般都是在程序啟動(dòng)時(shí)(在Program.cs文件的Main函數(shù)中)檢查待更新的文件,參考代碼為:
#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("連接自動(dòng)升級(jí)服務(wù)器出錯(cuò),請(qǐng)檢查網(wǎng)絡(luò)連接或聯(lián)系軟件提供商。"); 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
客戶端啟動(dòng)時(shí),檢查若有升級(jí),就會(huì)彈出下面的窗口。



作者:
RDIF
出處:
http://www.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機(jī)號(hào))
框架官網(wǎng):
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國(guó)思RDIF開(kāi)發(fā)框架
,
給用戶和開(kāi)發(fā)者最佳的.Net框架平臺(tái)方案,為企業(yè)快速構(gòu)建跨平臺(tái)、企業(yè)級(jí)的應(yīng)用提供強(qiáng)大支持。
關(guān)于作者:系統(tǒng)架構(gòu)師、信息系統(tǒng)項(xiàng)目管理師、DBA。專注于微軟平臺(tái)項(xiàng)目架構(gòu)、管理和企業(yè)解決方案,多年項(xiàng)目開(kāi)發(fā)與管理經(jīng)驗(yàn),曾多次組織并開(kāi)發(fā)多個(gè)大型項(xiàng)目,在面向?qū)ο蟆⒚嫦蚍?wù)以及數(shù)據(jù)庫(kù)領(lǐng)域有一定的造詣。現(xiàn)主要從事基于
RDIF
框架的技術(shù)開(kāi)發(fā)、咨詢工作,主要服務(wù)于金融、醫(yī)療衛(wèi)生、鐵路、電信、物流、物聯(lián)網(wǎng)、制造、零售等行業(yè)。
如有問(wèn)題或建議,請(qǐng)多多賜教!
本文版權(quán)歸作者和CNBLOGS博客共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,如有問(wèn)題,可以通過(guò)微信、郵箱、QQ等聯(lián)系我,非常感謝。

浙公網(wǎng)安備 33010602011771號(hào)