專利名稱:一種軟件包版本遷移的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別涉及一種軟件包版本遷移的方法及裝置。
背景技術(shù):
為了讓一款軟件能在軟件流平臺上運行,需要對它的數(shù)據(jù)(包括文件和注冊表) 進(jìn)行處理,最終會生成一個組織的數(shù)據(jù)集合(現(xiàn)在是一個目錄),這個數(shù)據(jù)集合稱之為軟件包。因而,可以將軟件包理解為是指具有特定的功能,用來完成特定任務(wù)的一個程序或一組程序。新版本軟件包/舊版本軟件包是一個相對概念,對應(yīng)一款軟件的新版本和舊版本。目前,當(dāng)一款軟件有新版本時,會制作新版本軟件包,并在服務(wù)器端部署,以使客戶端能使用這個軟件包的新版本;如果客戶端是第一次運行這款軟件,它就會直接使用新版本軟件包,這沒有問題;如果客戶端本地緩存中已經(jīng)有這款軟件的舊版本軟件包時,就會有兩種選擇1.它不想廢棄已經(jīng)下載的數(shù)據(jù),依舊使用舊版本軟件包;2.它直接使用新版本軟件包,所有數(shù)據(jù)都要重新下載;其中,選擇1是回避了遷移,用戶就不能使用這個軟件的新功能,選擇2是全部重新下載該軟件包,不但費時,而且軟件的運行體驗不好??梢?,在現(xiàn)有技術(shù)中,軟件包遷移是一個經(jīng)常遇到的問題,而每次軟件包遷移操作的效率都很低、遷移的速度很慢,沒有一種很好的解決軟件遷移的方法。
發(fā)明內(nèi)容
本發(fā)明實施例中提供了一種軟件包版本遷移的方法及裝置,使軟件包版本遷移操作效率高、遷移速度快。本發(fā)明實施例提供了一種軟件包版本遷移的方法,包括制作摘要值文件;當(dāng)需要軟件包版本遷移時,獲取新版本軟件包對應(yīng)的第二摘要值文件;解析本地已存儲舊版本軟件包對應(yīng)的第一摘要值文件,依次對比所述第一摘要值文件和第二摘要值文件中各個數(shù)據(jù)塊所對應(yīng)的摘要值是否相同,若相同,則將摘要值相同的所述舊版本軟件包中的數(shù)據(jù)塊遷移到新版本軟件包中,若不相同,則下載新版本軟件包中摘要值不同的數(shù)據(jù)塊。其中,所述制作摘要文件的步驟包括將軟件包劃分為一個以上的數(shù)據(jù)塊,對每個數(shù)據(jù)塊分別計算出一摘要值,將所述數(shù)據(jù)塊和該數(shù)據(jù)塊對應(yīng)的摘要值的對應(yīng)保存到一摘要值文件中。其中,所述摘要值通過MD5算法獲得,或者,通過SHA-I算法獲得。其中,所述劃分?jǐn)?shù)據(jù)塊的方式包括按照已設(shè)定的數(shù)據(jù)大小劃分?jǐn)?shù)據(jù)塊;或者;按照數(shù)據(jù)的類型劃分?jǐn)?shù)據(jù)塊。其中,所述新版本軟件包對應(yīng)的第二摘要值文件通過下載并解析獲取。
其中,遷移和下載完畢后,所述方法還包括刪除本地的舊版本軟件包。本發(fā)明實施例還提供了一種軟件包版本遷移的裝置,所述裝置包括制作單元,用于制作摘要值文件;第二摘要值文件獲取單元,用于當(dāng)需要軟件包版本遷移時,獲取新版本軟件包對應(yīng)的第二摘要值文件;摘要值對比單元,用于解析本地已存儲舊版本軟件包對應(yīng)的第一摘要值文件,依次對比所述第一摘要值文件和第二摘要值文件中各個數(shù)據(jù)塊所對應(yīng)的摘要值是否相同,若相同,則通知遷移單元;若不相同,則通知下載單元;遷移單元,用于將摘要值相同的所述舊版本軟件包中的數(shù)據(jù)塊遷移到新版本軟件包中;下載單元,用于下載新版本軟件包中摘要值不同的數(shù)據(jù)塊;其中,所述制作單元包括劃分單元,用于將軟件包劃分為一個以上的數(shù)據(jù)塊;計算單元,用于對每個數(shù)據(jù)塊分別計算出一摘要值;保存單元,用于將所述數(shù)據(jù)塊和該數(shù)據(jù)塊對應(yīng)的摘要值的對應(yīng)保存到一摘要值文件中。其中,所述摘要值通過MD5算法獲得,或者,通過SHA-I算法獲得。
其中,所述裝置還包括刪除單元,用于遷移和下載完畢后,所述方法還包括刪除本地的舊版本軟件包。應(yīng)用本申請實施例所提供的軟件包版本遷移的方法及裝置,有效的利用了本地存儲的數(shù)據(jù),避免了新版軟件包數(shù)據(jù)的全部下載,提高了軟件包遷移的操作效率,以及遷移速度,改善了用戶的應(yīng)用體驗;而且,本申請實施例中對相同數(shù)據(jù)的判斷不是停留在文件一級,而是深入到文件內(nèi)部,把一個文件劃分為若干個數(shù)據(jù)塊,以數(shù)據(jù)塊為單位作比較,極大的提高了數(shù)據(jù)的復(fù)用率。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是根據(jù)本發(fā)明實施例的一種軟件包版本遷移的方法流程圖;圖2是根據(jù)本發(fā)明實施例的一種軟件包版本遷移的裝置結(jié)構(gòu)示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。現(xiàn)有技術(shù)中,沒有深入地分析軟件包遷移的特征,該特性通常是,軟件包的一次遷移只有很少的數(shù)據(jù)需要改變,不同版本之間很多數(shù)據(jù)是相同的,尤其是相鄰的幾個版本之間,相同的數(shù)據(jù)量會更大。基于上述軟件包遷移的特性,本發(fā)明實施例提供了一種軟件包版本遷移的方法, 參見圖1,具體包括步驟101,制作摘要值文件;其中,制作摘要值文件的步驟可以包括將軟件包劃分為一個以上的數(shù)據(jù)塊,對每個數(shù)據(jù)塊分別計算出一摘要值,將所述數(shù)據(jù)塊和該數(shù)據(jù)塊對應(yīng)的摘要值的對應(yīng)保存到一摘要值文件中。需要說明的是,上述劃分?jǐn)?shù)據(jù)塊的方式可以是按照已設(shè)定的數(shù)據(jù)大小劃分?jǐn)?shù)據(jù)塊,例如,預(yù)先設(shè)定數(shù)據(jù)塊大小為4k,這樣,一個文件的0-4k就是第一個數(shù)據(jù)塊,4-8k就是第二個數(shù)據(jù)塊,……;還可以是按照數(shù)據(jù)的類型劃分?jǐn)?shù)據(jù)塊,本申請實施例中并不對數(shù)據(jù)塊的具體劃分方式進(jìn)行限定。上述摘要值文件可以以一個列表的形式存在,也可以以一個數(shù)組的形式存在,本申請實施例中,并不對摘要值文件的存在形式做限定。例如,當(dāng)摘要值文件以列表的形式存在是,可以包括數(shù)據(jù)塊編號、以及該編號對應(yīng)的摘要值。具體而言,一種制作摘要值文件的可能實現(xiàn)方式是,遍歷軟件包的所有文件生成一個摘要值文件,這個摘要值文件由一條條的摘要值記錄組成,每條記錄對應(yīng)這個軟件包中的一個文件的一個數(shù)據(jù)塊,每條摘要值是由這個數(shù)據(jù)塊的數(shù)據(jù)作為輸入計算出來的摘要值。此時,該摘要值文件中包括數(shù)據(jù)塊編號、該數(shù)據(jù)塊所屬的文件名、以及該編號對應(yīng)的摘要值。步驟102,當(dāng)需要軟件包版本遷移時,獲取新版本軟件包對應(yīng)的第二摘要值文件;這里,上述新版本軟件包對應(yīng)的第二摘要值文件可以通過下載并解析獲取。步驟103,解析本地已存儲舊版本軟件包對應(yīng)的第一摘要值文件,依次對比所述第一摘要值文件和第二摘要值文件中各個數(shù)據(jù)塊所對應(yīng)的摘要值是否相同,若相同,則執(zhí)行步驟104,若不相同,則執(zhí)行步驟105 ;需要說明的是,本申請實施例中的舊版本軟件包通常存儲于緩存中。步驟104,將摘要值相同的所述舊版本軟件包中的數(shù)據(jù)塊遷移到新版本軟件包中, 結(jié)束;其中,所述遷移可以不同目錄下的遷移,也可以是數(shù)據(jù)塊本身的遷移,即只要讓所需要的數(shù)據(jù)塊在新版本軟件包的目錄下即可,本發(fā)明實施例對遷移的具體實現(xiàn)過程不做限定。步驟105,下載新版本軟件包中摘要值不同的數(shù)據(jù)塊,結(jié)束。這里,下載數(shù)據(jù)塊的過程可以采用現(xiàn)有的任何下載方式,例如,可以采用現(xiàn)有的前臺下載、后臺下載等下載方式,還可以采用流技術(shù)方式進(jìn)行下載。也就是說,本申請實施例所提供的方法可以應(yīng)用于非流技術(shù)中,也可以應(yīng)用于流技術(shù)中。所謂采用流技術(shù)方式下載是指,客戶端若想讀取某數(shù)據(jù)文件或者某數(shù)據(jù)文件中的某部分內(nèi)容,則在客戶端檢測到讀取請求后,檢查待讀取數(shù)據(jù)在本地緩存中是否已經(jīng)存在, 若存在則從所述緩存中讀出并返回給調(diào)用者來完成此讀操作,若本地緩存中沒有,則從服務(wù)器端下載這部分?jǐn)?shù)據(jù)到本地緩存中,再返回給調(diào)用者來完成此操作。
需要說明的是,在流技術(shù)方式中,客戶端的緩存中可能包含有不完整的程序文件, 即存在下載了部分?jǐn)?shù)據(jù)的文件。而本申請實施例的關(guān)鍵是將舊版本中已經(jīng)下載到本地的數(shù)據(jù)遷移到新版本軟件包中,因此,本申請實施例中對被遷移軟件包本身的完整性并不做要求。也就是說,對于本申請實施例而言,只遷移舊版本中已經(jīng)下載到本地的數(shù)據(jù),對于舊版本中不存在的數(shù)據(jù)會從服務(wù)器端下載,兩者可以分別獨立進(jìn)行,互不影響。在流技術(shù)方式中,可以將應(yīng)用程序的程序文件和數(shù)據(jù)文件相分離保存,使用戶終端僅安裝應(yīng)用程序的程序模塊文件,而數(shù)據(jù)文件可保存在服務(wù)器端,根據(jù)用戶需要下載安裝,從而有效地減少了應(yīng)用程序的體積,節(jié)省了用戶終端的存儲空間。當(dāng)遷移和下載的操作完成后,就獲得了新版本的軟件包,實現(xiàn)了軟件包的遷移。需要說明的是,遷移和下載完畢后,本實施例所提供的方法還可以包括刪除本地的舊版本軟件包。需要說明的是,本實施例中的摘要值可以通過MD5算法獲得,也可以通過SHA-I算法獲得,本申請實施例中,并不對摘要值所采用的具體算法做限定。需要說明的是,由于本發(fā)明實施例所提供的軟件包遷移方法是先制作摘要值文件,再根據(jù)摘要值文件進(jìn)行數(shù)據(jù)塊的遷移或下載,因而其對軟件包本身并沒有任何要求,即就軟件包本身而言,其即可以是具備升級功能的軟件包,也可以是不具備升級功能的軟件包,即無論軟件包自身是否具備升級功能,其都可以根據(jù)服務(wù)器端的指示實現(xiàn)軟件包版本的轉(zhuǎn)換。而且,本發(fā)明實施例所提供的軟件包版本遷移,并不限定軟件包版本升級或降級, 因為無論是升級或降級,其實際都是軟件包版本的轉(zhuǎn)換??梢?,應(yīng)用本申請實施例所提供的軟件包版本遷移的方法,有效的利用了本地存儲的數(shù)據(jù),避免了新版軟件包數(shù)據(jù)的全部下載,提高了軟件包遷移的操作效率,以及遷移速度,改善了用戶的應(yīng)用體驗;而且,本申請實施例中對相同數(shù)據(jù)的判斷不是停留在文件一級,而是深入到文件內(nèi)部,把一個文件劃分為若干個數(shù)據(jù)塊,以數(shù)據(jù)塊為單位作比較,極大的提高了數(shù)據(jù)的復(fù)用率。本申請實施例還提供了一種軟件包版本遷移的裝置,參見圖2,所述裝置可以包括制作單元201,用于制作摘要值文件;第二摘要值文件獲取單元202,用于當(dāng)需要軟件包版本遷移時,獲取新版本軟件包對應(yīng)的第二摘要值文件;摘要值對比單元203,用于解析本地已存儲舊版本軟件包對應(yīng)的第一摘要值文件, 依次對比所述第一摘要值文件和第二摘要值文件中各個數(shù)據(jù)塊所對應(yīng)的摘要值是否相同, 若相同,則通知遷移單元;若不相同,則通知下載單元;遷移單元204,用于將摘要值相同的所述舊版本軟件包中的數(shù)據(jù)塊遷移到新版本軟件包中;下載單元205,用于下載新版本軟件包中摘要值不同的數(shù)據(jù)塊;上述制作單元202可以包括劃分單元,用于將軟件包劃分為一個以上的數(shù)據(jù)塊;計算單元,用于對每個數(shù)據(jù)塊分別計算出一摘要值;保存單元,用于將所述數(shù)據(jù)塊和該數(shù)據(jù)塊對應(yīng)的摘要值的對應(yīng)保存到一摘要值文件中。上述摘要值通過MD5算法獲得,或者,通過SHA-I算法獲得。上述裝置還可以包括刪除單元(圖2未示),用于遷移和下載完畢后,所述方法還包括刪除本地的舊版本軟件包??梢?,應(yīng)用本申請實施例所提供的軟件包版本遷移的裝置,有效的利用了本地存儲的數(shù)據(jù),避免了新版軟件包數(shù)據(jù)的全部下載,提高了軟件包遷移的操作效率,以及遷移速度,改善了用戶的應(yīng)用體驗;而且,本申請實施例中對相同數(shù)據(jù)的判斷不是停留在文件一級,而是深入到文件內(nèi)部,把一個文件劃分為若干個數(shù)據(jù)塊,以數(shù)據(jù)塊為單位作比較,極大的提高了數(shù)據(jù)的復(fù)用率。對于裝置實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述方法實施方式中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計算機(jī)可讀取存儲介質(zhì)中, 這里所稱得的存儲介質(zhì),如R0M/RAM、磁碟、光盤等。以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種軟件包版本遷移的方法,其特征在于,包括制作摘要值文件; 當(dāng)需要軟件包版本遷移時,獲取新版本軟件包對應(yīng)的第二摘要值文件;解析本地已存儲舊版本軟件包對應(yīng)的第一摘要值文件,依次對比所述第一摘要值文件和第二摘要值文件中各個數(shù)據(jù)塊所對應(yīng)的摘要值是否相同,若相同,則將摘要值相同的所述舊版本軟件包中的數(shù)據(jù)塊遷移到新版本軟件包中,若不相同,則下載新版本軟件包中摘要值不同的數(shù)據(jù)塊。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述制作摘要文件的步驟包括將軟件包劃分為一個以上的數(shù)據(jù)塊,對每個數(shù)據(jù)塊分別計算出一摘要值,將所述數(shù)據(jù)塊和該數(shù)據(jù)塊對應(yīng)的摘要值的對應(yīng)保存到一摘要值文件中。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述摘要值通過MD5算法獲得,或者,通過 SHA-I算法獲得。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述劃分?jǐn)?shù)據(jù)塊的方式包括按照已設(shè)定的數(shù)據(jù)大小劃分?jǐn)?shù)據(jù)塊;或者;按照數(shù)據(jù)的類型劃分?jǐn)?shù)據(jù)塊。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述新版本軟件包對應(yīng)的第二摘要值文件通過下載并解析獲取。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,遷移和下載完畢后,所述方法還包括刪除本地的舊版本軟件包。
7.一種軟件包版本遷移的裝置,其特征在于,所述裝置包括 制作單元,用于制作摘要值文件;第二摘要值文件獲取單元,用于當(dāng)需要軟件包版本遷移時,獲取新版本軟件包對應(yīng)的第二摘要值文件;摘要值對比單元,用于解析本地已存儲舊版本軟件包對應(yīng)的第一摘要值文件,依次對比所述第一摘要值文件和第二摘要值文件中各個數(shù)據(jù)塊所對應(yīng)的摘要值是否相同,若相同,則通知遷移單元;若不相同,則通知下載單元;遷移單元,用于將摘要值相同的所述舊版本軟件包中的數(shù)據(jù)塊遷移到新版本軟件包中;下載單元,用于下載新版本軟件包中摘要值不同的數(shù)據(jù)塊。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述制作單元包括 劃分單元,用于將軟件包劃分為一個以上的數(shù)據(jù)塊;計算單元,用于對每個數(shù)據(jù)塊分別計算出一摘要值;保存單元,用于將所述數(shù)據(jù)塊和該數(shù)據(jù)塊對應(yīng)的摘要值的對應(yīng)保存到一摘要值文件中。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述摘要值通過MD5算法獲得,或者,通過 SHA-I算法獲得。
10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括刪除單元,用于遷移和下載完畢后,所述方法還包括刪除本地的舊版本軟件包。
全文摘要
本發(fā)明公開了一種軟件包版本遷移的方法及裝置,所述方法包括制作摘要值文件;當(dāng)需要軟件包版本遷移時,獲取新版本軟件包對應(yīng)的第二摘要值文件;解析本地已存儲舊版本軟件包對應(yīng)的第一摘要值文件,依次對比所述第一摘要值文件和第二摘要值文件中各個數(shù)據(jù)塊所對應(yīng)的摘要值是否相同,若相同,則將摘要值相同的所述舊版本軟件包中的數(shù)據(jù)塊遷移到新版本軟件包中,若不相同,則下載新版本軟件包中摘要值不同的數(shù)據(jù)塊。應(yīng)用本申請,有效的利用了本地存儲的數(shù)據(jù),避免了新版軟件包數(shù)據(jù)的全部下載,提高了軟件包遷移的操作效率,以及遷移速度,改善了用戶的應(yīng)用體驗。
文檔編號G06F9/445GK102200915SQ20101013124
公開日2011年9月28日 申請日期2010年3月22日 優(yōu)先權(quán)日2010年3月22日
發(fā)明者姜旺生, 朱熠鍔 申請人:珠海金山快快科技有限公司