本發(fā)明涉及應(yīng)用升級技術(shù)領(lǐng)域,尤其涉及一種差分回退升級方法及裝置。
背景技術(shù):
目前大廠商均未提供差分回退包,只有各個(gè)版本的升級包,而且這些升級包需要到各個(gè)廠商的網(wǎng)站上查找,并且各個(gè)版本的升級包占用內(nèi)存比較大,需要將升級包從電腦拷貝到終端再做升級,操作復(fù)雜,過程麻煩,需要一定的技巧性,不利于用戶體驗(yàn)。
而且,如果升級失敗,無法直接進(jìn)行版本回退,需要從網(wǎng)站下載回退包才能進(jìn)行回退。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提供一種差分回退升級方法及裝置,旨在解決升級失敗后無法及時(shí)回退版本的問題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種差分回退升級方法,該方法包括:
獲取升級包和與所述升級包對應(yīng)的回退信息;
根據(jù)獲取到的所述回退信息生成差分回退包;
根據(jù)獲取到的所述升級包對待升級應(yīng)用進(jìn)行升級;
當(dāng)升級失敗時(shí),根據(jù)生成的所述差分回退包對所述待升級應(yīng)用進(jìn)行回退操作。
優(yōu)選地,在所述回退信息包括路徑信息時(shí),所述根據(jù)獲取到的所述回退信息生成差分回退包的步驟包括:
解析獲取到的所述回退信息,根據(jù)所述回退信息獲取路徑信息;
根據(jù)所述路徑信息生成所述差分回退包。
優(yōu)選地,所述根據(jù)所述路徑信息生成所述差分回退包的步驟包括:
在所述待升級應(yīng)用對應(yīng)的應(yīng)用數(shù)據(jù)中提取與所述路徑信息對應(yīng)的應(yīng)用數(shù)據(jù)段;
對獲取的所述應(yīng)用數(shù)據(jù)段封裝并進(jìn)行數(shù)字簽名,以生成所述差分回退包。
優(yōu)選地,所述根據(jù)獲取到的所述回退信息生成差分回退包的步驟和所述根據(jù)獲取到的所述升級包對待升級應(yīng)用進(jìn)行升級的步驟之間還包括:
存儲所述差分回退包。
優(yōu)選地,所述根據(jù)生成的所述差分升級包對被待升級應(yīng)用進(jìn)行升級的步驟之后還包括:
在升級成功后,接收回退指令;
提取與接收到的所述回退指令對應(yīng)的所述差分回退包;
根據(jù)提取到的所述差分回退包對升級后的所述待升級應(yīng)用進(jìn)行回退操作。
本發(fā)明還提出一種差分回退升級裝置,包括:
獲取模塊,用于獲取升級包和與所述升級包對應(yīng)的回退信息;
生成模塊,用于根據(jù)獲取到的所述回退信息生成差分回退包;
升級模塊,用于根據(jù)獲取到的所述升級包對待升級應(yīng)用進(jìn)行升級;
第一回退模塊,用于當(dāng)升級失敗時(shí),根據(jù)生成的所述差分回退包對所述待升級應(yīng)用進(jìn)行回退操作。
優(yōu)選地,所述生成模塊包括:
解析單元,用于解析獲取到的所述回退信息,根據(jù)所述回退信息獲取路徑信息;
生成單元,用于根據(jù)所述路徑信息生成所述差分回退包。
優(yōu)選地,所述生成單元包括:
提取子單元,用于在所述待升級應(yīng)用對應(yīng)的應(yīng)用數(shù)據(jù)中提取與所述路徑信息對應(yīng)的應(yīng)用數(shù)據(jù)段;
壓縮簽名子單元,用于對獲取的所述應(yīng)用數(shù)據(jù)段封裝并進(jìn)行數(shù)字簽名,以生成所述差分回退包。
優(yōu)選地,該差分回退升級裝置還包括:存儲模塊,用于存儲所述差分回退包。
優(yōu)選地,該差分回退升級裝置還包括:
接收模塊,用于在升級成功后,接收回退指令;
提取模塊,用于提取與接收到的所述回退指令對應(yīng)的所述差分回退包;
第二回退模塊,用于根據(jù)提取到的所述差分回退包對升級后的所述待升級應(yīng)用進(jìn)行回退操作。
本發(fā)明提出的差分回退升級方法及裝置,利用完整的升級數(shù)據(jù)包獲取差分升級包和差分回退腳本,在進(jìn)行升級之前,根據(jù)差分回退腳本制作差分回退包,對其進(jìn)行數(shù)字簽名并保存,以便于在升級失敗后進(jìn)行回退;而且在升級成功之后如果用戶不想使用升級后的版本,可以隨時(shí)調(diào)用生成的差分回退包回退到升級之前的版本。
附圖說明
圖1為本發(fā)明差分回退升級方法的第一實(shí)施例的流程圖;
圖2為圖1中步驟S20的細(xì)化流程示意圖;
圖3為圖2中步驟S202的細(xì)化流程示意圖;
圖4為本發(fā)明差分回退升級方法的第二實(shí)施例的流程圖;
圖5為本發(fā)明差分回退升級裝置的第一實(shí)施例的功能模塊示意圖;
圖6為圖5中生成模塊的細(xì)化功能模塊示意圖;
圖7為圖5中生成單元的細(xì)化功能模塊示意圖;
圖8為本發(fā)明差分回退升級裝置的第二實(shí)施例的功能模塊示意圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明提供一種差分回退升級方法。
參照圖1所示,為本發(fā)明差分回退升級方法第一實(shí)施例的流程圖。
在第一實(shí)施例中,差分回退升級方法包括:
步驟S10,獲取升級包和與所述升級包對應(yīng)的回退信息;
在服務(wù)器上通過升級包制作工具將舊版本應(yīng)用的數(shù)據(jù)與新版本應(yīng)用的數(shù)據(jù)進(jìn)行對比分析,檢測是否有差異,當(dāng)檢測不到版本差異時(shí),繼續(xù)獲取新版本應(yīng)用與舊版本應(yīng)用對比分析;當(dāng)檢測到差異時(shí),根據(jù)比對結(jié)果生成升級包文件,與此同時(shí),根據(jù)對比的結(jié)果,生成回退信息,可以在利用升級包制作工具生成升級包的時(shí)候?qū)⒒赝诵畔⒋虬缴壈?,也可以將回退信息單?dú)保存并且與升級包建立關(guān)聯(lián),例如可以以相同的版本號進(jìn)行命名,或者在回退信息中添加標(biāo)示符等方法。
需要說明的是,此處的升級包可以是完整的升級數(shù)據(jù)包,也可以是差分升級包,也可以生成這兩種升級包,以供用戶在需要升級的時(shí)候根據(jù)需要進(jìn)行選擇;而且,此處的升級可以是對終端的操作系統(tǒng)進(jìn)行升級,也可以是對終端上的應(yīng)用軟件升級,其原理相同。
完整版的數(shù)據(jù)包占用內(nèi)存大且升級速度慢,而差分升級包是將新版本文件與舊版本應(yīng)用的數(shù)據(jù)做差分,得到更新的補(bǔ)丁文件,例如舊版本的文件有5M,新版的文件有8M,更新的部分則可能只有3M左右(這里需要說明的是,差分包大小并不是簡單的相減,其實(shí)需要包含一些上下文相關(guān)的東西),使用差分升級的好處顯而易見,用戶不需要下載完整的8M文件,只需要下載更新部分就可以,而更新部分可能只有3-4M,可以很大程度上減少流量的損失,因此本實(shí)施例中優(yōu)選生成差分升級包進(jìn)行升級。
本實(shí)施例中該回退信息中包含有新、舊版本應(yīng)用的差異數(shù)據(jù)對應(yīng)的舊版本數(shù)據(jù)段的路徑信息,例如“xx/xx/filename”,由于差異文件一般情況下包括多個(gè),所以回退信息的內(nèi)容可以為:
“rollback:
“xx/xx/filename1”
“xx/xx/filename2”
“xx/xx/filename3”
……”
在其他的實(shí)施例中也可以其他的方式定義回退信息,例如回退信息可以包括新、舊版本文件的差異文件對應(yīng)的舊版本文件的標(biāo)識信息,以供后續(xù)根據(jù)標(biāo)志信息提取相應(yīng)的數(shù)據(jù)段。
步驟S20,根據(jù)獲取到的所述回退信息生成差分回退包。
如圖2所示,步驟S20包括如下細(xì)化步驟:
步驟S201解析獲取到的所述回退信息,根據(jù)所述回退信息獲取路徑信息。
步驟S202,根據(jù)所述路徑信息生成所述差分回退包。如圖3所示,步驟S202包括如下細(xì)化步驟:
步驟S211,在所述待升級應(yīng)用對應(yīng)的應(yīng)用數(shù)據(jù)中提取與所述路徑信息對應(yīng)的應(yīng)用數(shù)據(jù)段。
步驟S212,對獲取的所述應(yīng)用數(shù)據(jù)段封裝并進(jìn)行數(shù)字簽名,以生成所述差分回退包。
由于回退信息中包含多個(gè)對應(yīng)的應(yīng)用數(shù)據(jù)段的路徑信息,按照多個(gè)回退子命令的順序從終端系統(tǒng)文件中獲取對應(yīng)的應(yīng)用數(shù)據(jù)段,直至回退信息行執(zhí)行完畢,將獲取到的全部應(yīng)用數(shù)據(jù)段封裝,封裝完成后,可以將其壓縮成zip格式的文件或者以其他的壓縮格式進(jìn)行壓縮,根據(jù)服務(wù)器下發(fā)的簽名的key或者終端預(yù)置的簽名key,針對回退包做數(shù)字簽名,數(shù)字簽名為慣用技術(shù)手段,在此不再贅述。
步驟S30,根據(jù)獲取到的所述升級包對待升級應(yīng)用進(jìn)行升級。
步驟S40,當(dāng)升級失敗時(shí),根據(jù)生成的所述差分回退包對所述待升級應(yīng)用進(jìn)行回退操作。
在進(jìn)行升級時(shí)可能會出現(xiàn)升級失敗,這時(shí)會自動(dòng)調(diào)取差分回退包進(jìn)行回退,使系統(tǒng)回退到原始狀態(tài)。
本實(shí)施例提出的差分回退升級方法,利用新舊版本應(yīng)用的數(shù)據(jù)進(jìn)行對比,獲取升級包和差分信息,在進(jìn)行升級之前,根據(jù)差分信息制作差分回退包,對其進(jìn)行數(shù)字簽名并保存,以便于在升級失敗后進(jìn)行回退。
參照圖4,基于第一實(shí)施例提出本發(fā)明差分回退升級方法第二實(shí)施例,在本實(shí)施例中,步驟S40之后,該方法還包括:
步驟S50,存儲所述差分回退包。
步驟S60,在升級成功后,接收回退指令。
步驟S70,提取與接收到的所述回退指令對應(yīng)的所述差分回退包。
步驟S80,根據(jù)提取到的所述差分回退包對升級后的所述待升級應(yīng)用進(jìn)行 回退操作。
將差分回退包保存在終端,以供用戶使用。例如在成功升級之后,如果出現(xiàn)系統(tǒng)報(bào)錯(cuò)、應(yīng)用報(bào)錯(cuò)的情況,用戶不想使用當(dāng)前版本,想回退版本,則可直接選擇差分回退包進(jìn)行版本回退,無需再從服務(wù)器下載完整的回退包,可以達(dá)到快速回退的目的。此時(shí)可以為用戶提供選擇界面,用戶基于該選擇界面發(fā)出回退指令,當(dāng)接收到用戶發(fā)出的回退指令后,提取與接收到的回退指令對應(yīng)的所述差分回退包,對待升級應(yīng)用進(jìn)行版本回退。
本實(shí)施例提出的差分回退升級方法,在差分升級完成之后如果用戶不想使用升級后的版本,可以隨時(shí)調(diào)用之前制作的差分回退包回退到升級之前的版本。
本發(fā)明還提出一種差分回退升級裝置。
參照圖5,圖5為本發(fā)明差分回退升級裝置第一實(shí)施例的示意圖。
在該實(shí)施例中,差分回退升級裝置包括:
獲取模塊10,用于獲取升級包和與所述升級包對應(yīng)的回退信息。
在服務(wù)器上通過升級包制作工具將舊版本應(yīng)用的數(shù)據(jù)與新版本應(yīng)用的數(shù)據(jù)進(jìn)行對比分析,檢測是否有差異,當(dāng)檢測不到版本差異時(shí),繼續(xù)獲取新版本應(yīng)用與舊版本應(yīng)用對比分析;當(dāng)檢測到差異時(shí),根據(jù)比對結(jié)果生成升級包文件,與此同時(shí),根據(jù)對比的結(jié)果,生成回退信息,可以在利用升級包制作工具生成升級包的時(shí)候?qū)⒒赝诵畔⒋虬缴壈校部梢詫⒒赝诵畔为?dú)保存并且與升級包建立關(guān)聯(lián),例如可以以相同的版本號進(jìn)行命名,或者在回退信息中添加標(biāo)示符等方法。
需要說明的是,此處的升級包可以是完整的升級數(shù)據(jù)包,也可以是差分升級包,也可以生成這兩種升級包,以供用戶在需要升級的時(shí)候根據(jù)需要進(jìn)行選擇。
完整版的數(shù)據(jù)包占用內(nèi)存大且升級速度慢,而差分升級包是將新版本文件與舊版本應(yīng)用的數(shù)據(jù)做差分,得到更新的補(bǔ)丁文件,例如舊版本的文件有5M,新版的文件有8M,更新的部分則可能只有3M左右(這里需要說明的是,差分包大小并不是簡單的相減,其實(shí)需要包含一些上下文相關(guān)的東西),使用 差分升級的好處顯而易見,用戶不需要下載完整的8M文件,只需要下載更新部分就可以,而更新部分可能只有3-4M,可以很大程度上減少流量的損失,因此本實(shí)施例中優(yōu)選生成差分升級包進(jìn)行升級。
本實(shí)施例中該回退信息中包含有新、舊版本應(yīng)用的差異數(shù)據(jù)對應(yīng)的舊版本數(shù)據(jù)段的路徑信息,例如“xx/xx/filename”,由于差異文件一般情況下包括多個(gè),所以回退信息的內(nèi)容可以為:
“rollback:
“xx/xx/filename1”
“xx/xx/filename2”
“xx/xx/filename3”
……”
在其他的實(shí)施例中也可以其他的方式定義回退信息,例如回退信息可以包括新、舊版本應(yīng)用的差異數(shù)據(jù)對應(yīng)的舊版本數(shù)據(jù)的標(biāo)識信息,以供后續(xù)根據(jù)該標(biāo)識信息提取相應(yīng)的文件。
生成模塊20,用于根據(jù)獲取到的所述回退信息生成差分回退包。
如圖2所示,生成模塊20包括以下單元:
解析單元210,用于于解析獲取到的所述回退信息,根據(jù)所述回退信息獲取路徑信息。
在獲取模塊10獲取到回退信息10之后,解析單元210對回退信息中的數(shù)據(jù)進(jìn)行分析,從中獲取其包含的升級包對應(yīng)的原始版本文件的路徑信息。
生成單元220,用于根據(jù)所述路徑信息生成所述差分回退包。
生成單元220根據(jù)解析單元210獲取到的路徑信息生成差分回退包,其具體過程如下:
如圖3所示,生成單元220包括如下子單元:
提取子單元221,用于在所述待升級應(yīng)用對應(yīng)的應(yīng)用數(shù)據(jù)中提取與所述路徑信息對應(yīng)的應(yīng)用數(shù)據(jù)段。
壓縮簽名子單元222,用于對獲取的所述應(yīng)用數(shù)據(jù)段封裝并進(jìn)行數(shù)字簽名,以生成所述差分回退包。
由于獲取模塊10所獲取到的回退信息中包含多個(gè)對應(yīng)的應(yīng)用數(shù)據(jù)段的路徑信息,提取子單元221按照多個(gè)回退子命令的順序從終端系統(tǒng)文件中獲取 對應(yīng)的應(yīng)用數(shù)據(jù)段,直至回退信息行執(zhí)行完畢,壓縮簽名子單元222將獲取到的全部應(yīng)用數(shù)據(jù)段封裝壓縮,封裝壓縮完成后,壓縮簽名子單元222根據(jù)服務(wù)器下發(fā)的簽名的key或者終端預(yù)置的簽名key,針對回退包做數(shù)字簽名,數(shù)字簽名為慣用技術(shù)手段,在此不再贅述。
升級模塊30,用于根據(jù)獲取到的所述升級包對待升級應(yīng)用進(jìn)行升級。
第一回退模塊40,當(dāng)升級失敗時(shí),根據(jù)生成的所述差分回退包對所述待升級應(yīng)用進(jìn)行回退。
在升級模塊30對待升級應(yīng)用進(jìn)行升級時(shí)可能會出現(xiàn)升級失敗,這時(shí)第一回退模塊40會自動(dòng)調(diào)取差分回退包對待升級應(yīng)用進(jìn)行回退,使系統(tǒng)回退到升級之前的版本。
本實(shí)施例提出的差分回退升級裝置,利用完整的升級數(shù)據(jù)包獲取差分升級包和差分回退腳本,在進(jìn)行升級之前,根據(jù)差分回退腳本制作差分回退包,對其進(jìn)行數(shù)字簽名并保存,以便于在應(yīng)用升級失敗后進(jìn)行回退。
參照圖8,基于第一實(shí)施例提出本發(fā)明差分回退升級裝置第二實(shí)施例,在本實(shí)施例中,該裝置還包括:
存儲模塊50,用于存儲所述差分回退包。
接收模塊60,用于在升級成功后,接收回退指令。
提取模塊70,用于提取與接收到的所述回退指令對應(yīng)的所述差分回退包。
第二回退模塊80,用于根據(jù)提取到的所述差分回退包對升級后的所述待升級應(yīng)用進(jìn)行回退操作。
存儲模塊50將生成的差分回退包保存在終端,以供用戶后續(xù)使用。例如在成功升級之后,如果出現(xiàn)系統(tǒng)報(bào)錯(cuò)、應(yīng)用報(bào)錯(cuò)的情況,用戶不想使用當(dāng)前版本,想回退版本,則可直接選擇差分回退包進(jìn)行版本回退,無需再從服務(wù)器下載完整的回退包,可以達(dá)到快速回退的目的。此時(shí)可以為用戶提供選擇界面,用戶基于該選擇界面發(fā)出回退指令,當(dāng)接收模塊60接收到用戶發(fā)出的回退指令后,提取模塊70提取與接收到的回退指令對應(yīng)的所述差分回退包,第二回退模塊80根據(jù)提取到的回退包對升級后的待升級應(yīng)用進(jìn)行版本回退。
需要說明的是,第一回退模塊40和第二回退模塊80可以是同一個(gè)模塊。
本實(shí)施例提出的差分升級裝置在差分升級成功之后,如果用戶不想使用升級后的應(yīng)用版本,可以隨時(shí)調(diào)用之前制作的差分回退包回退到升級之前的版本。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。