电竞比分网-中国电竞赛事及体育赛事平台

分享

軟件升級程序的設計與實現(xiàn) -計算機論文-論文中心

 *我愛陽光* 2010-09-20

摘要文章從制作軟件升級程序的必要性出發(fā),首先,介紹了升級程序所完成的功能,接著闡明了升級程序的設計思路,最后通過具體的設計步驟實現(xiàn)了一個簡單的升級程序。
關(guān)鍵詞軟件升級;升級程序;客戶端;服務器端;配置文件
中圖分類號TP311文獻標識碼A文章編號1008-1151(2006)05-0084-02

一、必要性
軟件升級程序,顧名思義就是對用戶正在使用的軟件系統(tǒng)或程序進行升級。其實大家在平常學習生活中已經(jīng)接觸到了很多升級程序,例如騰訊公司的OICQ即時通訊軟件,大家有沒有注重到有時候點擊運行的時候,會彈出一個對話框,如“軟件已經(jīng)更新,您使用的版本已經(jīng)過時,請用戶及時升級”之類的提示。有時甚至到了不升級就不能使用的的地步。微軟的Windows操作系統(tǒng)是大家再熟悉不過的吧,它美觀漂亮的圖形界面,加上簡單易用的特性給大家留下了深刻的印象。這樣的系統(tǒng)也會用到升級程序嗎?回答是肯定的。其實微軟天天都在更新,上網(wǎng)的用戶就會知道,網(wǎng)上病毒橫行已經(jīng)不是什么稀奇事了,弄不好就會中了木馬等黑客程序,微軟的操作系統(tǒng)自然成為廣大黑客的攻擊目標,因此每隔一段時間微軟就會對自己的系統(tǒng)打上些“補丁”,以確保自身系統(tǒng)的安全,保證用戶的機器不被“黑掉”。
二、升級程序的功能
升級程序概括起來有兩個最大的用途:
第一,發(fā)現(xiàn)已使用的程序存在BUG或安全隱患,用升級程序來修補。
第二,程序增加了新的功能或是對原來功能有所改進和優(yōu)化等,用升級程序來實現(xiàn)客戶端的升級更新。
說了這么多,那么升級程序是怎么制作出來的呢?軟件制作商又是怎么知道用戶使用的程序何時該升級,是否升級過了呢?在這里,提出一個設計思路與方案供大家參考與交流,并不局限于用何種語言和工具去實現(xiàn),下面就開始吧:
三、設計思路
一般公司制作的軟件都會有兩個程序,在這里我們簡稱為主程序和升級程序。主程序完成客戶所要求的主要功能,而所有的升級任務則交由升級程序來完成。升級過程可以由兩種方式來完成,一是直接使用升級程序檢查當前主程序是否是最新版本,若不是則執(zhí)行升級任務。二是將升級程序嵌套在主程序中,當用戶執(zhí)行主程序時,再啟動升級程序完成升級的任務,在這種方式中我們還可以設置一個開關(guān),用來控件是否需要執(zhí)行升級任務,這將在后面具體說明。流程圖如圖1。
四、具體設計
為完成升級任務,需要用到配置文件,分別在服務器端與客戶端做如下設置:

 

 

 

 

圖1
服務器端
第一步:在服務器端數(shù)據(jù)庫中建立如下結(jié)構(gòu)的表格:Update表

 

 

 

 

這是最簡單的表格樣式,當然也可以更復雜,記錄更多的信息,比如客戶升級的一些具體信息等,這里不做具體討論。
現(xiàn)在就各個字段的含義做如下說明:
Id為主鍵。
Addr是指主程序使用的對象和環(huán)境,即使用的對象和環(huán)境不同版本的功能可能會有所不同。
Flag是升級開關(guān),即說明是否需要執(zhí)行升級任務,它是整個升級任務的總開關(guān),標志為1表示需要執(zhí)行升級,為0表示不需要執(zhí)行升級任務。
Ver表示版本號,標志當前主程序的最新版本號。
Udate表示此次更新的日期。
第二步:在服務器端建立以下升級配置文件(server。ini)。下載方式采用FTP下載
Addr‘此鍵值表示使用的地點,值應與上表中Addr字段的值對應
Server=172。30。5。1‘此鍵值表示可以提供下載服務器的IP(假如下載數(shù)量很大,還可以指定多個下載服務器的IP)
Username=anonymous‘用戶名
Passward=‘密碼
Port=21‘端口
Filename=AA。exe‘要下載的程序名
Iniflag=1‘是否必要更新該值的含義應與服務器上update表中Iniflag值對應,當此值為1時表示只有此次更新成功了才能繼續(xù)使用主程序,為0表示即使客戶端沒有進行此次更新也可以繼續(xù)使用主程序
Version=3。0‘最新版本號
Lastupdate=2005-10-21‘最新更新日期
Num=3‘其他控件數(shù)量,有時程序的更新可能還會有其他第三方的控件的更新,假如此值為0則即使后面控件數(shù)有值也不用理會,但該值應該與后面的控件數(shù)量對應,有的控件不僅要更新而且還要注冊。
C1=EE。ocx‘C控件名F是否注冊1需要0不需要
F1=1‘假如該值為1則將在本地產(chǎn)生一個Reg。bat文件,對該控件進行注冊,為0則只是下載更新不生成注冊文件
C2=FF。ocx
F2=1
C3=GG。dll
F3=0
對以上文件內(nèi)容具體說明如下:
此次更新將會對Addr這個版本的主程序進行更新,采用FTP下載方式,下載端口21,用戶名anonymous,密碼為空,下載服務器的地址是172。30。5。1,主程序的名字是AA。exe,下載為必要下載,假如更新不成功,不能繼續(xù)使用主程序,此次更新的版本號為3。0,更新日期是2005-12-21,需要同時更新的控件有3個,它們是EE。ocx,F(xiàn)F。ocx和GG。dll。其中前兩個文件將會在客戶端生成注冊文件Reg。bat文件,對這兩個文件進行注冊。
客戶端
需要建立本地升級配置文件,該文件的主要作用是保存每次升級后的最新日期與版本號,以便為下次升級作參考以及初始下載服務器升級文件的相關(guān)信息等。其格式有說明如下:
update
userlocal=Addr‘系統(tǒng)使用的版本
server=172。30。5。1‘下載升級配置文件的地址
username=anonymous‘下載用戶名
password=‘密碼
port=21‘端口
version=2。0‘當前使用系統(tǒng)的版本號(升級成功之后需要更新)
lastupdate=2005-12-10‘當前使用系統(tǒng)的最后更新日期
Updatefilename=Server。ini‘要下載的服務器上升級配置文件的文件名
updatename=update。exe‘要啟用的升級程序的名字
此文件的內(nèi)容說明如下:
該主程序使用的版本是Addr的,默認下載的服務器是172。30。5。1,下載采用FTP下載,用戶名是anonymous,用戶名為空,端口為21,當前使用的版本號為2。0版本,最后更新的日期是2005-12-10,要下載的升級配置文件的名字為Server。ini,啟用的升級程序的名字為update。exe。假如下載Server。ini文件中發(fā)現(xiàn)有F注冊標志為1的,將還會在本地形成一個批處理注冊文件。
現(xiàn)就以上舉例說明升級程序的流程。
1。假如直接運行升級程序,以上述為例說明:。。。。??蛻舳耸褂玫腁ddr版本,首先從172。30。5。1服務器上下載名為Server。ini的升級配置文件,然后比較兩個文件中的Version值,由于本地配置文件(update。ini)中的version值為2。0,比從服務器上的下載的升級配置文件(Server。ini)中的Version值3。0的版本要低,因此升級程序判定此次升級任務有效,需要升級,并且由于必要升級標志Iniflag值為1,因此假如不執(zhí)行升級主程序?qū)⒉荒苁褂?。下載時將會首先生成一個臨時文件夾,所有文件下載成功后,再將臨時文件夾里的文件復制到目的文件夾下,由于此次更新有需要注冊的文件,因此還會生成Reg。bat文件,對文件進行注冊。假如升級成功后,本地配置文件(update。ini)中的內(nèi)容改變?yōu)関ersion=3。0,lastupdate=2005-12-21。最后刪除臨時文件夾下的文件。到此整個升級任務完成。當然升級程序還可以將客戶端升級的信息再寫回服務器端,比如客戶端何時執(zhí)行了升級任務,此次任務是成功還是失敗等。在這里不做討論。程序流程圖如圖2:

 

 

 

 

 

 




圖2
2。假如是從主程序運行的,其流程與上述基本一致,只是在啟動升級程序之前,會去判定升級標志是否打開,假如服務器上update表中對應版本的Flag升級標志為1,表示升級標志打開,說明服務器端軟件有更新,但是客戶端是否已經(jīng)升級過了呢,是否已經(jīng)是最新版本呢,這還要再比較本地主程序的版本號update。ini中的version值是否與服務器上update表中的Ver字段的值一樣,假如相同則表示客戶端已經(jīng)是最新版本,無需執(zhí)行升級任務;假如不相同則表示客戶端軟件還沒有執(zhí)行升級任務,應該繼續(xù)判定是否必要更新Iniflag的值,假如該值為1,表示必要更新,即不執(zhí)行升級任務,主程序不能再繼續(xù)使用,主程序應立即啟動升級程序,然后關(guān)閉自己。假如該值為表示不是必要更新,只是提示“主程序有更新,請馬上更新”,詢問客戶是否現(xiàn)在升級,但客戶由于種種原因不愿立即升級的還可以繼續(xù)使用主程序。流程見圖3。
五、結(jié)語
通過以上介紹,相信大家已經(jīng)能夠制作一個簡單升級程序了。以上的設計思路只是一般項目中普遍采用的雛形,在升級的過程中主要還用到了配置文件的讀寫操作,大家還可以自由發(fā)揮,拓展其功能,使其應用更為廣泛。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多