路高鵬
(中國(guó)電子科技集團(tuán)公司第五十四研究所河北石家莊050081)
在軟件的生命周期中, 軟件的升級(jí)和修復(fù)Bug 等后期維護(hù)工作是最重要的環(huán)節(jié), 同時(shí)也是時(shí)間最長(zhǎng)和投入最大的階段[1]遙單機(jī)和客戶端/服務(wù)器軟件由于其具有安全性高堯穩(wěn)定性好堯能充分利用本機(jī)資源堯運(yùn)行速度快和服務(wù)器壓力小等特點(diǎn),現(xiàn)在仍然被廣泛應(yīng)用于各種如游戲堯大型MIS 系統(tǒng)和安全類軟件等應(yīng)用系統(tǒng)中[2]遙
為了更好地開展工作袁讓軟件能夠無(wú)故障及高效的運(yùn)行袁需要對(duì)這些軟件進(jìn)行及時(shí)和可靠的更新或者整體的升級(jí)換代遙本文提出了一個(gè)新的軟件自動(dòng)升級(jí)系統(tǒng)的架構(gòu)袁可以很容易地?cái)U(kuò)展為不同方式和不同類型文件的升級(jí)袁有良好的通用性遙
軟件自動(dòng)更新[3]的實(shí)現(xiàn)實(shí)質(zhì)上是按照一定的規(guī)則在服務(wù)器和客戶機(jī)之間進(jìn)行通信和傳遞數(shù)據(jù)袁讓二者對(duì)話遙自動(dòng)升級(jí)軟件的功能組織如圖1 所示遙
軟件采用XML 文件記錄遠(yuǎn)程地址信息袁目標(biāo)軟件的版本號(hào)袁名稱何路徑遙應(yīng)用軟件通過(guò)自動(dòng)從互聯(lián)網(wǎng)或者局域網(wǎng)中獲得最新的軟件版本[4]袁和當(dāng)前客戶端中的軟件版本進(jìn)行比較袁如果服務(wù)器端的軟件版本大于客戶端軟件的當(dāng)前版本袁系統(tǒng)會(huì)要求用戶進(jìn)行升級(jí)袁下載文件列表File.xml 配置文件[5]曰否則通知用戶已是最新版本遙根據(jù)所選通信協(xié)議方式袁進(jìn)行文件隊(duì)列的下載遙在更新模塊根據(jù)所選的協(xié)議對(duì)相應(yīng)的文件列表中的文件逐個(gè)進(jìn)行操作遙
在服務(wù)器端需要安裝提供文件下載的HTTP 和FTP 服務(wù)器軟件遙
2.2.1 配置方法
HTTP 服務(wù)器采用的是apache-tomcat-6.0.14 綠色版袁在根目錄和bin 下的MessageConfig.xml 文檔袁修改所有IP 值為服務(wù)器IP袁 綁定本機(jī)地址曰confserver.xml 文檔袁 可修改Connector 標(biāo)簽的port 端口值袁默認(rèn)是8080袁可根據(jù)實(shí)際需要進(jìn)行更改袁 中文支持加上 URIEncoding = "gb2312"曰webappshost -managerWEB -INF 和 conf 的 web.xml 的encoding 改為utf-8遙
FTP 服務(wù)器軟件采用的是FileZilla Server,其功能比起商業(yè)軟件FTP Serv-U 毫不遜色遙它幾乎無(wú)用戶數(shù)限制曰多線程引擎曰在Windows NT4堯2000 和XP 下以服務(wù)形式運(yùn)行曰針對(duì)fxp/反彈攻擊過(guò)濾曰安全密碼儲(chǔ)存(使用MD5 hash)曰實(shí)時(shí)對(duì)用戶/組進(jìn)行管理曰所有選項(xiàng)可以在服務(wù)器在線時(shí)改變?cè)瑹o(wú)需服務(wù)器下線曰傳輸超時(shí)功能可以踢掉使用普通工具保持一直在線的空閑用戶曰基于設(shè)置規(guī)則的服務(wù)器和用戶/組速度限制曰支持MODEZ 文件傳輸壓縮遙安裝后建立用戶名和密碼袁并設(shè)置權(quán)限袁供客戶端連接使用遙
2.2.2 文件信息
服務(wù)器端的根目錄下配置有Core.xml堯File.xml堯setting.ini袁以及發(fā)布的新文件袁都放在同一目錄下遙格式如下院
淤Core.xml 文件內(nèi)容袁分為HTTP 和FTP2 種袁格式類似袁在此只舉出一種遙
用戶安裝軟件成功過(guò)后袁在安裝目錄下Upgrade 下有淤主程序Update.exe曰于Config 文件夾院Core.xml 和setting.ini 配置文件曰盂lib 文件夾院需要靜態(tài)庫(kù)lib堯動(dòng)態(tài)庫(kù)dll 的支持文件曰榆 用戶手冊(cè)袁CHM 文件曰 虞日志log 文件袁XML 和INI 文件與服務(wù)器上的文件格式相同袁均是描述本地軟件的版本信息遙
開發(fā)環(huán)境是Visual Studio 6.0袁開發(fā)工具是VC++遙
3.1.1 檢測(cè)和下載模塊設(shè)計(jì)
下面列出代碼中的重要的一些語(yǔ)句袁利用HTTp 協(xié)議從服務(wù)器上獲取文件狀態(tài):
下面是下載文件代碼袁列出其中關(guān)鍵的一些語(yǔ)句遙
下面列出代碼中的一些關(guān)鍵語(yǔ)句袁實(shí)現(xiàn)判斷FTp 服務(wù)器上的文件是目錄還是單個(gè)文件遙
下載單個(gè)文件也是用到InternetReadFile 函數(shù)袁 并用FtpSetCurrentDirectory()定位到Ftp 當(dāng)前目錄袁根據(jù)下載的文件是目錄下的文件還是單個(gè)文件袁調(diào)用FtpOpenFile()打開遠(yuǎn)程文件遙
3.1.2 更新模塊設(shè)計(jì)
讀取每個(gè)文件標(biāo)簽屬性袁第一個(gè)參數(shù)對(duì)應(yīng)更新用途袁第二個(gè)參數(shù)對(duì)應(yīng)目標(biāo)軟件絕對(duì)路徑的相對(duì)路徑遙首先判斷軟件是否運(yùn)行袁如果運(yùn)行袁則終止遙代碼如下:
隨后對(duì)文件進(jìn)行相應(yīng)的操作遙需要增添的文件直接進(jìn)行移動(dòng)(move)曰對(duì)COM 組件注冊(cè)(regedit)曰對(duì)批量文件的移動(dòng)可以通過(guò)讀取注冊(cè)表中WinRAR 軟件的位置袁然后采用調(diào)用外部程序的方法啟動(dòng)WinRAR.exe袁并附加rar 命令把壓縮文件解壓到臨時(shí)文件夾中袁然后從臨時(shí)文件夾中把文件移動(dòng)到目標(biāo)地址曰對(duì)安裝文件根據(jù)填寫的參數(shù)執(zhí)行靜默安裝曰此外還可進(jìn)行單個(gè)文件的刪除(Del)堯文件夾的刪除(remove)遙
在軟件的初始界面點(diǎn)擊揖檢查更新銥鏈接袁即可進(jìn)行本軟件的升級(jí)更新遙區(qū)別于帶升級(jí)軟件的配置文件袁采用ini 的文件格式遙此格式的文件內(nèi)容以純文本方式保存袁內(nèi)容被分為一個(gè)或多個(gè)區(qū)段袁在區(qū)段下存放鍵和值對(duì)袁通過(guò)區(qū)段名和鍵名可以取得對(duì)應(yīng)的值遙根據(jù)設(shè)定的通信協(xié)議(http 或ftp)袁進(jìn)行文件下載袁比對(duì)堯升級(jí)遙
如果是主程序袁則進(jìn)行舊主程序的更名袁更名并移動(dòng)新主程序袁創(chuàng)建一個(gè)新進(jìn)程遙在新程序初始化是刪除舊主程序文件遙如果是其他文件袁則直接進(jìn)行文件的刪除堯替換操作遙在全面升級(jí)成功后再進(jìn)行自身配置文件的替換遙
下面那這段代碼實(shí)現(xiàn)主程序的更新:
自動(dòng)升級(jí)軟件還提供了一個(gè)新的功能袁掃描指定站點(diǎn)的功能遙界面上有2個(gè)視圖控件袁上面的控件顯示站點(diǎn)掃描結(jié)果袁下面的顯示選中站點(diǎn)的文件資源遙在起始和終止IP 控件中輸入地址袁點(diǎn)擊揖直接查詢銥即可遙隨后在活動(dòng)的站點(diǎn)中選擇其一(需無(wú)用戶名堯密碼)袁可查看逐級(jí)文件資源遙
軟件采用InstallShield 工具打包項(xiàng)目袁制作成可安裝的形式袁語(yǔ)言為英文遙本軟件只準(zhǔn)許一個(gè)實(shí)例運(yùn)行袁啟動(dòng)時(shí)會(huì)彈出歡迎界面遙用戶遇到問(wèn)題時(shí)可以按F1 鍵調(diào)出幫助文檔袁參考幫助信息遙文檔是用Macrobject 軟件把word 文檔轉(zhuǎn)換成.chm文件制作而成袁同時(shí)利用BCG 美化了到VC++6.0 的界面袁使得外觀更友好堯人性化遙
軟件動(dòng)態(tài)更新技術(shù)正成為當(dāng)今軟件維護(hù)領(lǐng)域的一個(gè)重要研究課題,能否提供不間斷的服務(wù)正在成為人們衡量軟件系統(tǒng)的一項(xiàng)重要指標(biāo)[7]。在面向服務(wù)的分布式系統(tǒng)上實(shí)現(xiàn)軟件的動(dòng)態(tài)更新值得深入研究。
[1]張 仕.基于面向?qū)ο筌浖膭?dòng)態(tài)更新研究[D].上海:上海交通大學(xué),2008.
[2]宋凌怡.軟件通用自動(dòng)升級(jí)方法的研究與實(shí)現(xiàn)[J].安順學(xué)院學(xué)報(bào),2011(3):118-120
[3]譚安芬,王 力.系統(tǒng)自動(dòng)更新升級(jí)軟件SUS 研究[J].電子工程師,2006(6):38-41.
[4]趙小娥.用VC++編程實(shí)現(xiàn)程序的自動(dòng)更新[J].西安文理學(xué)院學(xué)報(bào):自然科學(xué)版,2006(4):80-83.
[5]岳國(guó)華.分布式環(huán)境下C/S 模式客戶端軟件自動(dòng)在線升級(jí)的設(shè)計(jì)與實(shí)現(xiàn)[J].西安科技大學(xué)學(xué)報(bào),2011,31(1):72-76.
[6]陳 剛,羌玲玲.用VC++實(shí)現(xiàn)軟件的自動(dòng)升級(jí)[J].計(jì)算機(jī)應(yīng)用與軟件,2010(10):298-301.
[7]王德俊.面向服務(wù)的分布式系統(tǒng)動(dòng)態(tài)更新研究[D].上海:上海交通大學(xué),2010.