專利名稱:軟件升級包的制作方法及裝置、程序的升級方法及設備的制作方法
技術領域:
本發(fā)明涉 及通信技術領域,尤其涉及一種軟件升級包的制作方法及裝置、程序的升級方法及設備。
背景技術:
由于軟件設計的復雜性,軟件設計人員在設計軟件時,常常不可避免地在軟件中遺留一些比較危險的程序設計錯誤,如果在軟件測試中無法發(fā)現(xiàn),就會將存在錯誤的軟件投入到市場中,給軟件的用戶帶來不可預知的后果。軟件升級是解決軟件設計錯誤、提供更多服務的首選技術。為了更加方便軟件用戶進行軟件升級,很多軟件提供商會提供在線的軟件升級服務,即軟件的用戶從網(wǎng)絡上下載升級后的軟件,并將下載的升級后的軟件進行安裝。由于升級后的軟件主要用于解決軟件設計錯誤、提高更多服務,因此,相比較于升級之前的軟件而言,很多內(nèi)容是彼此重復的。然而作為一個完整的升級后的軟件,又必須包含這一部分重復的內(nèi)容,使得用戶從網(wǎng)絡下載升級后的軟件需要耗費更多的時間和流量費用,給用戶帶來不必要的損失。
發(fā)明內(nèi)容
本發(fā)明提供一種軟件升級包的制作方法及裝置、程序的升級方法及設備,用以解決現(xiàn)有技術中升級后的軟件與升級前的軟件存在內(nèi)容上的重復,從而給用戶帶來的不必要的損失。本發(fā)明提供的軟件升級包的制作方法,包括獲得舊程序的全部解壓縮文件和新程序的全部解壓縮文件;根據(jù)所述舊程序的全部解壓縮文件以及所述新程序的全部解壓縮文件,獲得將所述舊程序升級為所述新程序的軟件升級包。本發(fā)明提供的軟件程序的升級方法,包括根據(jù)獲得的軟件升級包及舊程序的全部解壓縮文件計算新打包文件,所述獲得的軟件升級包為利用所述軟件升級包的制作方法制作生產(chǎn)的軟件升級包;對所述新打包文件進行解包,將解包后的新打包文件壓縮得到新程序。本發(fā)明提供的軟件升級包的制作裝置,包括解壓模塊,用于獲得舊程序的全部解壓縮文件和新程序的全部解壓縮文件;獲得模塊,用于根據(jù)所述舊程序的全部解壓縮文件以及所述新程序的全部解壓縮文件,獲得將所述舊程序升級為所述新程序的軟件升級包。本發(fā)明提供的用戶設備,包括軟件升級裝置;所述軟件升級裝置用于根據(jù)獲得的軟件升級包及舊程序的全部解壓縮文件計算新打包文件,所述獲得的軟件升級包為利用所述軟件升級包的制作方法制作生產(chǎn)的軟件升級包;對所述新打包文件進行解包,將解包后的新打包文件壓縮得到新程序。
本發(fā)明提供的軟件升級包的制作方法及裝置、程序的升級方法及設備,根據(jù)新、舊程序的全部解壓縮文件之間的相同和不同進行軟件升級包的制作,極大減少了軟件升級包的大小,節(jié)約了在線獲取軟件升級包消耗的網(wǎng)絡流量和費用,減少了服務提供方的下載壓力。使用上述軟件升級包進行軟件程序的升級,同樣可以節(jié)約網(wǎng)絡流量和費用,減少服務提供方的下載壓力。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實施例提供的軟件升級包的制作方法流程圖;圖2為本發(fā)明實施例中提供的軟件升級包的結(jié)構(gòu)示意圖; 圖3為本發(fā)明實施例提供的一種實現(xiàn)步驟102的方法流程圖;圖4為本發(fā)明實施例提供的又一種實現(xiàn)步驟102的方法流程圖;圖5為本發(fā)明實施例提供的再一種實現(xiàn)步驟102的方法流程圖;圖6為本發(fā)明實施例提供的又一種軟件升級包的制作方法流程圖; 圖7為本發(fā)明實施例提供的打包文件的結(jié)構(gòu)示意圖;圖8為本發(fā)明實施例提供的軟件程序的升級方法流程圖;圖9為本發(fā)明實施例提供的一種軟件升級包的制作裝置的結(jié)構(gòu)示意圖;圖10為本發(fā)明實施例提供的用戶設備的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。圖I為本發(fā)明實施例提供的軟件升級包的制作方法流程圖,如圖I所示,該方法可以包括步驟101、軟件升級包的制作裝置獲得舊程序的全部解壓縮文件和新程序的全部解壓縮文件。其中,軟件升級包的制作裝置既可以是軟件服務提供商的服務器,也可以是任意一臺能夠根據(jù)指令實現(xiàn)程序執(zhí)行的計算機、用戶設備等等,此處不做限定。具體的,該步驟101可以包括兩方面的內(nèi)容,其一是將舊程序解壓縮,得到舊程序的壓縮文件;將舊程序的壓縮文件解壓縮,得到舊程序的全部解壓縮文件。其二是將新程序解壓縮,得到新程序的壓縮文件;將新程序的壓縮文件解壓縮,得到新程序的全部解壓縮文件。步驟102、根據(jù)舊程序的全部解壓縮文件以及新程序的全部解壓縮文件,獲得將舊程序升級為新程序的軟件升級包。
本發(fā)明實施例提供的軟件升級包的方法,通過對新、舊程序的全部文件進行解壓縮,利用兩者解壓縮后文件進行匹配,找到兩者之間的差異和相同,從而計算得到軟件升級包,得到的軟件升級包相比較與新程序,體積很小,極大地節(jié)省了網(wǎng)絡占用和用戶成本。具體的,圖2為上述方法實施例中提到的軟件升級包的結(jié)構(gòu)示意圖,如圖2所示,該軟件升級包可以包括控制區(qū)、相同區(qū)和差異區(qū)。其中,控制區(qū)中存儲差分動作。根據(jù)控制區(qū)中的動作,對相同區(qū)和差異區(qū)進行數(shù)據(jù)提取。控制區(qū)中的動作可以采用三元組表示,包括相同區(qū)存取長度、差異區(qū)存取長度和其它信息。結(jié)合圖2所示的軟件升級包的結(jié)構(gòu)示意圖,圖3為本發(fā)明實施例提供的一種實現(xiàn)步驟102的方法流程圖,如圖3所示,該步驟102具體可以包括步驟1021、將舊程序的全部解壓縮文件以及舊程序的全部解壓縮文件之間進行最 長公共前綴匹配,得到匹配結(jié)果,匹配結(jié)果包括至少一個匹配內(nèi)容和至少一個不匹配內(nèi)容。步驟1023、將每個匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮,壓縮后的匹配內(nèi)容作為軟件升級包中相同區(qū)的內(nèi)容;將每個不匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮,壓縮后的不匹配內(nèi)容作為軟件升級包中差異區(qū)的內(nèi)容;對于相同區(qū)的內(nèi)容的差分動作和差異區(qū)的內(nèi)容的差分動作,均記錄在軟件升級包中的控制區(qū)。進一步的,為了降低軟件差分包的體積,如圖4所示的本發(fā)明實施例提供的又一種實現(xiàn)步驟102的方法流程圖,在步驟1023之前,還可以包括步驟1022、對于每個匹配內(nèi)容執(zhí)行如下動作將舊程序的全部解壓縮文件中相應于匹配內(nèi)容的部分,與新程序的全部解壓縮文件中相應于匹配內(nèi)容的部分按字節(jié)相減,得到新的字符串。相應的,步驟1023中的“將每個匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮”可以更新為將每個新的字符串及其對應的長度進行數(shù)據(jù)壓縮。進一步的,為了提高數(shù)據(jù)匹配的效率,如圖5所示的本發(fā)明實施例提供的再一種實現(xiàn)步驟102的方法流程圖,如圖5所示,在步驟1021之前,還可以包括步驟1020、將舊程序的全部解壓縮文件按字節(jié)索引。例如,可以使用pat-array和后綴數(shù)組對舊程序的全部解壓縮文件進行索引,本發(fā)明實施例以采用后綴數(shù)組進行索引的方式進行說明,步驟1020包括a、掃描舊程序的全部解壓縮文件,計算字節(jié)頻次,得到每個字節(jié)在文件中的出現(xiàn)次數(shù)。b、計算累積字節(jié)頻次,以便于為每個字節(jié)的所有出現(xiàn)計算間隔位置。其中,累積字節(jié)頻次可以理解為從第一個字節(jié)到最后一個字節(jié),頻次順序相加。C、構(gòu)造一個與舊程序相同大小的位置數(shù)組,數(shù)組中的元素存儲舊程序的每個字節(jié)的位置。d、根據(jù)累積字節(jié)頻次,掃描舊程序的全部壓縮文件,把每個字節(jié)的所有出現(xiàn)位置寫入位置數(shù)組中的鄰接出現(xiàn)位置。e、利用快速排序算法,對每個字節(jié)的所有出現(xiàn)開始的字符串進行排序,從而得到舊程序每個字節(jié)的位置索引,即得到了排序后的位置數(shù)組。上述算法的偽代碼如下suffix_sort(file, file—size) char_freq[255] while(ch=fgetc(file)) char_freq[ch]++ for(n = I; n <= 255; n++)
char_freq[ch]十=char_freq[n - I] pos array = new char_freq[ch-1 ] while(ch=fgetc(file))
pos_array[char_freq[ch]] = current_pos(file);char_freq[ch]—quicksort(posaiTay)相應的,步驟1021可以包括將按字節(jié)索引后的舊程序的全部解壓縮文件,以及 舊程序的全部解壓縮文件之間進行最長公共前綴匹配,得到匹配結(jié)果,匹配結(jié)果包括至少一個匹配內(nèi)容和至少一個不匹配內(nèi)容。具體的a、利用折半查找算法查找公共前綴的長度。例如,對新程序的全部解壓縮文件中的當前字節(jié)t,通過排序后的位置數(shù)組可以找到t在舊程序的全部解壓縮文件中的所有出現(xiàn)位置。通過匹配t所在字符串和舊程序的全部解壓縮文件中的字符串,可以找到最長公共前綴。b、利用找到的長度,比較升級后與舊程序的全部解壓縮文件中完全匹配的字節(jié)數(shù)。C、如果完全匹配的字節(jié)數(shù)大于一定閾值,則判斷該片段內(nèi)哪些是匹配的內(nèi)容,哪些是不匹配的內(nèi)容,存儲匹配和不匹配的內(nèi)容。這里需要說明的是,程序之間的差異與一般字符串之間的差異并不一樣,程序之間的差異除了指令差異以外,還包括內(nèi)存單元的不同。不同版本的程序,前面部分對應單元之間的內(nèi)存位置差異會導致后面其它單元的內(nèi)存位置出現(xiàn)變化。升級后與待升級的程序中的內(nèi)存單元位置差異很大,而指令變化很小,因此在程序字符串匹配過程中必須采用容忍失配的情況出現(xiàn)。在本發(fā)明實施例中,只要匹配的字符數(shù)高于一定閾值既可認為二者是同一段程序。如果匹配的字符數(shù)低于閾值,則認為這兩段代碼不是同一段代碼。其中,完全匹配的部分比較少,主要是程序指令。不匹配的部分中絕大部分是內(nèi)存位置。這些不同的內(nèi)存位置往往差異相同或相近。為了進一步簡化新、舊程序之間軟件升級包的獲得過程,圖6為本發(fā)明實施例提供的又一種軟件升級包的制作方法流程圖,如圖6所示,該方法步驟101之后,還可以包括將舊程序的全部解壓縮文件按照預設結(jié)構(gòu)制作成一個打包文件;以及,將新程序的全部解壓縮文件按照預設結(jié)構(gòu)制作成一個打包文件。其中,全部解壓縮文件中包括文件和目錄,預設結(jié)構(gòu)包括用于控制文件或目錄層次的字段、用于區(qū)分文件和目錄的字段、用于記錄文件名或目錄名的字段、用于記錄文件名或目錄名長度的字段、用于記錄文件長度的字段以及用于記錄文件長度對應的字符串的字段。本發(fā)明實施例提供的打包文件的結(jié)構(gòu)示意圖可以如圖7所示。其中的層次(level)用來控制文件或目錄的層次;標簽(tag)用來區(qū)分文件和目錄,例如tag為O時指目錄,tag為I時為文件。名稱(name)表示文件或者目錄的名稱,名稱長度(name_len)用來表示name的字節(jié)長度。數(shù)據(jù)(data)表示與數(shù)據(jù)長度(data_len)對應的字節(jié)串,data_len表示當tag為文件時,指文件的長度。文件打包的偽代碼可
以如下所示
tar_piOc(current_name, level)if current—name is dirchdir(curreniriame)
whiie(new_name=scandir(current_name))
tar( new—name, level+1)
else
append—file(level, I, current—name)相應的,步驟102可以為根據(jù)舊程序的打包文件和新程序的打包文件獲得將舊程序升級為新程序的軟件升級包。圖8為本發(fā)明實施例提供的軟件程序的升級方法流程圖,如圖8所示,該方法包括
步驟801、根據(jù)獲得的軟件升級包及舊程序的全部解壓縮文件計算新打包文件,該獲得的軟件升級包為利用上述軟件程序的制作方法制作生成的升級包。具體的,軟件升級包的結(jié)構(gòu)決定了生成新打包文件的方法。當采用上述結(jié)構(gòu)的軟件升級包時,新打包文件的生成算法可以如下所示
while pos = getpos(diff file)
read(str_same, pos[l], same iik) read(str_diff, pos[2], diiT—file) append(strsame) append(strdifi)首先從控制區(qū)提取長度信息。根據(jù)長度信息從相同區(qū)和差異區(qū)中提取對應長度的字節(jié)串。由于這些字節(jié)串經(jīng)過了壓縮,因此必須首先解壓縮然后提取對應長度的字節(jié)串。通過控制區(qū)中的相同區(qū)存取長度,從舊程序中提取相關數(shù)據(jù);通過差異區(qū)存取長度從差異區(qū)中提取差異數(shù)據(jù)信息;通過其它信息控制文件指針的位置,最終生成新打包文件。步驟802、對新打包文件進行解包,將解包后的新打包文件壓縮得到新程序。具體的,對新打包文件進行解包A、讀取level,判斷當前所在目錄層次。B、讀取tag,判斷后面的部分是文件還是目錄。
C、讀取 name_len,讀取 name。D、如果tag=0,然后進入目錄name,并且level+1。重新執(zhí)行A。E、如果tag=l,讀取data_len,讀取data。重新執(zhí)行A。由于新打包文件內(nèi)的文件類型多樣,因此必須根據(jù)文件的原有類型壓縮,例如png壓縮算法、jpg壓縮算法;然后對所有文件再次壓縮得到新程序。本發(fā)明實施例提供的軟件升級包的制作方法,根據(jù)新、舊程序的全部解壓縮文件之間的相同和不同進行軟件升級包的制作,極大減少了軟件升級包的大小,節(jié)約了在線獲取軟件升級包消耗的網(wǎng)絡流量和費用,減少了服務提供方的下載壓力。
圖9為本發(fā)明實施例提供的一種軟件升級包的制作裝置的結(jié)構(gòu)示意圖,該制作裝置為執(zhí)行上述制作方法的特定執(zhí)行主體,因此,具體執(zhí)行步驟可以參見上述方法實施例中的描述,此處不做贅述。如圖9所示,該裝置包括解壓模塊901和獲得模塊902。其中,解壓模塊901用于獲得舊程序的全部解壓縮文件和新程序的全部解壓縮文件,獲得模塊902用于根據(jù)舊程序的全部解壓縮文件以及新程序的全部解壓縮文件,獲得將舊程序升級為新程序的軟件升級包。一種實施方式下,解壓模塊901可以包括舊程序解壓單元和新程序解壓單元。其中,舊程序解壓單元,用于將舊程序解壓縮,得到舊程序的壓縮文件;將舊程序的壓縮文件解壓縮,得到舊程序的全部解壓縮文件;新程序解壓單元,用于將新程序解壓縮,得到新程序的壓縮文件;新程序的壓縮文件解壓縮,得到新程序的全部解壓縮文件?!N實施方式下,軟件升級包包括控制區(qū)、相同區(qū)和差異區(qū),則獲得模塊902可以包括匹配單元和構(gòu)造單元。其中,匹配單元,用于將舊程序的全部解壓縮文件以及舊程序的全部解壓縮文件之間進行最長公共前綴匹配,得到匹配結(jié)果,匹配結(jié)果包括至少一個匹配內(nèi)容和至少一個不匹配內(nèi)容;構(gòu)造單元,用于將每個匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮,壓縮后的匹配內(nèi)容作為軟件升級包中相同區(qū)的內(nèi)容;將每個不匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮,壓縮后的不匹配內(nèi)容作為軟件升級包中差異區(qū)的內(nèi)容;對于相同區(qū)的內(nèi)容的差分動作和差異區(qū)的內(nèi)容的差分動作,均記錄在軟件升級包中的控制區(qū)。在上述實施方式的基礎上,獲得模塊902還可以包括壓縮單元,用于對于每個匹配單元匹配的內(nèi)容執(zhí)行如下動作將舊程序的全部解壓縮文件中相應于匹配內(nèi)容的部分,與新程序的全部解壓縮文件中相應于匹配內(nèi)容的部分按字節(jié)相減,得到新的字符串。相應的,構(gòu)造單元用于將每個新的字符串及其對應的長度進行數(shù)據(jù)壓縮;壓縮后的內(nèi)容作為軟件升級包中相同區(qū)的內(nèi)容;將每個不匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮,壓縮后的不匹配內(nèi)容作為軟件升級包中差異區(qū)的內(nèi)容;對于相同區(qū)的內(nèi)容的差分動作和差異區(qū)的內(nèi)容的差分動作,均記錄在軟件升級包中的控制區(qū)。在上述實施方式的基礎上,獲得模塊902還可以包括索引單元,用于將舊程序的全部解壓縮文件按字節(jié)索引;相應的,匹配單元用于將按字節(jié)索引后的舊程序的全部解壓縮文件,以及舊程序的全部解壓縮文件之間進行最長公共前綴匹配。一種實施方式的基礎上,解壓模塊901還可以包括打包單元,用于將舊程序的全部解壓縮文件按照預設結(jié)構(gòu)制作成一個打包文件;以及,將新程序的全部解壓縮文件按照預設結(jié)構(gòu)制作成一個打包文件;其中,全部解壓縮文件中包括文件和目錄,預設結(jié)構(gòu)包括用于控制文件或目錄層次的字段、用于區(qū)分文件和目錄的字段、用于記錄文件名或目錄名的字段、用于記錄文件名或目錄名長度的字段、用于記錄文件長度的字段以及用于記錄文件長度對應的字符串的字段;相應的,解壓模塊用于根據(jù)舊程序的打包文件和新程序的打包文件獲得將舊程序升級為新程序的軟件升級包。本發(fā)明實施例提供的軟件升級包的制作裝置,根據(jù)新、舊程序的全部解壓縮文件之間的相同和不同進行軟件升級包的制作,極大減少了軟件升級包的大小,節(jié)約了在線獲取軟件升級包消耗的網(wǎng)絡流量和費用,減少了服務提供方的下載壓力。圖10為本發(fā)明實施例提供的用戶設備的結(jié)構(gòu)示意圖,該用戶設備包括軟件升級裝置1001,該軟件升級裝置1001為上述軟件程序的升級方法的特定執(zhí)行主體,故升級方法如上所述,此處不做贅述。如圖10所示,該軟件升級裝置1001用于根據(jù)獲得的軟件升級包及舊程序的全部解壓縮文件計算新打包文件,獲得的軟件升級包為利用軟件升級包的制作方法制作生產(chǎn)的軟件升級包;對新打包文件進行解包,將解包后的新打包文件壓縮得到 新程序。需要說明的是,該用戶設備可以為手機、掌上電腦等常用終端。本領域普通技術人員可以理解實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。最后應說明的是以上實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質(zhì)脫離本發(fā)明各實施例技術方案的范圍。
權利要求
1.一種軟件升級包的制作方法,其特征在于,包括 獲得舊程序的全部解壓縮文件和新程序的全部解壓縮文件; 根據(jù)所述舊程序的全部解壓縮文件以及所述新程序的全部解壓縮文件,獲得將所述舊程序升級為所述新程序的軟件升級包。
2.根據(jù)權利要求I所述的方法,其特征在于,所述獲得舊程序的全部解壓縮文件,包括 將舊程序解壓縮,得到所述舊程序的壓縮文件; 將所述舊程序的壓縮文件解壓縮,得到舊程序的全部解壓縮文件。
3.根據(jù)權利要求I所述的方法,其特征在于,所述獲得新程序的全部解壓縮文件,包括 將新程序解壓縮,得到所述新程序的壓縮文件; 將所述新程序的壓縮文件解壓縮,得到新程序的全部解壓縮文件。
4.根據(jù)權利要求I至3中任一項所述的方法,其特征在于,所述軟件升級包包括控制區(qū)、相同區(qū)和差異區(qū),則所述根據(jù)所述舊程序的全部解壓縮文件以及所述新程序的全部解壓縮文件,獲得將所述舊程序升級為所述新程序的軟件升級包,包括 將舊程序的全部解壓縮文件以及所述舊程序的全部解壓縮文件之間進行最長公共前綴匹配,得到匹配結(jié)果,所述匹配結(jié)果包括至少一個匹配內(nèi)容和至少一個不匹配內(nèi)容; 將每個匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮,壓縮后的匹配內(nèi)容作為所述軟件升級包中相同區(qū)的內(nèi)容;將每個不匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮,壓縮后的不匹配內(nèi)容作為軟件升級包中差異區(qū)的內(nèi)容;對于所述相同區(qū)的內(nèi)容的差分動作和所述差異區(qū)的內(nèi)容的差分動作,均記錄在所述軟件升級包中的控制區(qū)。
5.根據(jù)權利要求4所述的方法,其特征在于,所述將每個匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮之前,所述方法還包括對于每個匹配內(nèi)容執(zhí)行如下動作 將舊程序的全部解壓縮文件中相應于所述匹配內(nèi)容的部分,與新程序的全部解壓縮文件中相應于所述匹配內(nèi)容的部分按字節(jié)相減,得到新的字符串; 相應的,所述將每個匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮,包括 將每個新的字符串及其對應的長度進行數(shù)據(jù)壓縮。
6.根據(jù)權利要求4所述的方法,其特征在于,所述將舊程序的全部解壓縮文件以及所述舊程序的全部解壓縮文件之間進行最長公共前綴匹配之前,所述方法還包括 將所述舊程序的全部解壓縮文件按字節(jié)索引; 相應的,所述將舊程序的全部解壓縮文件以及所述舊程序的全部解壓縮文件之間進行最長公共前綴匹配,包括 將按字節(jié)索引后的所述舊程序的全部解壓縮文件,以及所述舊程序的全部解壓縮文件之間進行最長公共前綴匹配。
7.根據(jù)權利要求I至3中任一項所述的方法,其特征在于,所述獲得舊程序的全部解壓縮文件和新程序的全部解壓縮文件之后,所述方法還包括 將所述舊程序的全部解壓縮文件按照預設結(jié)構(gòu)制作成一個打包文件;以及,將所述新程序的全部解壓縮文件按照預設結(jié)構(gòu)制作成一個打包文件; 其中,全部解壓縮文件中包括文件和目錄,所述預設結(jié)構(gòu)包括用于控制文件或目錄層次的字段、用于區(qū)分文件和目錄的字段、用于記錄文件名或目錄名的字段、用于記錄文件名或目錄名長度的字段、用于記錄文件長度的字段以及用于記錄所述文件長度對應的字符串的字段; 相應的,所述根據(jù)所述舊程序的全部解壓縮文件以及所述新程序的全部解壓縮文件,獲得將所述舊程序升級為所述新程序的軟件升級包,包括 根據(jù)所述舊程序的打包文件和所述新程序的打包文件獲得將所述舊程序升級為所述新程序的軟件升級包。
8.一種軟件程序的升級方法,其特征在于,包括 根據(jù)獲得的軟件升級包及舊程序的全部解壓縮文件計算新打包文件,所述獲得的軟件升級包為利用所述權利要求I至7中任一項所述的軟件升級包的制作方法制作生成的軟件升級包; 對所述新打包文件進行解包,將解包后的新打包文件壓縮得到新程序。
9.一種軟件升級包的制作裝置,其特征在于,包括 解壓模塊,用于獲得舊程序的全部解壓縮文件和新程序的全部解壓縮文件; 獲得模塊,用于根據(jù)所述舊程序的全部解壓縮文件以及所述新程序的全部解壓縮文件,獲得將所述舊程序升級為所述新程序的軟件升級包。
10.根據(jù)權利要求9所述的裝置,其特征在于,所述解壓模塊包括 舊程序解壓單元,用于將舊程序解壓縮,得到所述舊程序的壓縮文件;將所述舊程序的壓縮文件解壓縮,得到舊程序的全部解壓縮文件; 新程序解壓單元,用于將新程序解壓縮,得到所述新程序的壓縮文件;將所述新程序的壓縮文件解壓縮,得到新程序的全部解壓縮文件。
11.根據(jù)權利要求9或10中任一項所述的裝置,其特征在于,所述軟件升級包包括控制區(qū)、相同區(qū)和差異區(qū),所述獲得模塊包括 匹配單元,用于將舊程序的全部解壓縮文件以及所述舊程序的全部解壓縮文件之間進行最長公共前綴匹配,得到匹配結(jié)果,所述匹配結(jié)果包括至少一個匹配內(nèi)容和至少一個不匹配內(nèi)容; 構(gòu)造單元,用于將每個匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮,壓縮后的匹配內(nèi)容作為所述軟件升級包中相同區(qū)的內(nèi)容;將每個不匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮,壓縮后的不匹配內(nèi)容作為軟件升級包中差異區(qū)的內(nèi)容;對于所述相同區(qū)的內(nèi)容的差分動作和所述差異區(qū)的內(nèi)容的差分動作,均記錄在所述軟件升級包中的控制區(qū)。
12.根據(jù)權利要求11所述的裝置,其特征在于,所述獲得模塊還包括 壓縮單元,用于對于每個匹配單元匹配的內(nèi)容執(zhí)行如下動作 將舊程序的全部解壓縮文件中相應于所述匹配內(nèi)容的部分,與新程序的全部解壓縮文件中相應于所述匹配內(nèi)容的部分按字節(jié)相減,得到新的字符串; 相應的,所述構(gòu)造單元用于將每個新的字符串及其對應的長度進行數(shù)據(jù)壓縮;壓縮后的內(nèi)容作為所述軟件升級包中相同區(qū)的內(nèi)容;將每個不匹配內(nèi)容及其對應的長度進行數(shù)據(jù)壓縮,壓縮后的不匹配內(nèi)容作為軟件升級包中差異區(qū)的內(nèi)容;對于所述相同區(qū)的內(nèi)容的差分動作和所述差異區(qū)的內(nèi)容的差分動作,均記錄在所述軟件升級包中的控制區(qū)。
13.根據(jù)權利要求11所述的裝置,其特征在于,所述獲得模塊還包括索引單元,用于將所述舊程序的全部解壓縮文件按字節(jié)索引; 相應的,所述匹配單元用于將按字節(jié)索引后的所述舊程序的全部解壓縮文件,以及所述舊程序的全部解壓縮文件之間進行最長公共前綴匹配。
14.根據(jù)權利要求9或10中任一項所述的裝置,其特征在于,所述解壓模塊還包括打包單元,用于將所述舊程序的全部解壓縮文件按照預設結(jié)構(gòu)制作成一個打包文件;以及,將所述新程序的全部解壓縮文件按照預設結(jié)構(gòu)制作成一個打包文件;其中,全部解壓縮文件中包括文件和目錄,所述預設結(jié)構(gòu)包括用于控制文件或目錄層次的字段、用于區(qū)分文件和目錄的字段、用于記錄文件名或目錄名的字段、用于記錄文件名或目錄名長度的字段、用于記錄文件長度的字段以及用于記錄所述文件長度對應的字符串的字段;相應的,所述解壓模塊用于根據(jù)所述舊程序的打包文件和所述新程序的打包文件獲得將所述舊程序升級為所述新程序的軟件升級包。
15.一種用戶設備,其特征在于,包括軟件升級裝置; 所述軟件升級裝置用于根據(jù)獲得的軟件升級包及舊程序的全部解壓縮文件計算新打包文件,所述獲得的軟件升級包為利用所述軟件升級包的制作方法制作生產(chǎn)的軟件升級包;對所述新打包文件進行解包,將解包后的新打包文件壓縮得到新程序。
全文摘要
本發(fā)明提供一種軟件升級包的制作方法及裝置、程序的升級方法及設備,其中,軟件升級包的制作方法包括獲得舊程序的全部解壓縮文件和新程序的全部解壓縮文件;根據(jù)所述舊程序的全部解壓縮文件以及所述新程序的全部解壓縮文件,獲得將所述舊程序升級為所述新程序的軟件升級包。根據(jù)新、舊程序的全部解壓縮文件之間的相同和不同進行軟件升級包的制作,極大減少了軟件升級包的大小,節(jié)約了在線獲取軟件升級包消耗的網(wǎng)絡流量和費用,減少了服務提供方的下載壓力。
文檔編號G06F9/445GK102831001SQ20121033461
公開日2012年12月19日 申請日期2012年9月11日 優(yōu)先權日2012年9月11日
發(fā)明者黨志立 申請人:北京百納威爾科技有限公司