一種連續(xù)升級(jí)的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及軟件升級(jí)領(lǐng)域,尤其涉及一種連續(xù)升級(jí)的方法及裝置。
【背景技術(shù)】
[0002]目前的軟件版本升級(jí)一般通過下載服務(wù)器端提供的、針對(duì)客戶端當(dāng)前軟件版本的 差分升級(jí)包,并將差分升級(jí)包通過打補(bǔ)丁的方式更新到當(dāng)前軟件版本中,實(shí)現(xiàn)客戶端軟件 版本的升級(jí)。
[0003] 為了實(shí)現(xiàn)將當(dāng)前版本一次性升級(jí)到目標(biāo)版本,目前采取的一種實(shí)現(xiàn)方式為:在服 務(wù)器端配置各個(gè)版本到目標(biāo)版本的差分升級(jí)包,例如,目前目標(biāo)版本由V4升級(jí)到了V5,則 在服務(wù)器端已有¥2,1,¥3,1,¥3,2,¥4,1,¥4,2,¥4,3差分升級(jí)包的基礎(chǔ)上,增加配 置V5-V1,V5-V2,V5-V3,V5-V4這四個(gè)差分升級(jí)包,從而各個(gè)版本的用戶通過下載對(duì)應(yīng)的差 分升級(jí)包,就能實(shí)現(xiàn)一步到位的升級(jí),但是這種方式需要在服務(wù)器端制作n(n-1)/2個(gè)差分 文件升級(jí)包,進(jìn)一步地,為了減少服務(wù)器端的差分升級(jí)包的數(shù)量,目前還存在另一種實(shí)現(xiàn)方 式,也稱為連續(xù)升級(jí)方式,具體為:在服務(wù)器端配置相鄰兩個(gè)版本的差分升級(jí)包,比如依然 假設(shè)目標(biāo)版本由V4升級(jí)到了V5,在這種實(shí)現(xiàn)方式中,在服務(wù)器端已有V2-V1,V3-V2,V4-V3 差分升級(jí)包的基礎(chǔ)上,只需增加配置V5-V4這一個(gè)差分升級(jí)包。在升級(jí)時(shí),客戶端下載軟件 版本升級(jí)所需的所有差分升級(jí)包,并根據(jù)各個(gè)差分升級(jí)包的升級(jí)順序逐步對(duì)軟件版本進(jìn)行 升級(jí)即可。比如,假設(shè)客戶端當(dāng)前的軟件版本是V3,則需從服務(wù)器端下載V4-V3,V5-V4這 兩個(gè)差分升級(jí)包,并根據(jù)V4-V3將軟件升級(jí)到V4,之后再根據(jù)V5-V4將版本從V4升級(jí)到V5 即可。
[0004] 軟件版本升級(jí)的過程通常涉及多個(gè)分區(qū),包括:b〇〇t分區(qū)(引導(dǎo)分區(qū))、recovery 分區(qū)(恢復(fù)分區(qū))、system分區(qū)(系統(tǒng)分區(qū))等。對(duì)于上述的連續(xù)升級(jí)方式,客戶端的軟件版 本從V3升級(jí)到V4的過程中,首先將V4-V3差分升級(jí)包中的patch文件(該patch文件為V4 版本的boot分區(qū)和V4版本的recovery分區(qū)的差分文件)打到system分區(qū)中,完成V3到 V4的升級(jí),之后,再將V5-V4差分升級(jí)包中的patch文件(該patch文件為V5版本的boot 分區(qū)和V5版本的recovery分區(qū)的差分文件)打到system分區(qū)中,完成V5-V4的升級(jí),此 時(shí),實(shí)現(xiàn)了將軟件版本從V3升級(jí)到了V5,然后,啟動(dòng)主系統(tǒng)的開機(jī)流程,將system分區(qū)中 的patch文件打到recovery分區(qū)中,實(shí)現(xiàn)對(duì)recovery分區(qū)的升級(jí)。但是,如果V4-V3的差 分升級(jí)包中對(duì)recovery分區(qū)進(jìn)行了修改,并且這個(gè)修改影響到V5-V4的升級(jí),從上面的描 述,可以知道recovery分區(qū)的升級(jí)修改只有在升級(jí)到目標(biāo)版本后,啟動(dòng)主系統(tǒng)的開機(jī)流程 時(shí),才將system中的patch文件打到recovery分區(qū)中實(shí)現(xiàn)對(duì)recovery分區(qū)的升級(jí),也就 是說,在V4-V3的升級(jí)過程中,是不對(duì)recovery分區(qū)進(jìn)行升級(jí)的,因此,這種情況下,V5-V4 的差分升級(jí)包就會(huì)升級(jí)失敗。
[0005] 綜上,在現(xiàn)有的連續(xù)升級(jí)方式中,如果在當(dāng)前版本升級(jí)到目標(biāo)版本的過程中,某個(gè) 中間版本的recovery分區(qū)進(jìn)行了修改,且這個(gè)修改影響下一個(gè)差分升級(jí)包的升級(jí)時(shí),修改 后的recovery分區(qū)并不能帶入下一個(gè)差分升級(jí)包的升級(jí),導(dǎo)致之后的升級(jí)過程無法繼續(xù) 進(jìn)行,最終導(dǎo)致連續(xù)升級(jí)失敗。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的實(shí)施例提供一種連續(xù)升級(jí)的方法及裝置,實(shí)現(xiàn)了在連續(xù)升級(jí)過程中,下 一次的單包升級(jí)都能在上一次單包升級(jí)中升級(jí)后的recovery分區(qū)中執(zhí)行升級(jí),解決了由 于在原始版本(連續(xù)升級(jí)前的版本)和目標(biāo)版本之間的任一中間軟件版本的recovery分區(qū) 的修改,所導(dǎo)致的后續(xù)連續(xù)升級(jí)失敗的問題。
[0007] 為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案: 一方面,本發(fā)明實(shí)施例提供了一種連續(xù)升級(jí)的方法,包括:判斷軟件的當(dāng)前版本是否是 目標(biāo)版本;若否,從所述軟件由所述當(dāng)前版本升級(jí)到所述目標(biāo)版本所需的所有差分升級(jí)包 中,查找在先版本與所述當(dāng)前版本相同的差分升級(jí)包;其中,任意一個(gè)差分升級(jí)包只包含相 鄰兩個(gè)版本的升級(jí)信息;將查找到的差分升級(jí)包中的補(bǔ)丁包打到所述當(dāng)前版本的system 分區(qū)中;檢測是否需要對(duì)所述當(dāng)前版本的recovery分區(qū)進(jìn)行升級(jí);若是,則重啟所述當(dāng)前 版本的recovery分區(qū),掛載升級(jí)后的system分區(qū),將所述升級(jí)后的system分區(qū)中的補(bǔ)丁 包打到所述recovery分區(qū),實(shí)現(xiàn)對(duì)所述當(dāng)前版本的recovery分區(qū)的升級(jí)。
[0008] 另一方面,本發(fā)明實(shí)施例提供了一種連續(xù)升級(jí)裝置,包括:判斷單元,用于判斷軟 件的當(dāng)前版本是否是目標(biāo)版本,并將判斷結(jié)果發(fā)送給查找單元;查找單元,用于若接收到的 所述判斷單元發(fā)送的所述判斷結(jié)果為否,從所述軟件由所述當(dāng)前版本升級(jí)到所述目標(biāo)版本 所需的所有差分升級(jí)包中,查找在先版本與所述當(dāng)前版本相同的差分升級(jí)包;其中,任意一 個(gè)差分升級(jí)包只包含相鄰兩個(gè)版本的升級(jí)信息;升級(jí)system分區(qū)單元,用于將查找到的差 分升級(jí)包中的補(bǔ)丁包打到所述當(dāng)前版本的system分區(qū);檢測單元,用于檢測是否需要對(duì)所 述當(dāng)前版本的recovery分區(qū)進(jìn)行升級(jí),并將檢測結(jié)果發(fā)送給升級(jí)recovery分區(qū)單元;升級(jí) recovery分區(qū)單元,用于若接收到的所述檢測單元發(fā)送的檢測結(jié)果為是,則重啟所述當(dāng)前 版本的recovery分區(qū),掛載升級(jí)后的system分區(qū),將所述升級(jí)后的system分區(qū)中的補(bǔ)丁 包打到所述recovery分區(qū),實(shí)現(xiàn)對(duì)所述當(dāng)前版本的recovery分區(qū)的升級(jí)。
[0009] 綜上,本發(fā)明實(shí)施例提供了一種連續(xù)升級(jí)的方法及裝置,首先對(duì)設(shè)備當(dāng)前軟件的 版本是否是目標(biāo)版本進(jìn)行判斷,如果不是目標(biāo)版本,則從該軟件由當(dāng)前版本升級(jí)到目標(biāo)版 本所需的所有差分升級(jí)包中,查找在先版本與當(dāng)前版本相同的差分升級(jí)包,查找到該差分 升級(jí)包之后,將該差分升級(jí)包中的補(bǔ)丁包打到當(dāng)前版本的system分區(qū)中,然后,檢測是否 需要對(duì)當(dāng)前版本的recovery分區(qū)進(jìn)行升級(jí),如果需要,則重啟當(dāng)前版本的recovery分區(qū), 掛載升級(jí)后的system分區(qū),將升級(jí)后的system分區(qū)中的補(bǔ)丁包打到當(dāng)前版本的recovery 分區(qū),實(shí)現(xiàn)對(duì)當(dāng)前版本的recovery分區(qū)的升級(jí)。如果還需要對(duì)boot分區(qū)等其他分區(qū)進(jìn)行升 級(jí),則還要對(duì)其他分區(qū)進(jìn)行升級(jí),經(jīng)過上述步驟,將當(dāng)前版本升級(jí)到查找到的差分升級(jí)包所 對(duì)應(yīng)的在后版本,實(shí)現(xiàn)連續(xù)升級(jí)方式中的一個(gè)單包升級(jí),升級(jí)之后,再對(duì)當(dāng)前版本是否是目 標(biāo)版本進(jìn)行判斷,如果不是目標(biāo)版本,則重復(fù)上述過程,直至將當(dāng)前版本升級(jí)到目標(biāo)版本, 則終止升級(jí)過程。
[0010] 與現(xiàn)有技術(shù)中recovery分區(qū)的升級(jí)通常是在軟件的當(dāng)前版本升級(jí)到目標(biāo)版本之 后,再對(duì)軟件的recovery分區(qū)進(jìn)行升級(jí),使得recovery分區(qū)的版本與目標(biāo)版本相匹配的過 程不同,在上述的升級(jí)過程中,首先將查找到的差分升級(jí)包中的補(bǔ)丁包打到system分區(qū), 實(shí)現(xiàn)對(duì)system分區(qū)的升級(jí),當(dāng)升級(jí)后版本的recovery分區(qū)相對(duì)于升級(jí)前版本的recovery分區(qū)有修改時(shí),重啟recovery分區(qū),加載前述升級(jí)后的system分區(qū),因?yàn)榧虞d了升級(jí)后 的system分區(qū),所以可以通過執(zhí)行升級(jí)recovery分區(qū)的服務(wù),將升級(jí)后的system分區(qū)中 的patch文件打到recovery分區(qū)中,實(shí)現(xiàn)當(dāng)前版本的recovery分區(qū)的升級(jí),綜上,由于每 一次的單包升級(jí)都對(duì)是否需要對(duì)當(dāng)前版本的recovery分區(qū)是否升級(jí)進(jìn)行判斷,在需要對(duì) 當(dāng)前版本的recovery分區(qū)進(jìn)行升級(jí)的情況下,通過加載system分區(qū),實(shí)現(xiàn)對(duì)recovery分 區(qū)的升級(jí),這樣,不需要對(duì)差分升級(jí)包做任何處理,下一次的單包升級(jí)就能在上一個(gè)單包升 級(jí)后的recovery分區(qū)的基礎(chǔ)上進(jìn)行,而recovery分區(qū)中包含了控制單包升級(jí)的升級(jí)流程 的函數(shù),所以本發(fā)明中,原始版本(連續(xù)升級(jí)前的版本)和目標(biāo)版本之間的任一中間版本的 recovery分區(qū)的修改都能帶入下一個(gè)差分升級(jí)包的升級(jí),進(jìn)而,即使中間版本的recovery 分區(qū)做了修改,也不會(huì)影響下一個(gè)差分升級(jí)包的升級(jí)流程,使得連續(xù)升級(jí)過程可以順利進(jìn) 行,從而避免了現(xiàn)有技術(shù)中所容易出現(xiàn)的每次升級(jí)過程中由recovery分區(qū)的更改所導(dǎo)致 的下一次單包升級(jí)的失敗,提高了連續(xù)升級(jí)的成功率。
【附圖說明】
[0011] 為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中 所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí) 施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖 獲得其他的附圖。
[0012] 圖1為本發(fā)明實(shí)施例提供的一種連續(xù)升級(jí)的方法的流程示意圖; 圖2為本發(fā)明實(shí)施例提供的一種連續(xù)升級(jí)的裝置的功能示意圖。
【具體實(shí)施方式】
[0013] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0014] 本發(fā)明實(shí)施例提供了一種連續(xù)升級(jí)的方法,如圖1所示,