軟件升級差量包獲取方法和相應(yīng)的升級方法以及裝置制造方法
【專利摘要】本發(fā)明涉及一種基于差量包的軟件升級方法,具體而言,本發(fā)明提供一種軟件升級差量包獲取方法及裝置,安裝包和升級包中彼此存在差異的同名文件以源數(shù)據(jù)形式進行差分,從而得到體積更小的差量包。相應(yīng)地,本發(fā)明還提供一種軟件更新升級方法及裝置,差量包依照升級包的zip文件內(nèi)部結(jié)構(gòu)還原升級包。本發(fā)明方案實現(xiàn)通過下載更小體積的差量包,使用戶更省流量地快速實現(xiàn)軟件的更新升級。
【專利說明】軟件升級差量包獲取方法和相應(yīng)的升級方法以及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及基于差量包的應(yīng)用軟件升級,具體而言,本發(fā)明涉及軟件升級差量包 獲取方法和相應(yīng)的升級方法以及裝置。
【背景技術(shù)】
[0002] 隨著移動互聯(lián)網(wǎng)行業(yè)的不斷發(fā)展,移動終端的應(yīng)用程序越來越多,版本不斷更新, 用戶需要不斷進行相應(yīng)的應(yīng)用軟件升級才能保證軟件的安全性和穩(wěn)定性。當(dāng)應(yīng)用軟件有升 級版本時,就需要下載安裝更高版本的升級包,高版本的升級包通常體積較大,而完整下載 升級包會使用戶消耗較多流量,等待更長的下載時間,同時也會消耗更多網(wǎng)絡(luò)資源以及本 地文件的輸入輸出資源。
[0003] 現(xiàn)有技術(shù)為了解決上述問題,通常采用差分算法直接對安裝包和升級包進行二進 制差分,其中常用的差分算法有xdelta3、bsdiff、courgette,生成表征兩者差異的差量包, 用戶通過下載較小體積的差量包完成軟件升級。申請?zhí)枮?01310642252. X的發(fā)明專利公 開了一種應(yīng)用軟件升級的方法及裝置,采用對安裝包和升級包進行二進制差分的方法得到 增量升級包,客戶端通過下載匹配的增量升級包還原得到升級包。然而隨著軟件包的不斷 更新升級,更小體積的差量包能夠更好地滿足應(yīng)用軟件頻繁更新升級的需求,因此本發(fā)明 提供了生成更小體積的差量包方法以及相應(yīng)的軟件升級方法,可以使用戶更省流量地進行 頻繁軟件更新,從而縮小軟件的漏洞窗口,使用戶更加安全地使用應(yīng)用軟件,并且對于連接 不穩(wěn)定的用戶來說,更小體積的升級包會更有利于更新升級。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的首要目的在于解決上述的至少一個問題,從而提供一種軟件升級差量包 獲取方法,以便生成體積更小的升級差量包。
[0005] 本發(fā)明的另一目的在于與前一目的相應(yīng),而提供一種升級方法,以利用該差量包 實現(xiàn)軟件升級。
[0006] 為實現(xiàn)本發(fā)明的上述目的,本發(fā)明采用如下技術(shù)方案:
[0007] 本發(fā)明提供了一種軟件升級差量包獲取方法,所述方法包括:
[0008] 解析安裝包和升級包內(nèi)部結(jié)構(gòu),確定彼此存在差異的同名文件及升級包相對于安 裝包的新增文件,并生成記錄該些文件位置信息的配置文件;
[0009] 記錄升級包的所有內(nèi)部結(jié)構(gòu)信息,生成元數(shù)據(jù)文件;
[0010] 解壓縮安裝包和升級包的所述存在差異的同名文件,將兩者的所述存在差異的同 名文件以源數(shù)據(jù)形式對應(yīng)進行差分以獲得差量數(shù)據(jù)文件;
[0011] 壓縮所述配置文件、元數(shù)據(jù)文件、差量數(shù)據(jù)文件以及所述新增文件,獲得所述升級 差量包。
[0012] 具體的,所述配置文件包括差量配置文件和合并配置文件,其中:
[0013] 所述差量配置文件,用于記錄安裝包的所述存在差異的同名文件的位置信息;
[0014] 所述合并配置文件,用于記錄升級包的所述存在差異的同名文件和所述新增文件 的位置信息。
[0015] 進一步,所述合并配置文件還包括用于記錄升級包的相對于安裝包無差異的同名 文件的位置信息。
[0016] 進一步,所述軟件差量包獲取方法還包括以下步驟:
[0017] 通過多次嘗試獲取與升級包匹配的壓縮參數(shù),并記錄于所述合并配置文件中;
[0018] 采用所述適配壓縮參數(shù)對所述差量數(shù)據(jù)文件的差量數(shù)據(jù)壓縮。
[0019] 具體的,所述元數(shù)據(jù)文件包括所述升級包內(nèi)部結(jié)構(gòu)中的中央目錄、中央目錄結(jié)束 標(biāo)識以及每個文件的局部文件頭、數(shù)據(jù)描述符。
[0020] 本發(fā)明提供一種軟件升級差量包獲取裝置,包括:
[0021 ] 配置文件生成單元,用于生成記錄安裝包和升級包彼此存在差異的同名文件以及 升級包新增文件的位置信息;
[0022] 元數(shù)據(jù)文件生成單元,用于記錄升級包的所有內(nèi)部結(jié)構(gòu)信息;
[0023] 差分單元,用于計算安裝包和升級包中彼此存在差異的同名文件之間的差異;
[0024] 壓縮單元,用于對文件數(shù)據(jù)進行壓縮和解壓縮。
[0025] 進一步,所述裝置還包括:
[0026] 適配單元,用于適配與升級包匹配的壓縮參數(shù)。
[0027] 具體的,所述配置文件包括差量配置文件和合并配置文件,其中:
[0028] 所述差量配置文件,用于記錄安裝包的所述存在差異的同名文件的位置信息;
[0029] 所述合并配置文件,用于記錄升級包的所述存在差異的同名文件和所述新增文件 的位置信息。
[0030] 進一步,所述合并配置文件還包括用于記錄升級包的相對于安裝包無差異的同名 文件的位置信息。
[0031] 進一步,所述合并配置文件還包括與升級包匹配的適配壓縮參數(shù)。
[0032] 具體的,所述元數(shù)據(jù)文件包括所述升級包內(nèi)部結(jié)構(gòu)中的中央目錄、中央目錄結(jié)束 標(biāo)識以及每個文件的局部文件頭、數(shù)據(jù)描述符。
[0033] 相應(yīng)地,本發(fā)明還提供一種軟件更新升級方法,所述方法包括:
[0034] 解壓縮差量包,獲取其所包含的配置文件、元數(shù)據(jù)文件、差量數(shù)據(jù)文件以及新增文 件;
[0035] 從安裝包中獲取相應(yīng)記錄于配置文件的第一文件位置信息,將所述差量數(shù)據(jù)文件 與所述第一文件對應(yīng)以源數(shù)據(jù)形式合并以獲得源數(shù)據(jù)形式的升級后的第一文件;
[0036] 依據(jù)配置文件所記錄的文件位置信息,將所述元數(shù)據(jù)文件、新增文件、第一文件以 及所述安裝包中的其余相關(guān)文件還原為升級包;
[0037] 安裝該升級包。
[0038] 具體的,所述配置文件包括差量配置文件和合并配置文件,其中:
[0039] 所述差量配置文件,用于記錄安裝包的所述存在差異的同名文件的位置信息;
[0040] 所述合并配置文件,用于記錄升級包的所述存在差異的同名文件和所述新增文件 的位置信息。
[0041] 進一步,所述合并配置文件還包括用于記錄升級包的相對于安裝包無差異的同名 文件的位置信息。
[0042] 具體的,所述第一文件具體指安裝包的相對于升級包存在差異的同名文件。
[0043] 具體的,所述安裝包中的其余相關(guān)文件具體指安裝包中相對于升級包無差異的同 名文件。
[0044] 進一步,所述還原升級包過程還包括,對安裝包中相對于升級包壓縮方式不同的 同名文件的數(shù)據(jù)進行重壓縮。
[0045] 具體的,所述重壓縮采用記錄于所述合并配置文件中的與升級包匹配的壓縮參 數(shù)。
[0046] 具體的,所述元數(shù)據(jù)文件包括所述升級包內(nèi)部結(jié)構(gòu)中的中央目錄、中央目錄結(jié)束 標(biāo)識以及每個文件的局部文件頭、數(shù)據(jù)描述符。
[0047] 本發(fā)明提供一種軟件更新升級裝置,包括:
[0048] 壓縮單元,用于解壓縮差量包以獲取其包含的配置文件、元數(shù)據(jù)文件、差量數(shù)據(jù)文 件以及新增文件;
[0049] 合并單元,用于以源數(shù)據(jù)形式合并安裝包中對應(yīng)于升級包存在差異的同名文件和 差量數(shù)據(jù)文件;
[0050] 還原升級包單元,用于依照配置文件中的合并配置文件還原升級包;
[0051 ] 安裝單元,用于安裝還原得到的升級包。
[0052] 具體的,所述配置文件包括差量配置文件和合并配置文件,其中:
[0053] 所述差量配置文件,用于記錄安裝包的所述存在差異的同名文件的位置信息;
[0054] 所述合并配置文件,用于記錄升級包的所述存在差異的同名文件和所述新增文件 的位置信息。
[0055] 進一步,所述合并配置文件還包括用于記錄升級包的相對于安裝包無差異的同名 文件的位置信息。
[0056] 具體的,所述元數(shù)據(jù)文件包括所述升級包內(nèi)部結(jié)構(gòu)中的中央目錄、中央目錄結(jié)束 標(biāo)識以及每個文件的局部文件頭、數(shù)據(jù)描述符。
[0057] 具體的,所述壓縮單元對安裝包中相對于升級包壓縮方式不同的同名文件的數(shù)據(jù) 進行重壓縮。
[0058] 進一步,所述壓縮單元采用記錄于所述合并配置文件中的與升級包匹配的壓縮參 數(shù)。
[0059] 相比現(xiàn)有技術(shù),本發(fā)明具有如下優(yōu)點:
[0060] 1、本發(fā)明的差量包獲取方法,由于將安裝包和升級包的彼此存在差異的同名文件 以源數(shù)據(jù)形式對應(yīng)進行差分,對未編碼重排的源數(shù)據(jù)差分生成較短字節(jié)的差異數(shù)據(jù),得到 體積更小的差量包,從而使用戶能夠更省流量地快速完成軟件更新升級。
[0061] 2、本發(fā)明的軟件更新升級方法中的合并方案采用重組zip文件內(nèi)部結(jié)構(gòu)的方式, 將表征升級包內(nèi)部結(jié)構(gòu)信息的元數(shù)據(jù)文件和升級包內(nèi)部所需的文件數(shù)據(jù),按照已記錄的文 件數(shù)據(jù)在升級包內(nèi)部的位置信息,進行重組還原升級包。該方法得到的升級包與原升級包 完全一致,不存在任何誤差,方便后續(xù)更高版本升級包的無誤差連續(xù)升級。
[0062] 3、本發(fā)明的配置文件記錄安裝包和升級包中本發(fā)明所需文件的位置信息,可以快 速提取所需安裝包和升級包的文件,更重要的是,可以據(jù)此配置文件提供的位置信息還原 升級包,得到與原升級包無差別的升級包。
[0063] 本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,這些將從下面的描述中變 得明顯,或通過本發(fā)明的實踐了解到。
【專利附圖】
【附圖說明】
[0064] 本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描述中將變 得明顯和容易理解,其中:
[0065] 圖1為本發(fā)明的軟件升級差量包獲取方法的原理框圖 [0066] 圖2為本發(fā)明的軟件更新升級方法的原理框圖 [0067] 圖3為本發(fā)明的軟件升級差量包獲取裝置的原理框圖 [0068] 圖4為本發(fā)明的軟件更新升級裝置的原理框圖
【具體實施方式】
[0069] 下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出。以下通過參考 附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
[0070] 本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù) 術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng) 該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中 的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含 義來解釋。
[0071] 本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明所稱的"應(yīng)用"、"應(yīng)用程序"、"應(yīng)用軟件"以及類 似表述的概念,是業(yè)內(nèi)技術(shù)人員所公知的相同概念,是指由一系列計算機指令及相關(guān)數(shù)據(jù) 資源有機構(gòu)造的適于電子運行的計算機軟件。除非特別指定,這種命名本身不受編程語言 種類、級別,也不受其賴以運行的操作系統(tǒng)或平臺所限制。理所當(dāng)然地,此類概念也不受任 何形式的終端所限制。
[0072] 本發(fā)明以Android系統(tǒng)的終端設(shè)備作為實施例的環(huán)境對本發(fā)明進行詳細描述, 但本發(fā)明的實施不局限于Android操作系統(tǒng),本領(lǐng)域的技術(shù)人員可以合理地預(yù)見,諸如 Linux、Windows等操作系統(tǒng),只要其安裝的應(yīng)用程序包為zip文件結(jié)構(gòu),就可以適用于本發(fā) 明所構(gòu)思的所有方案,因此,本領(lǐng)域技術(shù)人員應(yīng)知曉該應(yīng)用上的變通。以下,將對本發(fā)明所 有方案 進行詳細介紹:
[0073] 請參閱圖1,其揭示了本發(fā)明軟件升級差量包獲取方法的實現(xiàn)原理,包括以下步 驟:
[0074] Sll :解析安裝包和升級包內(nèi)部結(jié)構(gòu),確定彼此存在差異的同名文件及升級包相對 于安裝包的新增文件,并生成記錄該些文件位置信息的配置文件
[0075] zip文件結(jié)構(gòu)主要由三部分組成,包括中央目錄、中央目錄結(jié)束標(biāo)識以及壓縮源文 件。其中中央目錄由多個子目錄組成,每一個子目錄對應(yīng)一個壓縮目錄源數(shù)據(jù),記錄該子目 錄的描述信息。參見表1,其內(nèi)部結(jié)構(gòu)如下表所示:
[0076]
【權(quán)利要求】
1. 一種軟件升級差量包獲取方法,其特征在于,包括以下步驟: 解析安裝包和升級包內(nèi)部結(jié)構(gòu),確定彼此存在差異的同名文件及升級包相對于安裝包 的新增文件,并生成記錄該些文件位置信息的配置文件; 記錄升級包的所有內(nèi)部結(jié)構(gòu)信息,生成元數(shù)據(jù)文件; 解壓縮安裝包和升級包的所述存在差異的同名文件,將兩者的所述存在差異的同名文 件以源數(shù)據(jù)形式對應(yīng)進行差分以獲得差量數(shù)據(jù)文件; 壓縮所述配置文件、元數(shù)據(jù)文件、差量數(shù)據(jù)文件以及所述新增文件,獲得所述升級差量 包。
2. 根據(jù)權(quán)利要求1所述的軟件升級差量包獲取方法,其特征在于,所述配置文件包括 差量配置文件和合并配置文件,其中: 所述差量配置文件,用于記錄安裝包的所述存在差異的同名文件的位置信息; 所述合并配置文件,用于記錄升級包的所述存在差異的同名文件和所述新增文件的位 置信息。
3. 根據(jù)權(quán)利要求2所述的軟件差量包獲取方法,其特征在于,所述合并配置文件還包 括用于記錄升級包的相對于安裝包無差異的同名文件的位置信息。
4. 根據(jù)權(quán)利要求1所述的軟件差量包獲取方法,其特征在于,還包括以下步驟: 通過多次嘗試獲取與升級包匹配的壓縮參數(shù),并記錄于所述合并配置文件中; 采用所述適配壓縮參數(shù)對所述差量數(shù)據(jù)文件的差量數(shù)據(jù)壓縮。
5. 根據(jù)權(quán)利要求1所述的軟件升級差量包獲取方法,其特征在于,所述元數(shù)據(jù)文件包 括所述升級包內(nèi)部結(jié)構(gòu)中的中央目錄、中央目錄結(jié)束標(biāo)識以及每個文件的局部文件頭、數(shù) 據(jù)描述符。
6. -種軟件升級差量包獲取裝置,其特征在于,包括: 配置文件生成單元,用于生成記錄安裝包和升級包彼此存在差異的同名文件以及升級 包新增文件的位置信息; 元數(shù)據(jù)文件生成單元,用于記錄升級包的所有內(nèi)部結(jié)構(gòu)信息; 差分單元,用于計算安裝包和升級包中彼此存在差異的同名文件之間的差異; 壓縮單元,用于對文件數(shù)據(jù)進行壓縮和解壓縮。
7. -種軟件更新升級方法,其特征在于,包括以下步驟: 解壓縮差量包,獲取其所包含的配置文件、元數(shù)據(jù)文件、差量數(shù)據(jù)文件以及新增文件; 從安裝包中獲取相應(yīng)記錄于配置文件的第一文件位置信息,將所述差量數(shù)據(jù)文件與所 述第一文件對應(yīng)以源數(shù)據(jù)形式合并以獲得源數(shù)據(jù)形式的升級后的第一文件; 依據(jù)配置文件所記錄的文件位置信息,將所述元數(shù)據(jù)文件、新增文件、第一文件以及所 述安裝包中的其余相關(guān)文件還原為升級包; 安裝該升級包。
8. 根據(jù)權(quán)利要求12所述的軟件更新升級方法,其特征在于,所述配置文件包括差量配 置文件和合并配置文件,其中: 所述差量配置文件,用于記錄安裝包的所述存在差異的同名文件的位置信息; 所述合并配置文件,用于記錄升級包的所述存在差異的同名文件和所述新增文件的位 置信息。
9. 根據(jù)權(quán)利要求12所述的軟件更新升級方法,其特征在于,所述第一文件具體指安裝 包的相對于升級包存在差異的同名文件。
10. -種軟件更新升級裝置,其特征在于,包括: 壓縮單元,用于解壓縮差量包以獲取其包含的配置文件、元數(shù)據(jù)文件、差量數(shù)據(jù)文件以 及新增文件; 合并單元,用于以源數(shù)據(jù)形式合并安裝包中對應(yīng)于升級包存在差異的同名文件和差量 數(shù)據(jù)文件; 還原升級包單元,用于依照配置文件中的合并配置文件還原升級包; 安裝單元,用于安裝還原得到的升級包。
【文檔編號】G06F9/445GK104391728SQ201410773855
【公開日】2015年3月4日 申請日期:2014年12月12日 優(yōu)先權(quán)日:2014年12月12日
【發(fā)明者】田野, 李寶生, 韓三普, 李昀臻 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司