升級(jí)包、升級(jí)請(qǐng)求的處理方法及裝置制造方法
【專利摘要】本發(fā)明涉及一種升級(jí)包、升級(jí)請(qǐng)求的處理方法及裝置,其中,軟件升級(jí)包的處理方法包括:確定當(dāng)前基線版本,生成所述當(dāng)前基線版本以及當(dāng)前基線版本之后的已有版本到最新版本的增量升級(jí)包。升級(jí)請(qǐng)求的處理方法,包括:接收客戶端的升級(jí)請(qǐng)求,將客戶端軟件的版本與當(dāng)前基線版本進(jìn)行比較,如果所述客戶端軟件的版本等于或者高于所述當(dāng)前基線版本,則向所述客戶端發(fā)送所述客戶端軟件的版本到最新版本的增量升級(jí)包,如果所述客戶端軟件的版本低于所述當(dāng)前基線版本,則向所述客戶端發(fā)送所述最新版本的全量升級(jí)包。通過本發(fā)明的技術(shù)方案,減少了服務(wù)器制作、存儲(chǔ)和管理增量升級(jí)包的數(shù)量,提高了服務(wù)器的資源利用率。
【專利說明】升級(jí)包、升級(jí)請(qǐng)求的處理方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及軟件升級(jí)技術(shù),尤其涉及一種軟件升級(jí)包和升級(jí)請(qǐng)求的處理方法及實(shí) 現(xiàn)所述方法的裝置。
【背景技術(shù)】
[0002] 隨著計(jì)算機(jī)軟件體積的不斷增大以及軟件版本發(fā)布的不斷更迭,客戶端軟件升級(jí) 成了一個(gè)問題。為此人們發(fā)明了增量升級(jí)方法。增量升級(jí)的原理是首先將軟件的舊版本的 安裝包與新版本安裝包做差分,生成一個(gè)增量升級(jí)包(也可以稱作補(bǔ)丁包),例如舊版本的 安裝包有5M,新版本的安裝包有8M,更新的部分則可能只有3M左右,然后,在升級(jí)時(shí)只需要 下載更新的部分即可,這樣可以很大程度上減少流量的損失。用戶下載了增量升級(jí)包之后, 需要在客戶端將他們組合起來。一般的做法是先將舊版本軟件的安裝包,復(fù)制到一個(gè)臨時(shí) 目錄下,將該舊版本軟件的安裝包與獲得的增量升級(jí)包進(jìn)行組合,得到新版本軟件的安裝 包。然后,客戶端通過組合后生成的新版本安裝包進(jìn)行升級(jí)安裝。
[0003] 增量升級(jí)的方法可以節(jié)省用戶的流量,但是同時(shí)也引入了增量升級(jí)包的管理問 題。在現(xiàn)有技術(shù)中,對(duì)于增量升級(jí)包的管理存在以下兩種模式:
[0004] 1)在服務(wù)器端動(dòng)態(tài)制作增量升級(jí)包,即服務(wù)器端不預(yù)先存儲(chǔ),而是根據(jù)客戶端的 升級(jí)請(qǐng)求臨時(shí)制作增量升級(jí)包,這種方式對(duì)于服務(wù)器的性能要求較高,會(huì)占用較多服務(wù)器 的資源,而且如果請(qǐng)求升級(jí)的軟件較大,生成增量升級(jí)包需要耗費(fèi)很長的時(shí)間,會(huì)直接影響 客戶端軟件的響應(yīng)速度。
[0005] 2)將所有的增量升級(jí)包都存放在服務(wù)器端,即事先針對(duì)所有版本制作升級(jí)包,即 需要對(duì)每個(gè)版本的安裝包進(jìn)行差分,生成各個(gè)版本到最新版本的增量升級(jí)包,并預(yù)先存儲(chǔ) 在服務(wù)器中,然后根據(jù)客戶端的請(qǐng)求,發(fā)送對(duì)應(yīng)的增量升級(jí)包。對(duì)于這種方式,隨著版本的 迭代,會(huì)造成大量的冗余數(shù)據(jù),尤其是當(dāng)版本更新較為頻繁時(shí),會(huì)給服務(wù)器造成巨大的存儲(chǔ) 和數(shù)據(jù)管理的負(fù)擔(dān)。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明實(shí)施例的目的在于,提出一種軟件升級(jí)包和升級(jí)請(qǐng)求的處理方法及實(shí)現(xiàn)所 述方法的裝置,以減少服務(wù)器端的存儲(chǔ)和管理增量升級(jí)包的負(fù)擔(dān)。
[0007] 為了實(shí)現(xiàn)上述目的,本發(fā)明的實(shí)施例提供了一種軟件升級(jí)包的處理方法,包括:確 定當(dāng)前基線版本;生成所述當(dāng)前基線版本以及當(dāng)前基線版本之后的已有版本到最新版本的 增量升級(jí)包。
[0008] 本發(fā)明實(shí)施例還提供了一種升級(jí)請(qǐng)求的處理方法,包括:接收客戶端的升級(jí)請(qǐng)求; 將客戶端軟件的版本與當(dāng)前基線版本進(jìn)行比較,如果所述客戶端軟件的版本等于或者高于 所述當(dāng)前基線版本,則向所述客戶端發(fā)送所述客戶端軟件的版本到最新版本的增量升級(jí) 包,如果所述客戶端軟件的版本低于所述當(dāng)前基線版本,則向所述客戶端發(fā)送所述最新版 本的全量升級(jí)包。
[0009] 本發(fā)明實(shí)施例還提供了一種軟件升級(jí)包的處理裝置,包括:基線版本確定模塊,用 于確定當(dāng)前基線版本;增量升級(jí)包生成模塊,生成所述當(dāng)前基線版以及當(dāng)前基線版本之后 的已有版本到最新版本的增量升級(jí)包。
[0010] 本發(fā)明實(shí)施例還提供了一種升級(jí)請(qǐng)求的處理裝置,包括:升級(jí)請(qǐng)求接收模塊,用于 接收到客戶端的升級(jí)請(qǐng)求;升級(jí)包發(fā)送模塊,用于將客戶端的軟件的版本與當(dāng)前基線版本 進(jìn)行比較,如果所述客戶端的軟件的版本等于或者高于所述當(dāng)前基線版本,則向所述客戶 端發(fā)送所述客戶端的軟件的版本到最新版本的增量升級(jí)包;如果所述客戶端的軟件的版本 低于所述當(dāng)前基線版本,則向所述客戶端發(fā)送最新版本的全量升級(jí)包。
[0011] 本發(fā)明實(shí)施例的軟件升級(jí)包和升級(jí)請(qǐng)求的處理方法及實(shí)現(xiàn)所述方法的裝置,能夠 清除當(dāng)前基線版本以后的版本到最新版本的增量升級(jí)包以外的增量升級(jí)包,有效地節(jié)約了 服務(wù)器的存儲(chǔ)空間,減少了服務(wù)器存儲(chǔ)和管理增量升級(jí)包的負(fù)擔(dān)。
【專利附圖】
【附圖說明】
[0012] 圖1為本發(fā)明實(shí)施例一的軟件升級(jí)包的處理方法的流程圖。
[0013] 圖2為本發(fā)明實(shí)施例二的軟件升級(jí)包的處理方法的流程圖。
[0014] 圖3為本發(fā)明實(shí)施例三的確定當(dāng)前基線版本的流程圖之一。
[0015] 圖4為本發(fā)明實(shí)施例三的確定當(dāng)前基線版本的流程圖之二。
[0016] 圖5為本發(fā)明實(shí)施例四的確定當(dāng)前基線版本的流程圖。
[0017] 圖6為本發(fā)明實(shí)施例五的升級(jí)請(qǐng)求的處理方法的流程圖。
[0018] 圖7為本發(fā)明實(shí)施例六的軟件升級(jí)包的處理裝置的結(jié)構(gòu)示意圖之一。
[0019] 圖8為本發(fā)明實(shí)施例六的軟件升級(jí)包的處理裝置的結(jié)構(gòu)示意圖之二。
[0020] 圖9為本發(fā)明實(shí)施例七的升級(jí)請(qǐng)求的處理裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0021] 本發(fā)明的實(shí)施例提出了一種基于基線版本的思想對(duì)軟件的增量升級(jí)包以及對(duì)于 客戶端的升級(jí)請(qǐng)求進(jìn)行處理的方法。需要說明的是,在本發(fā)明的實(shí)施例中,"以后"、"以前" 的表述的范圍包含中心詞,"之前"、"之后"的表述的范圍不包含中心詞,軟件升級(jí)包包括了 增量升級(jí)包和全量升級(jí)包,已有版本是相對(duì)于最新版本而言的概念,其包含已有基線版本、 已有基線版本之前的版本以及除了最新版本之外的已有基線版本之后的版本。
[0022] 下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)描述。
[0023] 實(shí)施例一
[0024] 如圖1所示,其為本發(fā)明實(shí)施例一的軟件升級(jí)包的處理方法的流程圖之一,其包 括:
[0025] 步驟11 :確定當(dāng)前基線版本。
[0026] 步驟12 :生成當(dāng)前基線版本以及當(dāng)前基線版本之后的已有版本到最新版本的增 量升級(jí)包。在實(shí)際應(yīng)用中,該處理流程還存在一種特殊情況,即如果當(dāng)前基線版本為最新 版本,則將不會(huì)執(zhí)行步驟12。在本發(fā)明的實(shí)施例中,首先確定一個(gè)當(dāng)前基線版本,在此基礎(chǔ) 上,以該當(dāng)前基線版本為界,對(duì)該當(dāng)前基線版本以后的版本制作增量升級(jí)包,而對(duì)于當(dāng)前基 線版本之前的版本將不再制作到最新版本的增量升級(jí)包。通過這種處理方法,減少了服務(wù) 器制作、存儲(chǔ)和管理增量升級(jí)包的數(shù)量,提高了服務(wù)器的資源利用率。對(duì)于當(dāng)前基線版本的 確定,可以根據(jù)軟件的不同、網(wǎng)絡(luò)環(huán)境、服務(wù)器配置等實(shí)際因素,采用不同的確定當(dāng)前基線 版本的方案。
[0027] 進(jìn)一步地,步驟11中,確定當(dāng)前基線版本可以采用如下幾種方式:
[0028] 方式一:將最新版本的安裝包與已有版本的安裝包進(jìn)行差分,根據(jù)差分獲得的差 分量確定當(dāng)前基線版本。例如,現(xiàn)在已經(jīng)存在了多個(gè)已有版本,而之前并未執(zhí)行過確定當(dāng)前 基線版本的操作,在這種情況下,可以將最新版本的安裝包與全部的已有版本的安裝包進(jìn) 行差分,根據(jù)差分量從已有版本中選擇適當(dāng)?shù)陌姹咀顬楫?dāng)前基線版本。
[0029] 差分量直接體現(xiàn)了已有版本的安裝包與最新版本的安裝包之間的數(shù)據(jù)量的差距, 而制作增量升級(jí)包的意義就是要減少數(shù)據(jù)傳輸量,如果數(shù)據(jù)量的差距過大,則就沒有必要 制作增量升級(jí)包,而直接采用全量升級(jí)包的方式即可。因此,以差分量為依據(jù)進(jìn)行判斷,能 夠客觀地評(píng)估出相對(duì)于最新版本的升級(jí)包而言,哪個(gè)版本更適合作為基線版本,以達(dá)到合 理地制作和管理增量升級(jí)包的目的。
[0030] 進(jìn)一步地如果在軟件發(fā)布最初版本時(shí)就開始使用本發(fā)明實(shí)施例的處理方法,即已 經(jīng)存在已有基線版本的情況下,則進(jìn)行差分的操作可以具體為將最新版本與作為已有基線 版本的已有版本以及已有基線版本之后的已有版本進(jìn)行逐一差分,即差分操作只針對(duì)已有 基線版本之后的版本進(jìn)行,并且可以按照從先到后的順序逐一進(jìn)行。對(duì)于該差分的操作,可 以實(shí)際生成一個(gè)差分包,然后獲取該差分包的大小作為差分量,也可以不實(shí)際生成差分包, 而直接通過計(jì)算獲得差分量。在實(shí)際的應(yīng)用中,可以采用現(xiàn)有的BSDiff算法,BSDiff是一 個(gè)二進(jìn)制包的差異包比較和生成算法,能夠生成兩個(gè)安裝包之間的差分包,當(dāng)然也可以采 用其他類似算法等,只要能計(jì)算出最新版本的安裝包與已有基線版的安裝包之間的差分包 或者差分量即可。
[0031] 其中,對(duì)于根據(jù)差分獲得的差分量確定當(dāng)前基線版本可以具體采用如下幾種方 式:
[0032] 方式11 :計(jì)算差分量與已有版本的安裝包的大小的比值,根據(jù)該比值確定當(dāng)前基 線版本。具體地,如果差分量與已有版本的安裝包的大小的比值大于預(yù)定的第一閾值,則判 斷為該已有版本不適合作為當(dāng)前基線版本;如果差分量與已有版本的安裝包的大小的比值 小于或等于預(yù)定的第一閾值,則判斷為該已有版本適合作為當(dāng)前基線版本。方式11是間 接地以差分量作為判斷標(biāo)準(zhǔn),即以差分運(yùn)算獲得的差分量與已有基線版本的安裝包的大小 的比值作為判斷標(biāo)準(zhǔn)。舉例來說,假設(shè)存在版本A、版本B和版本C,版本B為已有的基線版 本,現(xiàn)在將發(fā)布一個(gè)最新版本D,則首先通過BSDiff算法,生成一個(gè)版本B到版本D的差分 包P1,如果sizeof (Pl)/sizeof (A)〈 = Delta,則保持已有的基線版本不變,即將版本B繼 續(xù)作為當(dāng)前基線版本,如果sizeof (PI) /sizeof (A) >Delta,則將重新確定當(dāng)前基線版本。其 中,sizeof表示獲取數(shù)據(jù)包的大小的函數(shù),Delta表示預(yù)先設(shè)定的第一閾值,第一閾值可以 根據(jù)實(shí)際需要靈活設(shè)定,例如,可以設(shè)置為〇. 8。
[0033] 采用該方式11的意義在于,如果差分量與已有基線版本的安裝包的大小相比,其 占的比重過大,說明基于該已有基線版本制作的增量升級(jí)包相對(duì)于該已有基線版本的安裝 包差異較大,從效率而言,不如直接采用全量升級(jí)的方式。
[0034] 方式12 :計(jì)算差分量與最新版本的安裝包的大小的比值,根據(jù)該比值確定當(dāng)前基 線版本。具體地,如果差分量與最新版本的安裝包的大小的比值大于預(yù)定的第二閾值,則判 斷為該已有版本不適合作為當(dāng)前基線版本;如果差分量與最新版本的安裝包的大小的比值 小于或等于預(yù)定的第二閾值,則判斷為該已有版本適合作為當(dāng)前基線版本。該方式12也是 間接地以差分量作為判斷標(biāo)準(zhǔn),與方式1不同之處在于,是以差分運(yùn)算獲得的差分量與最 新基線版本的安裝包的大小的比值作為判斷標(biāo)準(zhǔn)。采用該方式12的意義在于,如果差分量 與最新版本的安裝包的大小相比,其占的比重過大,說明增量升級(jí)包本身已經(jīng)和最新版本 的全量升級(jí)包已經(jīng)較為接近了,從效率而言,不如直接采用全量升級(jí)的方式。第二閾值可以 根據(jù)實(shí)際需要靈活設(shè)定,例如,也可以設(shè)置為〇. 8。
[0035] 方式13 :直接根據(jù)差分量來確定當(dāng)前基線版本。具體地,如果差分量大于預(yù)定的 第三閾值,則判斷為該已有版本不適合作為當(dāng)前基線版本;如果差分量小于或等于預(yù)定的 第三閾值,則判斷為該已有版本適合作為當(dāng)前基線版本。該方式13是直接以差分量作為判 斷標(biāo)準(zhǔn)的,該方式的優(yōu)點(diǎn)在于,不需要再進(jìn)行額外的運(yùn)算,判斷操作較為簡便。
[0036] 需要指出的是,在上述的判斷過程中,以差分量或者差分量的比值是否小于或等 于各個(gè)閾值作為肯定的判斷標(biāo)準(zhǔn),而將大于各個(gè)閾值作為否定的判斷標(biāo)準(zhǔn),本領(lǐng)域技術(shù)人 員應(yīng)該能夠理解,也可以以差分量或者差分量的比值是否小于各個(gè)閾值作為肯定的判斷標(biāo) 準(zhǔn),而將大于或等于各個(gè)閾值作為否定的判斷標(biāo)準(zhǔn),這兩種方式是等同的。
[0037] 通過上述的方式11-13對(duì)軟件的版本進(jìn)行判斷,能夠較為合理地確定出當(dāng)前基線 版本,然后再以當(dāng)前基線版本為界限,生成有限個(gè)新的增量升級(jí)包,并淘汰冗余的增量升級(jí) 包,從而能夠減少服務(wù)器的制作、存儲(chǔ)和管理升級(jí)包的負(fù)擔(dān)。
[0038] 方式二:通過對(duì)多個(gè)客戶端所使用的軟件的版本進(jìn)行統(tǒng)計(jì)分析,將使用最多的已 有版本設(shè)定為當(dāng)前基線版本。在該方式中,通過將用戶使用最多的版本作為當(dāng)前基準(zhǔn)版本, 能夠在保證大多數(shù)用戶采用增量升級(jí),而對(duì)于少數(shù)用戶使用的當(dāng)前基準(zhǔn)版本之前的版本, 服務(wù)器將不再生成和存儲(chǔ)到最新版本的增量升級(jí)包,從而能夠提高服務(wù)器的使用效率。 [0039] 方式三:作為一種靈活的方式,還可以通過人為指定的方式確定基線版本。即接收 輸入的基線版本指定消息,將該基線版本指定消息所指定的版本作為當(dāng)前基線版本。在該 方式中,可以通過人為指定的方式設(shè)定當(dāng)前基線版本,從而可以根據(jù)需要靈活指定。例如, 許多軟件版本的開發(fā)存在多個(gè)系列版本,如版本1. 〇、版本1. 01、版本1. 02、版本2. 0、版本 2. 01等,一般來說版本1. 0和版本2. 0這種整數(shù)版本的改動(dòng)較大,因此,可以通過人為輸入 的方式將該整數(shù)版本指定為當(dāng)前基線版本,在沒有下一個(gè)整數(shù)版本更新之前,保持該設(shè)定。
[0040] 實(shí)施例二
[0041] 如圖2所示,在實(shí)施例一的基礎(chǔ)上,本實(shí)施例的軟件升級(jí)包的處理方法還可以包 括:步驟13 :根據(jù)基線版本清理增量升級(jí)包。需要說明的是,步驟13不一定要在步驟12之 后執(zhí)行,也可以在步驟11之后執(zhí)行或者與步驟12同時(shí)執(zhí)行。
[0042] 進(jìn)一步地,步驟13可以采用如下方式:只刪除早期版本對(duì)應(yīng)的增量升級(jí)包。舉例 來說,存在版本A、版本B、版本C,然后發(fā)布了最新版本D,之前已經(jīng)存在增量升級(jí)包AC、增量 升級(jí)包BC,如果將當(dāng)前基線版本確定為版本B,則將生成增量升級(jí)包BD、增量升級(jí)包⑶,同 時(shí)將刪除增量升級(jí)包AC。通過該處理,清空了服務(wù)器中存儲(chǔ)的作為冗余數(shù)據(jù)的早于當(dāng)前基 線版本的早期版本對(duì)應(yīng)的增量升級(jí)包,從而提高了服務(wù)器的存儲(chǔ)和管理效率。
[0043] 此外步驟13也可以采用如下方式:刪除當(dāng)前基線版本之后的已有版本到最新版 本的增量升級(jí)包之外的已有版本的增量升級(jí)包。該處理除了刪除早期版本對(duì)應(yīng)的增量升 級(jí)包外,還刪除了除了最新版本以外的各個(gè)版本之間的升級(jí)包,舉例來說,存在版本A、版本 B、版本C,然后發(fā)布了最新版本D,之前已經(jīng)存在增量升級(jí)包AC、增量升級(jí)包BC,在將當(dāng)前基 線版本確定為版本B后,生成增量升級(jí)包BD、增量升級(jí)包⑶,同時(shí)刪除增量升級(jí)包AC、增量 升級(jí)包BC。即將除了新生成的增量升級(jí)包之外,刪除了之前的全部升級(jí)包,這樣能夠進(jìn)一步 提高了服務(wù)器的存儲(chǔ)和管理效率。
[0044] 實(shí)施例三
[0045] 本實(shí)施例將對(duì)軟件升級(jí)包的處理方法具體流程進(jìn)行進(jìn)一步詳細(xì)說明。本發(fā)明的實(shí) 施例的處理方法,至少可以應(yīng)用于如下兩種情形:
[0046] 情形一:在軟件發(fā)布最初版本時(shí)就開始使用本發(fā)明實(shí)施例的處理方法,即當(dāng)只有 一個(gè)最初版本時(shí),將該最初版本作為當(dāng)前基線版本即可,以后每次發(fā)布新版本再重新進(jìn)行 一次當(dāng)前基線版本的確定操作,從而根據(jù)確定結(jié)果,來更新或保持當(dāng)前基線版本。
[0047] 情形二:在起初沒有使用本發(fā)明實(shí)施例的處理方法(最初沒有采用基于當(dāng)前基線 版本來管理軟件升級(jí)包),而是當(dāng)已經(jīng)發(fā)布了許多版本之后才開始使用本實(shí)施例的處理方 法。例如,當(dāng)前已經(jīng)存在了多個(gè)軟件版本,則可以在再發(fā)布新版本時(shí),開始執(zhí)行本發(fā)明實(shí)施 例的方法,同樣可以減少服務(wù)器制作、存儲(chǔ)和管理增量升級(jí)包的負(fù)擔(dān)。
[0048] 此外,需要說明的是,在上述的步驟11中,在執(zhí)行確定當(dāng)前基線版本的操作后,如 果將最新版本確定為當(dāng)前基線版本(例如,當(dāng)前基線版本之前的版本不適合作為當(dāng)前基線 版本,或者剛發(fā)布了軟件的第一個(gè)版本等情況),在這種情況下,將不存在生成增量升級(jí)包 的操作,則直接結(jié)束處理操作。
[0049] 本實(shí)施例將針對(duì)上述的情形一進(jìn)行詳細(xì)說明,即在軟件發(fā)布最初版本時(shí)就開始使 用本發(fā)明的軟件升級(jí)包的處理方法,如圖3所示,其為本發(fā)明實(shí)施例三的確定當(dāng)前基線版 本的流程圖之一,確定當(dāng)前基線版本的操作(即實(shí)施例一的步驟11)可以具體為:
[0050] 步驟101 :將最新版本的安裝包與已有基線版的安裝包進(jìn)行差分。
[0051] 步驟102 :將該已有基線版本作為被判斷版本,根據(jù)差分獲得的差分量判斷該被 判斷版本是否適合作為當(dāng)前基線版本,如果適合,則執(zhí)行步驟103,如果不適合,則執(zhí)行步驟 104。
[0052] 步驟103 :將被判斷版本作為當(dāng)前基線版本,即繼續(xù)采用該已有基線版本作為當(dāng) 前基線版本。
[0053] 步驟104 :從已有基線版本之后的版本中選擇一個(gè)版本作為當(dāng)前基線版本,然后 結(jié)束。
[0054] 進(jìn)一步地,上述的從已有基線版本之后的版本中選擇一個(gè)版本作為當(dāng)前基線版本 可以進(jìn)一步包括:如果已有基線版本與最新版本之間存在中間版本,則遍歷中間版本進(jìn)行 如下處理:將最新版本的安裝包與當(dāng)前遍歷的中間版本的安裝包進(jìn)行差分,將該當(dāng)前遍歷 的中間版本作為被判斷版本,根據(jù)差分獲得的差分量判斷該被判斷版本是否適合作為當(dāng)前 基線版本,如果適合,則將該被判斷版本作為當(dāng)前基線版本(即將當(dāng)前遍歷的中間版本作 為當(dāng)前基線版本)并停止遍歷,如果不適合并且還存在未遍歷的中間版本,則繼續(xù)進(jìn)行遍 歷,如果不適合并且不存在未遍歷的中間版本,則將最新版本作為當(dāng)前基線版本。如果已有 基線版本與最新版本之間不存在中間版本,則將最新版本作為當(dāng)前基線版本。
[0055] 上述的處理可以表示為圖4所示的流程,如圖4所示,其為本發(fā)明實(shí)施例三的確定 當(dāng)前基線版本的流程圖之二,從已有基線版本之后的版本中選擇一個(gè)版本作為當(dāng)前基線版 本(即上述的步驟104)可以具體包括 :
[0056] 步驟1041 :判斷已有基線版本與最新版本之間是否存在中間版本,如果存在,則 執(zhí)行步驟1042,如果不存在,則執(zhí)行步驟1048。
[0057] 步驟1042 :選擇一個(gè)中間版本作為當(dāng)前遍歷的中間版本。
[0058] 步驟1043 :將最新版本的安裝包與當(dāng)前遍歷的中間版本的安裝包本進(jìn)行差分。
[0059] 步驟1044 :將該當(dāng)前遍歷的中間版本作為被判斷版本,根據(jù)差分獲得的差分量判 斷該被判斷版本是否適合作為當(dāng)前基線版本,如果適合,則執(zhí)行步驟1045,如果不適合,則 執(zhí)行步驟1046。
[0060] 步驟1045 :將該被判斷版本作為當(dāng)前基線版本(即將當(dāng)前遍歷的中間版本作為當(dāng) 前基線版本),然后結(jié)束本流程。
[0061] 步驟1046 :判斷是否存在未遍歷的中間版本,如果存在,則執(zhí)行步驟1047,如果不 存在,則執(zhí)行步驟1048。
[0062] 步驟1047 :選擇下一個(gè)中間版本作為當(dāng)前遍歷的中間版本,并執(zhí)行步驟1043。
[0063] 步驟1048 :將最新版本作為當(dāng)前基線版,然后結(jié)束本流程。
[0064] 在上述操作中,通過遍歷已有基線版本與最新版本之間存在的中間版本,以最新 版本的安裝包與當(dāng)前遍歷的中間版之間的差分量作為判斷標(biāo)準(zhǔn),來尋找出適合作為當(dāng)前基 線版本的中間版本,這樣,能夠合理地確定出較為適合的當(dāng)前基線版本。
[0065] 此外,上述的遍歷中間版本可以按照由舊到新的順序遍歷中間版本,也可以按照 由新到舊的順序遍歷中間版本。當(dāng)然,也可以采用其他順序遍歷中間版本,例如,隨機(jī)的方 式等等。具體的遍歷方式,可以根據(jù)軟件版本之間的變化規(guī)律來靈活設(shè)置。
[0066] 對(duì)于本實(shí)施例中,根據(jù)差分獲得的差分量判斷該被判斷版本是否適合作為當(dāng)前基 線版本可以采用上面提及的方式11-13,相關(guān)的作用和效果與前述相同,在此不再贅述。 [0067] 實(shí)施例四
[0068] 本實(shí)施例將針對(duì)上述的情形二進(jìn)行詳細(xì)說明,即在起初沒有使用本發(fā)明實(shí)施例的 處理方法(最初沒有采用基于當(dāng)前基線版本來管理軟件升級(jí)包),而是當(dāng)已經(jīng)發(fā)布了許多 版本之后才開始使用本實(shí)施例的處理方法。在該情形下,確定當(dāng)前基線版本可以采用如下 方式:遍歷已有版本進(jìn)行如下處理:將最新版本的安裝包與當(dāng)前遍歷的已有版本的安裝包 進(jìn)行差分,將該當(dāng)前遍歷的已有版本作為被判斷版本,根據(jù)差分獲得的差分量判斷該被判 斷版本是否適合作為當(dāng)前基線版本,如果適合,則將該被判斷版本作為當(dāng)前基線版本并停 止遍歷,如果不適合并且還存在未遍歷的已有版本,則繼續(xù)進(jìn)行遍歷,如果不適合且不存在 未遍歷的已有版本,則將最新版本作為當(dāng)前基線版本。
[0069] 針對(duì)情形二的處理方法,可以表示為圖5的處理流程,如圖5所示,其為本發(fā)明實(shí) 施例四的確定當(dāng)前基線版本的流程圖,確定當(dāng)前基線版本包括:
[0070] 步驟101' :選擇一個(gè)已有版本作為當(dāng)前遍歷的已有版本。
[0071] 步驟102' :將最新版本的安裝包與當(dāng)前遍歷的已有版本的安裝包進(jìn)行差分。
[0072] 步驟103' :將該當(dāng)前遍歷的已有版本作為被判斷版本,根據(jù)差分獲得的差分量判 斷該被判斷版本是否適合作為當(dāng)前基線版本,如果適合,則執(zhí)行步驟104',如果不適合,則 執(zhí)行步驟105'。
[0073] 步驟104' :將被判斷版本作為當(dāng)前基線版本(即將當(dāng)前遍歷的已有版本作為當(dāng)前 基線版本),然后結(jié)束本流程。
[0074] 步驟105' :判斷是否存在未遍歷的已有版本,如果存在,則執(zhí)行步驟106',如果不 存在,則執(zhí)行步驟107'。
[0075] 步驟106' :選擇下一個(gè)已有作為當(dāng)前遍歷的已有版本,并執(zhí)行步驟102'。
[0076] 步驟107' :將最新版本作為當(dāng)前基線版本,然后結(jié)束本流程。
[0077] 本實(shí)施例適用于在起初沒有使用本發(fā)明實(shí)施例的處理方法,而是當(dāng)已經(jīng)發(fā)布了許 多版本之后才開始使用的情形,通過本實(shí)施例的處理方法,對(duì)已經(jīng)存在的各個(gè)軟件的版本 進(jìn)行了重新整理,確定了當(dāng)前基線版本,之后便可以采用實(shí)施例二的技術(shù)方案進(jìn)行處理了, 從而也實(shí)現(xiàn)了減少服務(wù)器制作、存儲(chǔ)和管理增量升級(jí)包的數(shù)量,提高服務(wù)器的資源利用率 的技術(shù)效果。
[0078] 對(duì)于本實(shí)施例中,根據(jù)差分獲得的差分量判斷該被判斷版本是否適合作為當(dāng)前基 線版本可以采用上面提及的方式11-13,相關(guān)的作用和效果與前述相同,在此不再贅述。
[0079] 實(shí)施例五
[0080] 基于上述實(shí)施例一至四所描述的軟件升級(jí)包的處理方法,本實(shí)施例還提出了一種 升級(jí)請(qǐng)求的處理方法,如圖6所示,其為本發(fā)明實(shí)施例四的升級(jí)請(qǐng)求的處理方法的流程圖, 其包括:
[0081] 步驟21 :接收客戶端的升級(jí)請(qǐng)求。
[0082] 步驟22 :將客戶端軟件的版本與當(dāng)前基線版本的進(jìn)行比較,如果客戶端軟件的版 本等于或者高于當(dāng)前基線版本,則執(zhí)行步驟23,如果客戶端軟件的版本低于當(dāng)前基線版本, 則執(zhí)行步驟24 ;其中,客戶端軟件的版本的相關(guān)信息一般會(huì)包含在升級(jí)請(qǐng)求中,當(dāng)然也可 以通過其他方式發(fā)送給服務(wù)器或者預(yù)先存儲(chǔ)在服務(wù)器中。
[0083] 步驟23 :向客戶端發(fā)送客戶端軟件的版本到最新版本的增量升級(jí)包。
[0084] 步驟24 :向客戶端發(fā)送最新版本的全量升級(jí)包。
[0085] 對(duì)客戶端來說,如果接收到全量升級(jí)包,則直接將該全量升級(jí)包作為安裝軟件直 接安裝,如果接收到增量升級(jí)包,則可以將之前存儲(chǔ)的舊版本的安裝包與該增量升級(jí)包進(jìn) 行組合生成全量升級(jí)包進(jìn)行安裝,例如,可以使用BSpatch算法進(jìn)行處理,BSpatch算法是 與BSdiff算法相對(duì)應(yīng)的一種將二進(jìn)制包進(jìn)行組合的算法,通過BSpatch算法能夠?qū)⑴f版本 的安裝包與增量升級(jí)包進(jìn)行組合,生成完整的新版本安裝包,然后客戶端直接運(yùn)行該新版 本的安裝包完成安裝。
[0086] 本實(shí)施例的升級(jí)請(qǐng)求的處理方法,不再像現(xiàn)有技術(shù)的升級(jí)方式那樣,無差別地對(duì) 客戶端進(jìn)行升級(jí),而是將客戶端軟件的版本與當(dāng)前基線版本的進(jìn)行比較,根據(jù)比較結(jié)果選 擇全量升級(jí)還是增量升級(jí),從而方便了服務(wù)器對(duì)于增量升級(jí)包的管理,減少了服務(wù)器制作、 存儲(chǔ)和管理增量升級(jí)包的負(fù)擔(dān)。
[0087] 實(shí)施例六
[0088] 如圖7所示,其為本發(fā)明實(shí)施例六的軟件升級(jí)包的處理裝置的結(jié)構(gòu)示意圖,包括: 基線版本確定模塊1,用于確定當(dāng)前基線版本;增量升級(jí)包生成模塊2,用于生成當(dāng)前基線 版本以及當(dāng)前基線版本之后的已有版本到最新版本的增量升級(jí)包。
[0089] 本實(shí)施例的軟件升級(jí)包的處理裝置可以設(shè)置于服務(wù)器端,通過本實(shí)施例的軟件升 級(jí)包的處理裝置,在確定了當(dāng)前基線版本后,能夠減少增量升級(jí)包的制作儲(chǔ)量,從而減少了 服務(wù)器制作、存儲(chǔ)和管理增量升級(jí)包的數(shù)量,提高了服務(wù)器的資源利用率。
[0090] 與上述實(shí)施例一的處理方法相對(duì)應(yīng)地,在本實(shí)施例中,基線版本確定模塊1所執(zhí) 行的確定當(dāng)前基線版本操作可以采用如實(shí)施例一中所說明的方式一至方式三,在此不再贅 述。對(duì)于確定當(dāng)前基線版本的具體執(zhí)行過程可以采用如實(shí)施例三和實(shí)施例四所描述的過 程。在此不再贅述。
[0091] 此外,如圖8所示,本實(shí)施例的處理裝置,還可以包括:增量升級(jí)包清理模塊3,用 于根據(jù)當(dāng)前基線版本清理增量升級(jí)包。對(duì)于具體的清理增量升級(jí)包的方式可以采用實(shí)施例 二所描述的方式。
[0092] 實(shí)施例七
[0093] 如圖9所示,其為本發(fā)明實(shí)施例七的升級(jí)請(qǐng)求的處理裝置的結(jié)構(gòu)示意圖,其包括: 升級(jí)請(qǐng)求接收模塊4,用于接收到客戶端的升級(jí)請(qǐng)求;升級(jí)包發(fā)送模塊5,用于將客戶端軟 件的版本與當(dāng)前基線版本進(jìn)行比較,如果客戶端軟件的版本等于或者高于當(dāng)前基線版本, 則向客戶端發(fā)送客戶端軟件的版本到最新版本的增量升級(jí)包;如果客戶端軟件的版本低于 當(dāng)前基線版本,則向客戶端發(fā)送最新版本的全量升級(jí)包。
[0094] 通過本實(shí)施例的升級(jí)請(qǐng)求的處理裝置,將客戶端軟件的版本與當(dāng)前基線版本的進(jìn) 行比較,根據(jù)比較結(jié)果選擇全量升級(jí)還是增量升級(jí),從而方便了服務(wù)器對(duì)于增量升級(jí)包的 管理,減少了服務(wù)器制作、存儲(chǔ)和管理增量升級(jí)包的負(fù)擔(dān)。
[〇〇95] 以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何 熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵 蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1. 一種軟件升級(jí)包的處理方法,其特征在于,包括: 確定當(dāng)前基線版本; 生成所述當(dāng)前基線版本以及當(dāng)前基線版本之后的已有版本到最新版本的增量升級(jí)包。
2. 根據(jù)權(quán)利要求1所述的處理方法,其特征在于,所述確定當(dāng)前基線版本包括:將最新 版本的安裝包與已有版本的安裝包進(jìn)行差分,根據(jù)差分獲得的差分量確定當(dāng)前基線版本。
3. 根據(jù)權(quán)利要求2所述的處理方法,其特征在于,將最新版本的安裝包與已有版本的 安裝包進(jìn)行差分,根據(jù)差分獲得的差分量確定當(dāng)前基線版本包括: 將最新版本與作為已有基線版本的已有版本以及已有基線版本之后的已有版本進(jìn)行 逐一差分,根據(jù)差分獲得的差分量確定當(dāng)前基線版本。
4. 根據(jù)權(quán)利要求2或3所述的處理方法,其特征在于,根據(jù)差分獲得的差分量確定當(dāng)前 基線版本包括: 計(jì)算所述差分量與所述已有版本的安裝包的大小的比值,根據(jù)該比值確定當(dāng)前基線版 本; 或者, 計(jì)算所述差分量與所述最新版本的安裝包的大小的比值,根據(jù)該比值確定當(dāng)前基線版 本。
5. 根據(jù)權(quán)利要求1所述的處理方法,其特征在于,所述確定基線版本包括: 通過對(duì)多個(gè)客戶端所使用的軟件的版本進(jìn)行統(tǒng)計(jì)分析,將使用最多的已有版本設(shè)定為 當(dāng)前基線版本。
6. 根據(jù)權(quán)利要求1所述的處理方法,其特征在于,還包括:根據(jù)所述當(dāng)前基線版本清理 增量升級(jí)包。
7. 根據(jù)權(quán)利要求6所述的處理方法,其特征在于,所述根據(jù)當(dāng)前基線版本清理增量升 級(jí)包包括:刪除所述當(dāng)前基線版本之前的已有版本的增量升級(jí)包。
8. 根據(jù)權(quán)利要求7所述的處理方法,其特征在于,所述根據(jù)當(dāng)前基線版本清理增量升 級(jí)包還包括:刪除所述當(dāng)前基線版本之后的已有版本到最新版本的增量升級(jí)包之外的已有 版本的增量升級(jí)包。
9. 一種升級(jí)請(qǐng)求的處理方法,其特征在于,包括: 接收客戶端的升級(jí)請(qǐng)求; 將客戶端軟件的版本與當(dāng)前基線版本進(jìn)行比較,如果所述客戶端軟件的版本等于或者 高于所述當(dāng)前基線版本,則向所述客戶端發(fā)送所述客戶端軟件的版本到最新版本的增量升 級(jí)包,如果所述客戶端軟件的版本低于所述當(dāng)前基線版本,則向所述客戶端發(fā)送所述最新 版本的全量升級(jí)包。
10. -種軟件升級(jí)包的處理裝置,其特征在于,包括: 基線版本確定1?塊,用于確定當(dāng)如基線版本; 增量升級(jí)包生成模塊,生成所述當(dāng)前基線版本以及當(dāng)前基線版本之后的已有版本到最 新版本的增量升級(jí)包。
11. 根據(jù)權(quán)利要求10所述的處理裝置,其特征在于,所述確定當(dāng)前基線版本包括:將 最新版本的安裝包與已有版本的安裝包進(jìn)行差分,根據(jù)差分獲得的差分量確定當(dāng)前基線版 本。
12. 根據(jù)權(quán)利要求11所述的處理裝置,其特征在于,將最新版本的安裝包與已有版本 的安裝包進(jìn)行差分,根據(jù)差分獲得的差分量確定當(dāng)前基線版本包括: 將最新版本與作為已有基線版本的已有版本以及已有基線版本之后的已有版本進(jìn)行 逐一差分,根據(jù)差分獲得的差分量確定當(dāng)前基線版本。
13. 根據(jù)權(quán)利要求11或12所述的處理裝置,其特征在于,根據(jù)差分獲得的差分量確定 當(dāng)前基線版本包括: 計(jì)算所述差分量與所述已有版本的安裝包的大小的比值,根據(jù)該比值確定當(dāng)前基線版 本; 或者, 計(jì)算所述差分量與所述最新版本的安裝包的大小的比值,根據(jù)該比值確定當(dāng)前基線版 本。
14. 根據(jù)權(quán)利要求10所述的處理裝置,其特征在于,所述確定基線版本包括: 通過對(duì)多個(gè)客戶端所使用的軟件的版本進(jìn)行統(tǒng)計(jì)分析,將使用最多的已有版本設(shè)定為 當(dāng)前基線版本。
15. 根據(jù)權(quán)利要求10所述的處理裝置,其特征在于,還包括: 增量升級(jí)包清理模塊,根據(jù)所述當(dāng)前基線版本清理增量升級(jí)包。
16. 根據(jù)權(quán)利要求15所述的處理裝置,其特征在于,所述根據(jù)當(dāng)前基線版本清理增量 升級(jí)包包括:刪除所述當(dāng)前基線版本之前的已有版本的增量升級(jí)包。
17. 根據(jù)權(quán)利要求15所述的處理裝置,其特征在于,所述根據(jù)當(dāng)前基線版本清理增量 升級(jí)包還包括:刪除所述當(dāng)前基線版本之后的已有版本到最新版本的增量升級(jí)包之外的已 有版本的增量升級(jí)包。
18. -種升級(jí)請(qǐng)求的處理裝置,其特征在于,包括: 升級(jí)請(qǐng)求接收模塊,用于接收到客戶端的升級(jí)請(qǐng)求; 升級(jí)包發(fā)送模塊,用于將客戶端的軟件的版本與當(dāng)前基線版本進(jìn)行比較,如果所述客 戶端的軟件的版本等于或者高于所述當(dāng)前基線版本,則向所述客戶端發(fā)送所述客戶端的軟 件的版本到最新版本的增量升級(jí)包;如果所述客戶端的軟件的版本低于所述當(dāng)前基線版 本,則向所述客戶端發(fā)送最新版本的全量升級(jí)包。
【文檔編號(hào)】G06F9/445GK104090806SQ201410345837
【公開日】2014年10月8日 申請(qǐng)日期:2014年7月18日 優(yōu)先權(quán)日:2014年7月18日
【發(fā)明者】李明, 張宇平 申請(qǐng)人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司