一種程序升級安裝包的制作方法
【專利摘要】本發(fā)明涉及軟件升級【技術(shù)領(lǐng)域】,尤其是一種程序升級安裝包的制作方法。本發(fā)明首先對新舊源代碼版本進行比較;如果有新版本;則進一步對比較新舊版本的代碼文件;新版本中新增的設(shè)為新增文件,舊版本中多余的文件列表記錄為需要刪除的文件,新舊版本不一致時相應(yīng)的新版本的目標代碼文件為需要替換的文件;將前述文件和/或文件列表記錄制作成安裝包;并執(zhí)行文件的拷貝、替換、刪除操作。本發(fā)明提供了一種簡單有效的生成程序增量升級安裝包的制作方法,特別適用于對大型程序進行升級安裝。
【專利說明】一種程序升級安裝包的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件升級【技術(shù)領(lǐng)域】,尤其是一種程序升級安裝包的制作方法。
【背景技術(shù)】
[0002]在軟件交付給客戶以后,軟件廠商經(jīng)常需要對軟件功能做一些擴展、修復一些bug(漏洞)等。通常是由用戶自己下載程序升級安裝包升級這些軟件或由維護人員攜帶程序升級安裝包到用戶現(xiàn)場進行升級。一般軟件升級包的制作方法是這樣的:
[0003]1、把新版本軟件的源代碼編譯出來;
[0004]2、在新版本編譯后的目標代碼中加入版本的信息;
[0005]3、升級時,讀取已安裝版本目標代碼中的版本信息,與新版本目標代碼中的版本信息進行對比,如果已安裝版本較老,則進行全盤替換。
[0006]這種方法會有如下的問題:
[0007]1、新舊版本之間的對比不夠精確,目標代碼中的版本信息依賴于構(gòu)建人員的判斷獲取,一旦源代碼版本變化而構(gòu)建人員未知,容易導致升級包數(shù)據(jù)錯誤進而導致升級失?。?br>
[0008]2、升級效率低,不管舊版本是什么,這種方法都會采用全盤替換的方法進行升級,對于新舊版本只存在少量差異,比如只修改幾個bug的情況下,全盤替換的方式無疑會浪費不少時間;
[0009]3、軟件升級包的占用空間大,因為需要包含新版的全部目標代碼,因此升級包的數(shù)據(jù)量大,用戶下載時間長,維護人員攜帶也需要更大容量的移動存儲設(shè)備。
【發(fā)明內(nèi)容】
[0010]本發(fā)明解決的技術(shù)問題在于提供一種程序升級安裝包的制作方法,解決了大型程序升級包占用空間大,升級效率低等問題。
[0011]本發(fā)明解決上述技術(shù)問題的技術(shù)方案是:首先對新舊源代碼版本進行比較;如果有新版本;則進一步對比較新舊版本的代碼文件;新版本中新增的設(shè)為新增文件,舊版本中多余的文件列表記錄為需要刪除的文件,新舊版本不一致時相應(yīng)的新版本的目標代碼文件為需要替換的文件;將前述文件和/或文件列表記錄制作成安裝包;并執(zhí)行文件的拷貝、替換、刪除操作。
[0012]具體包括如下步驟:
[0013]步驟1:從版本控制器中檢出新舊兩個版本的源代碼;
[0014]步驟2:按目標代碼文件的編譯步驟找出對應(yīng)每個目標代碼文件的源代碼文件或源代碼目錄,通過檢出的源代碼工作副本獲得源代碼文件或源代碼目錄的版本;
[0015]步驟3:修改編譯步驟,在生成目標代碼文件的步驟中加入寫入源代碼的版本的步驟并編譯生成新舊兩個版本的目標代碼;
[0016]步驟4:比較新舊版本的目標代碼文件列表,新版本比舊版本多的文件為需要新增的文件,拷貝出來作為升級安裝包中的文件,舊版本比新版本多的文件列表記錄下來作為需要刪除的文件,兩個版本一致的文件列表作為需要比較的文件列表;
[0017]步驟5:分別從新舊版本目標代碼中找出需要比較的文件列表中每一項對應(yīng)的文件,從兩個文件中讀取源代碼的版本,如果兩者不一致,則相應(yīng)的新版本的目標代碼文件為需要替換的文件,拷貝出來作為升級安裝包中的文件;如果一致,則不需要拷貝;
[0018]步驟6:將步驟4中得到的需要新增的文件、步驟5中得到的需要替換的文件以及步驟4中得到的需要刪除的文件列表記錄制作成安裝包,安裝時將需要新增的文件拷貝到舊版本的安裝目錄,將需要替換的文件強制替換到舊版本的安裝目錄并根據(jù)需要刪除的文件列表記錄從舊版本的安裝目錄中刪除。
[0019]所述的找出對應(yīng)每個目標代碼文件的源代碼文件或源代碼目錄是指用于編譯生成目標代碼文件的是一個源代碼文件或一個源代碼目錄下的文件。
[0020]所述的源代碼文件或源代碼目錄的版本是指版本控制系統(tǒng)對應(yīng)的一個整數(shù)的版本標識,源代碼文件初始導入到版本控制系統(tǒng)時會被分配一個版本,在每次修改并提交后,源代碼文件被賦予一個新的版本,源代碼目錄下的文件被修改并提交后,源代碼目錄的版本也被更新,源代碼目錄的版本對應(yīng)其下最新的源代碼文件的版本。
[0021]所述的在生成目標代碼文件中寫入源代碼的版本是指調(diào)用編譯程序往目標代碼文件中寫入源代碼版本作為描述性的信息,如調(diào)用Jar程序一個jar文件的MANIFEST.MF中寫入版本。
[0022]所述的制作成安裝包并執(zhí)行文件的拷貝、替換、刪除操作指的是將升級文件壓縮成一個文件并通過批處理的方式執(zhí)行文件的拷貝、替換和刪除,rpm、deb等包管理程序的制作程序都支持這樣的功能。
[0023]本發(fā)明方案的有益效果如下:
[0024]1、本發(fā)明的方法不依賴于人工判斷,版本信息完全由版本控制系統(tǒng)維護,不會導致升級包數(shù)據(jù)錯誤。
[0025]2、本發(fā)明的方法升級效率高,只需要替換掉新舊版本差異的部分,對于大型程序的升級來說特別節(jié)省時間。
[0026]3、本發(fā)明的方法生成的升級安裝包是增量的升級安裝包,只包含需要新增和替換的文件,占用空間小,適合于網(wǎng)絡(luò)下載以及維護人員使用外設(shè)攜帶。
【專利附圖】
【附圖說明】
[0027]下面結(jié)合附圖對本發(fā)明進一步說明:
[0028]附圖是本發(fā)明的流程圖;
【具體實施方式】
[0029]如圖所示,程序用不同的代碼有不同的編譯方式,在實現(xiàn)方面有所不同,本發(fā)明下面以Java編寫的程序為例,版本控制系統(tǒng)是SVN,使用ant批處理程序,最后的升級包用rpm的形式發(fā)布。
[0030]首先checkout出新舊兩份源代碼。
[0031]然后使用ant批量編譯成jar文件,這兩步都是一般的實現(xiàn)方式,不詳述。[0032]接著對生成的jar包打上SVN版本標簽
[0033]
【權(quán)利要求】
1.一種程序升級安裝包的制作方法,其特征在于:首先對新舊源代碼版本進行比較;如果有新版本;則進一步對比較新舊版本的代碼文件;新版本中新增的設(shè)為新增文件,舊版本中多余的文件列表記錄為需要刪除的文件,新舊版本不一致時相應(yīng)的新版本的目標代碼文件為需要替換的文件;將前述文件和/或文件列表記錄制作成安裝包;并執(zhí)行文件的拷貝、替換、刪除操作。
2.根據(jù)權(quán)利要求1所述的程序升級安裝包的制作方法,其特征在于:具體包括如下步驟: 步驟1:從版本控制器中檢出新舊兩個版本的源代碼; 步驟2:按目標代碼文件的編譯步驟找出對應(yīng)每個目標代碼文件的源代碼文件或源代碼目錄,通過檢出的源代碼工作副本獲得源代碼文件或源代碼目錄的版本; 步驟3:修改編譯步驟,在生成目標代碼文件的步驟中加入寫入源代碼的版本的步驟并編譯生成新舊兩個版本的目標代碼; 步驟4:比較新舊版本的目標代碼文件列表,新版本比舊版本多的文件為需要新增的文件,拷貝出來作為升級安裝包中的文件,舊版本比新版本多的文件列表記錄下來作為需要刪除的文件,兩個版本一致的文件列表作為需要比較的文件列表; 步驟5:分別從新舊版本目標代碼中找出需要比較的文件列表中每一項對應(yīng)的文件,從兩個文件中讀取源 代碼的版本,如果兩者不一致,則相應(yīng)的新版本的目標代碼文件為需要替換的文件,拷貝出來作為升級安裝包中的文件;如果一致,則不需要拷貝; 步驟6:將步驟4中得到的需要新增的文件、步驟5中得到的需要替換的文件以及步驟4中得到的需要刪除的文件列表記錄制作成安裝包,安裝時將需要新增的文件拷貝到舊版本的安裝目錄,將需要替換的文件強制替換到舊版本的安裝目錄并根據(jù)需要刪除的文件列表記錄從舊版本的安裝目錄中刪除。
3.根據(jù)權(quán)利要求2所述的程序升級安裝包的制作方法,其特征在于:所述的找出對應(yīng)每個目標代碼文件的源代碼文件或源代碼目錄是指用于編譯生成目標代碼文件的是一個源代碼文件或一個源代碼目錄下的文件。
4.根據(jù)權(quán)利要求2所述的程序升級安裝包的制作方法,其特征在于:所述的源代碼文件或源代碼目錄的版本是指版本控制系統(tǒng)對應(yīng)的一個整數(shù)的版本標識,源代碼文件初始導入到版本控制系統(tǒng)時會被分配一個版本,在每次修改并提交后,源代碼文件被賦予一個新的版本,源代碼目錄下的文件被修改并提交后,源代碼目錄的版本也被更新,源代碼目錄的版本對應(yīng)其下最新的源代碼文件的版本。
5.根據(jù)權(quán)利要求3所述的程序升級安裝包的制作方法,其特征在于:所述的源代碼文件或源代碼目錄的版本是指版本控制系統(tǒng)對應(yīng)的一個整數(shù)的版本標識,源代碼文件初始導入到版本控制系統(tǒng)時會被分配一個版本,在每次修改并提交后,源代碼文件被賦予一個新的版本,源代碼目錄下的文件被修改并提交后,源代碼目錄的版本也被更新,源代碼目錄的版本對應(yīng)其下最新的源代碼文件的版本。
6.根據(jù)權(quán)利要求2至5任一項所述的程序升級安裝包的制作方法,其特征在于:所述的在生成目標代碼文件中寫入源代碼的版本是指調(diào)用編譯程序往目標代碼文件中寫入源代碼版本作為描述性的信息。
7.根據(jù)權(quán)利要求2至5任一項所述的程序升級安裝包的制作方法,其特征在于:所述的制作成安裝包并執(zhí)行文件的拷貝、替換、刪除操作指的是將升級文件壓縮成一個文件并通過批處理的方式執(zhí)行文件的拷貝、替換和刪除。
8.根據(jù)權(quán)利要求6所述的程序升級安裝包的制作方法,其特征在于:所述的制作成安裝包并執(zhí)行文件的拷貝、替換、刪除操作指的是將升級文件壓縮成一個文件并通過批處理的方式執(zhí)行文件的拷貝、替換和刪除。
【文檔編號】G06F9/445GK103955363SQ201410138626
【公開日】2014年7月30日 申請日期:2014年4月8日 優(yōu)先權(quán)日:2014年4月8日
【發(fā)明者】莫展鵬, 楊松, 季統(tǒng)凱 申請人:國云科技股份有限公司