一種更新應(yīng)用軟件的方法、裝置、客戶端、服務(wù)器及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種更新應(yīng)用軟件的方法、裝置、客戶端、服務(wù)器及系統(tǒng),所述方法包括:獲取客戶端的待更新應(yīng)用軟件對應(yīng)的摘要信息列表,所述待更新應(yīng)用軟件包括至少一個子項(xiàng)文件,所述摘要信息列表包括子項(xiàng)文件與第一摘要信息的對應(yīng)關(guān)系;獲取與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,所述最新應(yīng)用軟件包括至少一個子項(xiàng)文件;根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件;將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。與現(xiàn)有技術(shù)相比,不需要保存各個版本的應(yīng)用軟件,利用來自客戶端的摘要信息列表,即可以使所有用戶實(shí)現(xiàn)應(yīng)用軟件的更新。
【專利說明】—種更新應(yīng)用軟件的方法、裝置、客戶端、服務(wù)器及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體涉及一種更新應(yīng)用軟件的方法、裝置、客戶端、月艮務(wù)器及系統(tǒng)。
【背景技術(shù)】
[0002]隨著計算機(jī)技術(shù)的發(fā)展,應(yīng)用軟件的種類和數(shù)量日益增加,與此同時,同一款應(yīng)用軟件的不同版本更新較快,用戶可能剛安裝的一個版本的應(yīng)用軟件,短時間內(nèi)就會出現(xiàn)新的版本,所以,用戶就面臨了如何給舊版本的應(yīng)用軟件更新的問題。
[0003]現(xiàn)有技術(shù)中一般利用補(bǔ)丁文件為舊版本的應(yīng)用軟件更新,現(xiàn)以手機(jī)客戶端中已安裝的應(yīng)用軟件為例,參考圖1,圖1為一種應(yīng)用軟件更新的示意圖,其中,服務(wù)器通過將舊版本的應(yīng)用軟件即oldVers1nQQ.apk與新版本的應(yīng)用軟件即newVers1nQQ.apk同時加入bsdiff工具中,最終得到補(bǔ)丁文件A。手機(jī)客戶端獲取補(bǔ)丁文件A后,將保存在客戶端的oldVers1nQQ.apk與補(bǔ)丁文件A同時加入bspatch工具中,最終得到newVers1nQQ.apk完成應(yīng)用軟件的更新。
[0004]如上可知,現(xiàn)有技術(shù)的軟件更新方法中,服務(wù)器最終能夠得到任意一個應(yīng)用軟件的補(bǔ)丁文件的前提是服務(wù)器中必須同時存在該應(yīng)用軟件的新、舊版本,對于應(yīng)用軟件更新如此迅速的今天,服務(wù)器獲取各個版本應(yīng)用軟件其實(shí)是比較困難的,所以,由于服務(wù)器不能獲取所有版本的應(yīng)用軟件,這就限制了有些用戶的應(yīng)用軟件不能夠被更新。同時,由于bsdiff工具和bspatch工具的算法較復(fù)雜,運(yùn)行速度較慢,所以,使用bsdiff工具和bspatch工具進(jìn)行應(yīng)用軟件更新,一定程度上降低了應(yīng)用軟件更新的效率。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供了一種更新應(yīng)用軟件的方法、裝置、客戶端、服務(wù)器及系統(tǒng),使得服務(wù)器不需要保存各個版本的應(yīng)用軟件,從而更多的用戶能夠?qū)崿F(xiàn)應(yīng)用軟件的更新,同時由于不需要使用bsdiff工具和bspatch工具,提高了應(yīng)用軟件更新的效率。
[0006]本發(fā)明提供一種更新應(yīng)用軟件的方法,所述方法包括:
[0007]獲取客戶端的待更新應(yīng)用軟件對應(yīng)的摘要信息列表,所述待更新應(yīng)用軟件包括至少一個子項(xiàng)文件,所述摘要信息列表包括子項(xiàng)文件與第一摘要信息的對應(yīng)關(guān)系;
[0008]獲取與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,所述最新應(yīng)用軟件包括至少一個子項(xiàng)文件;
[0009]根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件;
[0010]將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
[0011]優(yōu)選地,所述根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件,包括:
[0012]將所述最新應(yīng)用軟件中的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng),執(zhí)行獲取補(bǔ)丁文件流程:判斷所述目標(biāo)子項(xiàng)是否存在于所述摘要信息列表,如果是,則根據(jù)所述目標(biāo)子項(xiàng)對應(yīng)的摘要信息獲取補(bǔ)丁文件,所述摘要信息包括第一摘要信息和第二摘要信息;如果否,則將所述最新應(yīng)用軟件中的所述目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到所述補(bǔ)丁文件;將所述最新應(yīng)用軟件中未執(zhí)行所述獲取補(bǔ)丁文件流程的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng),繼續(xù)執(zhí)行所述獲取補(bǔ)丁文件流程,直到所述最新應(yīng)用軟件中的子項(xiàng)文件全部完成執(zhí)行所述獲取補(bǔ)丁文件流程;
[0013]獲取所述補(bǔ)丁文件。
[0014]優(yōu)選地,所述根據(jù)所述目標(biāo)子項(xiàng)對應(yīng)的摘要信息獲取補(bǔ)丁文件,所述摘要信息包括第一摘要信息和第二摘要信息,包括:
[0015]在所述摘要信息列表中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第一摘要信息,且在所述最新應(yīng)用軟件中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第二摘要信息;
[0016]判斷所述第一摘要信息與第二摘要信息是否相同,如果是,則將所述目標(biāo)子項(xiàng)標(biāo)記為不更新并添加到補(bǔ)丁文件,如果否,則將所述最新應(yīng)用軟件中的所述目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到所述補(bǔ)丁文件。
[0017]優(yōu)選地,所述將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新,包括:
[0018]將所述補(bǔ)丁文件傳送至所述客戶端;
[0019]在所述傳送的過程中,所述客戶端將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
[0020]優(yōu)選地,所述在所述傳送的過程中,所述客戶端將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新,包括:
[0021]在所述傳送的過程中,所述客戶端獲取所述補(bǔ)丁文件中的任一子項(xiàng)文件;
[0022]判斷所述子項(xiàng)文件是否標(biāo)記為不更新,如果是,則將所述待更新應(yīng)用軟件中所述子項(xiàng)文件對應(yīng)的文件信息添加到更新后應(yīng)用軟件中,如果否,則將所述補(bǔ)丁文件中所述子項(xiàng)文件對應(yīng)的文件信息添加到所述更新后應(yīng)用軟件;
[0023]所述客戶端繼續(xù)獲取所述補(bǔ)丁文件中的未執(zhí)行所述判斷所述子項(xiàng)文件是否標(biāo)記為不更新的任一子項(xiàng)文件,繼續(xù)執(zhí)行所述判斷所述子項(xiàng)文件是否標(biāo)記為不更新,直到所述補(bǔ)丁文件中的全部子項(xiàng)文件均完成執(zhí)行所述判斷所述子項(xiàng)文件是否標(biāo)記為不更新;
[0024]獲取所述更新后應(yīng)用軟件,以完成所述待更新應(yīng)用軟件的更新。
[0025]本發(fā)明還包括一種更新應(yīng)用軟件的裝置,所述裝置包括:
[0026]第一獲取模塊,用于獲取客戶端的待更新應(yīng)用軟件對應(yīng)的摘要信息列表,所述待更新應(yīng)用軟件包括至少一個子項(xiàng)文件,所述摘要信息列表包括子項(xiàng)文件與第一摘要信息的對應(yīng)關(guān)系;
[0027]第二獲取模塊,用于獲取與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,所述最新應(yīng)用軟件包括至少一個子項(xiàng)文件;
[0028]第三獲取模塊,用于根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件;
[0029]合成模塊,用于將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
[0030]優(yōu)選地,所述第三獲取模塊包括:
[0031]第一確定子模塊,用于將所述最新應(yīng)用軟件中的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng);
[0032]第一判斷子模塊,用于判斷所述目標(biāo)子項(xiàng)是否存在于所述摘要信息列表;
[0033]第一獲取子模塊,用于在所述第一判斷子模塊的結(jié)果為是時,根據(jù)所述目標(biāo)子項(xiàng)對應(yīng)的摘要信息獲取補(bǔ)丁文件,所述摘要信息包括第一摘要信息和第二摘要信息;
[0034]第一添加子模塊,用于在所述第一判斷子模塊的結(jié)果為否時,將所述最新應(yīng)用軟件中的所述目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到所述補(bǔ)丁文件;
[0035]第一觸發(fā)子模塊,用于將所述最新應(yīng)用軟件中未觸發(fā)所述第一判斷子模塊的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng),繼續(xù)觸發(fā)所述第一判斷子模塊,直到所述最新應(yīng)用軟件中的子項(xiàng)文件全部完成觸發(fā)所述第一判斷子模塊;
[0036]第二獲取子模塊,用于獲取所述補(bǔ)丁文件。
[0037]優(yōu)選地,所述第一獲取子模塊包括:
[0038]第三獲取子模塊,用于在所述摘要信息列表中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第一摘要信息;
[0039]第四獲取子模塊,用于在所述最新應(yīng)用軟件中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第二摘要信息;
[0040]第二判斷子模塊,用于判斷所述第一摘要信息與第二摘要信息是否相同;
[0041]第二添加子模塊,用于第二判斷子模塊的結(jié)果為是時,將所述目標(biāo)子項(xiàng)標(biāo)記為不更新并添加到補(bǔ)丁文件;
[0042]第三添加子模塊,用于第二判斷子模塊的結(jié)果為否時,將所述最新應(yīng)用軟件中的所述目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到所述補(bǔ)丁文件。
[0043]優(yōu)選地,所述合成模塊包括:
[0044]發(fā)送子模塊,用于將所述補(bǔ)丁文件傳送至所述客戶端;
[0045]第一合成子模塊,用于在所述傳送的過程中,所述客戶端將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
[0046]優(yōu)選地,所述第一合成子模塊包括:
[0047]第五獲取子模塊,用于在所述傳送的過程中,所述客戶端獲取所述補(bǔ)丁文件中的任一子項(xiàng)文件;
[0048]第三判斷子模塊,用于判斷所述子項(xiàng)文件是否標(biāo)記為不更新;
[0049]第四添加子模塊,用于在所述第二判斷子模塊的結(jié)果為是時,將所述待更新應(yīng)用軟件中所述子項(xiàng)文件對應(yīng)的文件信息添加到更新后應(yīng)用軟件中;
[0050]第五添加子模塊,用于在所述第二判斷子模塊的結(jié)果為否時,將所述補(bǔ)丁文件中所述子項(xiàng)文件對應(yīng)的文件信息添加到所述更新后應(yīng)用軟件;
[0051]第二觸發(fā)子模塊,用于所述客戶端繼續(xù)獲取所述補(bǔ)丁文件中的未觸發(fā)所述第二判斷子模塊的任一子項(xiàng)文件,繼續(xù)觸發(fā)所述第二判斷子模塊,直到所述補(bǔ)丁文件中的全部子項(xiàng)文件均完成觸發(fā)所述第二判斷子模塊;
[0052]第六獲取子模塊,用于獲取所述更新后應(yīng)用軟件,以完成所述待更新應(yīng)用軟件的更新。
[0053]本發(fā)明還提供一種更新應(yīng)用軟件的客戶端,所述客戶端用于將待更新應(yīng)用軟件對應(yīng)的摘要信息列表發(fā)送至服務(wù)器,并獲取來自所述服務(wù)器的與所述待更新應(yīng)用軟件對應(yīng)的補(bǔ)丁文件,將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
[0054]本發(fā)明還提供一種更新應(yīng)用軟件的服務(wù)器,所述服務(wù)器包括業(yè)務(wù)服務(wù)器和內(nèi)容分發(fā)網(wǎng)絡(luò)服務(wù)器;
[0055]所述業(yè)務(wù)服務(wù)器用于接收客戶端發(fā)送的所述摘要信息列表,并將所述摘要信息列表發(fā)送至所述內(nèi)容分發(fā)網(wǎng)絡(luò)服務(wù)器;
[0056]所述內(nèi)容分發(fā)網(wǎng)絡(luò)服務(wù)器用于根據(jù)所述摘要信息列表與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件,并將所述補(bǔ)丁文件傳送至客戶端。
[0057]本發(fā)明還提供一種更新應(yīng)用軟件的系統(tǒng),所述系統(tǒng)包括客戶端和服務(wù)器;
[0058]所述客戶端為上述的客戶端;
[0059]所述服務(wù)器為上述的服務(wù)器。
[0060]本發(fā)明首先獲取客戶端的待更新應(yīng)用軟件對應(yīng)的摘要信息列表,所述待更新應(yīng)用軟件包括至少一個子項(xiàng)文件,所述摘要信息列表包括子項(xiàng)文件與第一摘要信息的對應(yīng)關(guān)系;其次,獲取與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,所述最新應(yīng)用軟件包括至少一個子項(xiàng)文件;再次,根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件;最后,將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。與現(xiàn)有技術(shù)相比,本發(fā)明的服務(wù)器不需要保存各個版本的應(yīng)用軟件,利用來自客戶端的摘要信息列表,理論上可以使所有用戶實(shí)現(xiàn)應(yīng)用軟件的更新。同時,不需要使用bsdiff工具和bspatch工具,提高了更新應(yīng)用軟件的效率。
【專利附圖】
【附圖說明】
[0061]為了更清楚地說明本申請實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0062]圖1為一種應(yīng)用軟件更新的示意圖;
[0063]圖2為本發(fā)明實(shí)施例一提供的更新應(yīng)用軟件的方法流程圖;
[0064]圖3為本發(fā)明實(shí)施例一提供的獲取待更新應(yīng)用軟件的補(bǔ)丁文件的方法流程圖;
[0065]圖4為本發(fā)明實(shí)施例一提供的補(bǔ)丁文件與待更新應(yīng)用軟件合成方法流程圖;
[0066]圖5為本發(fā)明實(shí)施例二提供的更新應(yīng)用軟件的裝置結(jié)構(gòu)圖;
[0067]圖6為本發(fā)明實(shí)施例二提供的服務(wù)器結(jié)構(gòu)示意圖;
[0068]圖7為本發(fā)明實(shí)施例二提供的更新應(yīng)用軟件的系統(tǒng)結(jié)構(gòu)圖;
[0069]圖8為本發(fā)明實(shí)施例四提供的更新應(yīng)用軟件的系統(tǒng)的信息交互圖;
[0070]圖9為本發(fā)明實(shí)施例五提供的應(yīng)用摘要信息的計算方法流程圖;
[0071]圖10為本發(fā)明實(shí)施例五提供的ZIP格式的文件結(jié)構(gòu)圖;
[0072]圖11為本發(fā)明實(shí)施例五提供的補(bǔ)丁文件產(chǎn)生流程圖;
[0073]圖12為本發(fā)明實(shí)施例五提供的補(bǔ)丁包合成流程圖。
【具體實(shí)施方式】
[0074]下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。
[0075]本發(fā)明實(shí)施例中將待更新應(yīng)用軟件作為處理對象,其中待更新應(yīng)用軟件可以為ZIP (壓縮和存儲)文件格式,具體的ZIP文件格式的結(jié)構(gòu)可以分為目錄結(jié)構(gòu)表和數(shù)據(jù)段組成,其中,目錄結(jié)構(gòu)表中的子項(xiàng)文件與數(shù)據(jù)段具有對應(yīng)關(guān)系。
[0076]實(shí)施例一
[0077]參考圖2,圖2為本實(shí)施例提供的更新應(yīng)用軟件的方法流程圖,具體包括:
[0078]步驟201:獲取客戶端的待更新應(yīng)用軟件對應(yīng)的摘要信息列表,所述待更新應(yīng)用軟件包括至少一個子項(xiàng)文件,所述摘要信息列表包括子項(xiàng)文件與第一摘要信息的對應(yīng)關(guān)系O
[0079]本實(shí)施例中,首先客戶端獲取待更新應(yīng)用軟件,其中,待更新應(yīng)用軟件的個數(shù)不受限制,可以是一個,也可以是大于一個,同時,待更新應(yīng)用軟件可以為ZIP (壓縮和存儲)文件格式。其次,客戶端獲取所述待更新應(yīng)用軟件對應(yīng)的摘要信息列表,其中,一個待更新應(yīng)用軟件包括至少一個子項(xiàng)文件,摘要信息列表包括與其對應(yīng)的待更新應(yīng)用軟件的子項(xiàng)文件與第一摘要信息的對應(yīng)關(guān)系,具體的,第一摘要信息可以用于標(biāo)識子項(xiàng)文件。最后,客戶端將獲取的待更新應(yīng)用軟件對應(yīng)的摘要信息列表發(fā)送至服務(wù)器。
[0080]實(shí)際操作中,可以通過MD5即Message-Digest Algorithm5 (消息摘要算法第五版)獲取子項(xiàng)文件對應(yīng)的第一摘要信息,具體的,獲取子項(xiàng)文件對應(yīng)的第一摘要信息的方法不受限制。其中,第一摘要信息可以由CRC (循環(huán)冗余校驗(yàn))和子項(xiàng)文件的長度組成。
[0081]步驟202:獲取與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,所述最新應(yīng)用軟件包括至少一個子項(xiàng)文件。
[0082]本實(shí)施例中,由于服務(wù)器中包括待更新應(yīng)用軟件的最新應(yīng)用軟件,其中,最新應(yīng)用軟件為該待更新應(yīng)用軟件的最新版本。所以,獲取與該待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,其中,最新應(yīng)用軟件包括至少一個子項(xiàng)文件。
[0083]步驟203:根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件。
[0084]本實(shí)施例中,由于補(bǔ)丁文件為待更新應(yīng)用軟件與最新應(yīng)用軟件的差異內(nèi)容,由于摘要信息列表可以用來標(biāo)識待更新應(yīng)用軟件,所以,本實(shí)施例可以根據(jù)摘要信息列表與最新應(yīng)用軟件的比較,獲取該待更新應(yīng)用軟件的補(bǔ)丁文件。
[0085]具體的,參考圖3,圖3為獲取待更新應(yīng)用軟件的補(bǔ)丁文件的方法流程圖,具體可以包括:
[0086]步驟301:將所述最新應(yīng)用軟件中的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng);
[0087]本實(shí)施例中,由于最新應(yīng)用軟件包括至少一個子項(xiàng)文件,所以,可以將任意一個子項(xiàng)文件確定為目標(biāo)子項(xiàng),作為后續(xù)步驟的處理對象。
[0088]步驟302:判斷所述目標(biāo)子項(xiàng)是否存在于所述摘要信息列表,如果是,則進(jìn)入步驟303,如果否,則進(jìn)入步驟306 ;
[0089]本實(shí)施例中,由于摘要信息列表包括子項(xiàng)文件和與其對應(yīng)的摘要信息,所以,可以判斷上述步驟中確定的目標(biāo)子項(xiàng)是否存在于所述摘要信息列表,如果存在,則進(jìn)入步驟303,否則進(jìn)入步驟306。
[0090]步驟303:在所述摘要信息列表中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第一摘要信息,且在所述最新應(yīng)用軟件中,獲取與目標(biāo)子項(xiàng)對應(yīng)的第二摘要信息;
[0091]本實(shí)施例中,當(dāng)目標(biāo)子項(xiàng)存在于所述摘要信息列表中,可以在該摘要信息列表中,獲取與目標(biāo)子項(xiàng)對應(yīng)的第一摘要信息,同時在最新應(yīng)用軟件中,獲取與目標(biāo)子項(xiàng)對應(yīng)的第二摘要信息,其中,獲取第一摘要信息與第二摘要信息的算法相同。
[0092]步驟304:判斷所述第一摘要信息與第二摘要信息是否相同,如果是,則進(jìn)入步驟305,如果否,則進(jìn)入步驟306 ;
[0093]本實(shí)施例中,判斷獲取的第一摘要信息與第二摘要信息是否相同,如果是,則說明該第一摘要信息對應(yīng)的子項(xiàng)文件不需要更新,進(jìn)入步驟305,否則,說明該第一摘要信息對應(yīng)的子項(xiàng)文件需要被更新,進(jìn)入步驟306。
[0094]步驟305:將所述目標(biāo)子項(xiàng)標(biāo)記為不更新并添加到補(bǔ)丁文件;
[0095]本實(shí)施例中,當(dāng)該第一摘要信息對應(yīng)的子項(xiàng)文件不需要更新時,將該目標(biāo)子項(xiàng)標(biāo)記為不更新并添加到補(bǔ)丁文件。
[0096]步驟306:將所述最新應(yīng)用軟件中的所述目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到所述補(bǔ)丁文件;
[0097]本實(shí)施例中,當(dāng)?shù)谝徽畔?yīng)的子項(xiàng)文件需要被更新時,或者目標(biāo)子項(xiàng)不存在于所述摘要信息列表中,則將該最新應(yīng)用軟件中的目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到上述補(bǔ)丁文件中,以便用于待更新應(yīng)用軟件的更新。其中,文件信息為該目標(biāo)子項(xiàng)對應(yīng)的所有數(shù)據(jù)。
[0098]步驟307:判斷所述最新應(yīng)用軟件中的子項(xiàng)文件全部完成執(zhí)行步驟302,如果否,則進(jìn)入步驟308,如果是,則進(jìn)入步驟309 ;
[0099]本實(shí)施例中,判斷最新應(yīng)用軟件中的所有子項(xiàng)文件是否均完成執(zhí)行步驟302,如果是,則進(jìn)入步驟309,否則,進(jìn)入步驟308。
[0100]步驟308:將所述最新應(yīng)用軟件中未執(zhí)行步驟302的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng),進(jìn)入步驟302 ;
[0101]本實(shí)施例中,將最新應(yīng)用軟件中的未執(zhí)行步驟302的任意一個子項(xiàng)文件確定為目標(biāo)子項(xiàng),繼續(xù)判斷該目標(biāo)子項(xiàng)是否存在于所述摘要信息列表。
[0102]步驟309:獲取所述補(bǔ)丁文件。
[0103]本實(shí)施例中,當(dāng)最新應(yīng)用軟件中的所有子項(xiàng)文件均完成步驟302后,獲取此時的補(bǔ)丁文件,以便由于待更新軟件的更新。
[0104]步驟204:將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
[0105]本實(shí)施例中,獲取補(bǔ)丁文件后,將該補(bǔ)丁文件傳送至所述客戶端,該客戶端將該補(bǔ)丁文件和帶更新應(yīng)用軟件進(jìn)行合成,得到更新后應(yīng)用軟件,最終完成該待更新應(yīng)用軟件的更新。
[0106]實(shí)際操作中,可以首先將所述補(bǔ)丁文件傳送至所述客戶端;其次,在所述傳送的過程中,所述客戶端將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
[0107]具體的,參考圖4,圖4為補(bǔ)丁文件與待更新應(yīng)用軟件合成方法流程圖,具體可以包括:
[0108]步驟401:在所述傳送的過程中,所述客戶端獲取所述補(bǔ)丁文件中的任一子項(xiàng)文件;
[0109]本實(shí)施例中,在服務(wù)器向客戶端傳送補(bǔ)丁文件,即客戶端下載補(bǔ)丁文件的過程中,客戶端首先獲取已下載部分補(bǔ)丁文件中的任意一個子項(xiàng)文件。
[0110]其中,本實(shí)施例在下載補(bǔ)丁文件的過程中進(jìn)行補(bǔ)丁文件與待更新應(yīng)用軟件合成,節(jié)約了應(yīng)用軟件的更新時間,提高了更新應(yīng)用軟件的效率。
[0111 ] 步驟402:判斷所述子項(xiàng)文件是否標(biāo)記為不更新,如果是,則進(jìn)入步驟403,如果否,則進(jìn)入步驟404 ;
[0112]本實(shí)施例中,判斷上述獲取的子項(xiàng)文件是否標(biāo)記為不更新,如果是,即該子項(xiàng)文件不需要更新,則進(jìn)入步驟403 ;否則,進(jìn)入步驟404。
[0113]步驟403:將所述待更新應(yīng)用軟件中所述子項(xiàng)文件對應(yīng)的文件信息添加到更新后應(yīng)用軟件中;
[0114]本實(shí)施例中,當(dāng)該子項(xiàng)文件不需要被更新,則將待更新應(yīng)用軟件中與該子項(xiàng)文件對應(yīng)的文件信息添加到更新后應(yīng)用軟件中。其中,文件信息為該待更新應(yīng)用軟件中的該子項(xiàng)文件對應(yīng)的所有數(shù)據(jù)。
[0115]步驟404:將所述補(bǔ)丁文件中所述子項(xiàng)文件對應(yīng)的文件信息添加到所述更新后應(yīng)用軟件;
[0116]本實(shí)施例中,當(dāng)子項(xiàng)文件沒有標(biāo)記為不更新,即該子項(xiàng)文件需要被更新時,將補(bǔ)丁文件中與該子項(xiàng)文件對應(yīng)的文件信息添加到該更新后應(yīng)用軟件中。
[0117]實(shí)際操作中,步驟403和步驟404中的向更新后應(yīng)用軟件中添加文件信息的過程就是對二進(jìn)制數(shù)據(jù)流的復(fù)制。
[0118]步驟405:判斷所述補(bǔ)丁文件中的全部子項(xiàng)文件均完成執(zhí)行步驟402,如果是,則進(jìn)入步驟407,如果否,則進(jìn)入步驟406 ;
[0119]本實(shí)施例中,判斷該補(bǔ)丁文件中的全部子項(xiàng)文件是否全部完成執(zhí)行步驟402,如果是,則進(jìn)入步驟407,否則,進(jìn)入步驟406。
[0120]步驟406:所述客戶端繼續(xù)獲取所述補(bǔ)丁文件中除上述子項(xiàng)文件的其他任一子項(xiàng)文件,繼續(xù)執(zhí)行步驟402;
[0121]本實(shí)施例中,如果該補(bǔ)丁文件中的子項(xiàng)文件沒有全部完成執(zhí)行步驟402,則所述客戶端獲取所述補(bǔ)丁文件中除上述子項(xiàng)文件的其他任一子項(xiàng)文件,繼續(xù)執(zhí)行所述步驟402。
[0122]步驟407:獲取所述更新后應(yīng)用軟件,以完成所述待更新應(yīng)用軟件的更新。
[0123]本實(shí)施例中,如果該補(bǔ)丁文件中的所有子項(xiàng)文件均完成執(zhí)行步驟402,則可以獲取得到的更新后應(yīng)用軟件,以完成該待更新應(yīng)用軟件的更新。
[0124]本實(shí)施例首先獲取客戶端的待更新應(yīng)用軟件對應(yīng)的摘要信息列表,所述待更新應(yīng)用軟件包括至少一個子項(xiàng)文件,所述摘要信息列表包括子項(xiàng)文件與第一摘要信息的對應(yīng)關(guān)系;其次,獲取與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,所述最新應(yīng)用軟件包括至少一個子項(xiàng)文件;再次,根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件;最后,將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。與現(xiàn)有技術(shù)相比,本實(shí)施例的服務(wù)器不需要保存各個版本的應(yīng)用軟件,利用來自客戶端的摘要信息列表,理論上可以使所有用戶實(shí)現(xiàn)應(yīng)用軟件的更新。同時,不需要使用bsdiff工具和bspatch工具,提高了更新應(yīng)用軟件的效率。
[0125]實(shí)施例二
[0126]參考圖5,圖5為本實(shí)施例提供的更新應(yīng)用軟件的裝置結(jié)構(gòu)圖,所述裝置可以包括:
[0127]第一獲取模塊501,用于獲取客戶端的待更新應(yīng)用軟件對應(yīng)的摘要信息列表,所述待更新應(yīng)用軟件包括至少一個子項(xiàng)文件,所述摘要信息列表包括子項(xiàng)文件與第一摘要信息的對應(yīng)關(guān)系;
[0128]第二獲取模塊502,用于獲取與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,所述最新應(yīng)用軟件包括至少一個子項(xiàng)文件;
[0129]第三獲取模塊503,用于根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件;
[0130]合成模塊504,用于將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
[0131]其中,所述第三獲取模塊包括:
[0132]第一確定子模塊,用于將所述最新應(yīng)用軟件中的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng);
[0133]第一判斷子模塊,用于判斷所述目標(biāo)子項(xiàng)是否存在于所述摘要信息列表;
[0134]第一獲取子模塊,用于在所述第一判斷子模塊的結(jié)果為是時,根據(jù)所述目標(biāo)子項(xiàng)對應(yīng)的摘要信息獲取補(bǔ)丁文件,所述摘要信息包括第一摘要信息和第二摘要信息;
[0135]第一添加子模塊,用于在所述第一判斷子模塊的結(jié)果為否時,將所述最新應(yīng)用軟件中的所述目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到所述補(bǔ)丁文件;
[0136]第一觸發(fā)子模塊,用于將所述最新應(yīng)用軟件中未觸發(fā)所述第一判斷子模塊的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng),繼續(xù)觸發(fā)所述第一判斷子模塊,直到所述最新應(yīng)用軟件中的子項(xiàng)文件全部完成觸發(fā)所述第一判斷子模塊;
[0137]第二獲取子模塊,用于獲取所述補(bǔ)丁文件。
[0138]其中,所述第一獲取子模塊包括:
[0139]第三獲取子模塊,用于在所述摘要信息列表中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第一摘要信息;
[0140]第四獲取子模塊,用于在所述最新應(yīng)用軟件中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第二摘要信息;
[0141]第二判斷子模塊,用于判斷所述第一摘要信息與第二摘要信息是否相同;
[0142]第二添加子模塊,用于第二判斷子模塊的結(jié)果為是時,將所述目標(biāo)子項(xiàng)標(biāo)記為不更新并添加到補(bǔ)丁文件;
[0143]第三添加子模塊,用于第二判斷子模塊的結(jié)果為否時,將所述最新應(yīng)用軟件中的所述目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到所述補(bǔ)丁文件。
[0144]其中,所述合成模塊包括:
[0145]發(fā)送子模塊,用于將所述補(bǔ)丁文件傳送至所述客戶端;
[0146]第一合成子模塊,用于在所述傳送的過程中,所述客戶端將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
[0147]其中,所述第一合成子模塊包括:
[0148]第五獲取子模塊,用于在所述傳送的過程中,所述客戶端獲取所述補(bǔ)丁文件中的任一子項(xiàng)文件;
[0149]第三判斷子模塊,用于判斷所述子項(xiàng)文件是否標(biāo)記為不更新;
[0150]第四添加子模塊,用于在所述第二判斷子模塊的結(jié)果為是時,將所述待更新應(yīng)用軟件中所述子項(xiàng)文件對應(yīng)的文件信息添加到更新后應(yīng)用軟件中;
[0151]第五添加子模塊,用于在所述第二判斷子模塊的結(jié)果為否時,將所述補(bǔ)丁文件中所述子項(xiàng)文件對應(yīng)的文件信息添加到所述更新后應(yīng)用軟件;
[0152]第二觸發(fā)子模塊,用于所述客戶端繼續(xù)獲取所述補(bǔ)丁文件中的未觸發(fā)所述第二判斷子模塊的任一子項(xiàng)文件,繼續(xù)觸發(fā)所述第二判斷子模塊,直到所述補(bǔ)丁文件中的全部子項(xiàng)文件均完成觸發(fā)所述第二判斷子模塊;
[0153]第六獲取子模塊,用于獲取所述更新后應(yīng)用軟件,以完成所述待更新應(yīng)用軟件的更新。
[0154]請參考圖6,其圖6為本實(shí)施例提供的一種服務(wù)器,該服務(wù)器可以用于實(shí)施上述實(shí)施例中提供的方法。具體來講:
[0155]服務(wù)器可以包括有一個或一個以上可讀存儲介質(zhì)的存儲器610、輸入單元620、輸出單元630包括有一個或者一個以上處理核心的處理器640、以及電源650等部件。其中:
[0156]存儲器610可用于存儲軟件程序以及模塊,處理器640通過運(yùn)行存儲在存儲器610的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器610可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序;存儲數(shù)據(jù)區(qū)可存儲根據(jù)計算機(jī)的使用所創(chuàng)建的數(shù)據(jù)等。此外,存儲器610可以包括高速隨機(jī)存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。相應(yīng)地,存儲器610還可以包括存儲器控制器,以提供處理器640和輸入單元620對存儲器610的訪問。
[0157]輸入單元620可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號輸入。
[0158]處理器640是服務(wù)器的控制中心,利用各種接口和線路連接各個部分,通過運(yùn)行或執(zhí)行存儲在存儲器610內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器610內(nèi)的數(shù)據(jù),執(zhí)行計算機(jī)的各種功能和處理數(shù)據(jù),從而對手機(jī)進(jìn)行整體監(jiān)控。可選的,處理器640可包括一個或多個處理核心。
[0159]服務(wù)器還包括給各個部件供電的電源650 (比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器640邏輯相連,從而通過電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。電源650還可以包括一個或一個以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。
[0160]具體在本實(shí)施例中,處理器640會按照如下的指令,將一個或一個以上的應(yīng)用程序的進(jìn)程對應(yīng)的可執(zhí)行文件加載到存儲器610中,并由處理器640來運(yùn)行存儲在存儲器610中的應(yīng)用程序,從而實(shí)現(xiàn)各種功能:
[0161]獲取客戶端的待更新應(yīng)用軟件對應(yīng)的摘要信息列表,所述待更新應(yīng)用軟件包括至少一個子項(xiàng)文件,所述摘要信息列表包括子項(xiàng)文件與第一摘要信息的對應(yīng)關(guān)系;
[0162]獲取與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,所述最新應(yīng)用軟件包括至少一個子項(xiàng)文件;
[0163]根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件;
[0164]將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
[0165]優(yōu)選地,所述根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件,包括:
[0166]將所述最新應(yīng)用軟件中的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng),執(zhí)行獲取補(bǔ)丁文件流程:判斷所述目標(biāo)子項(xiàng)是否存在于所述摘要信息列表,如果是,則在所述摘要信息列表中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第一摘要信息,且在所述最新應(yīng)用軟件中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第二摘要信息;當(dāng)所述第一摘要信息與第二摘要信息相同時,將所述目標(biāo)子項(xiàng)標(biāo)記為不更新并添加到補(bǔ)丁文件;當(dāng)所述第一摘要信息與第二摘要信息不相同時,或者,當(dāng)所述目標(biāo)子項(xiàng)不存在于所述摘要信息列表時,將所述最新應(yīng)用軟件中的所述目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到所述補(bǔ)丁文件;將所述最新應(yīng)用軟件中未執(zhí)行所述獲取補(bǔ)丁文件流程的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng),繼續(xù)執(zhí)行所述獲取補(bǔ)丁文件流程,直到所述最新應(yīng)用軟件中的子項(xiàng)文件全部完成執(zhí)行所述獲取補(bǔ)丁文件流程;
[0167]獲取所述補(bǔ)丁文件。
[0168]優(yōu)選地,所述將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新,包括:
[0169]將所述補(bǔ)丁文件傳送至所述客戶端;
[0170]在所述傳送的過程中,所述客戶端將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
[0171]優(yōu)選地,所述在所述傳送的過程中,所述客戶端將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新,包括:
[0172]在所述傳送的過程中,所述客戶端獲取所述補(bǔ)丁文件中的任一子項(xiàng)文件;
[0173]判斷所述子項(xiàng)文件是否標(biāo)記為不更新,如果是,則將所述待更新應(yīng)用軟件中所述子項(xiàng)文件對應(yīng)的文件信息添加到更新后應(yīng)用軟件中,如果否,則將所述補(bǔ)丁文件中所述子項(xiàng)文件對應(yīng)的文件信息添加到所述更新后應(yīng)用軟件;
[0174]所述客戶端繼續(xù)獲取所述補(bǔ)丁文件中的未執(zhí)行所述判斷所述子項(xiàng)文件是否標(biāo)記為不更新的任一子項(xiàng)文件,繼續(xù)執(zhí)行所述判斷所述子項(xiàng)文件是否標(biāo)記為不更新,直到所述補(bǔ)丁文件中的全部子項(xiàng)文件均完成執(zhí)行所述判斷所述子項(xiàng)文件是否標(biāo)記為不更新;
[0175]獲取所述更新后應(yīng)用軟件,以完成所述待更新應(yīng)用軟件的更新。
[0176]本實(shí)施例首先獲取客戶端的待更新應(yīng)用軟件對應(yīng)的摘要信息列表,所述待更新應(yīng)用軟件包括至少一個子項(xiàng)文件,所述摘要信息列表包括子項(xiàng)文件與第一摘要信息的對應(yīng)關(guān)系;其次,獲取與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,所述最新應(yīng)用軟件包括至少一個子項(xiàng)文件;再次,根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件;最后,將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。與現(xiàn)有技術(shù)相比,本實(shí)施例的服務(wù)器不需要保存各個版本的應(yīng)用軟件,利用來自客戶端的摘要信息列表,理論上可以使所有用戶實(shí)現(xiàn)應(yīng)用軟件的更新。同時,不需要使用bsdiff工具和bspatch工具,提高了更新應(yīng)用軟件的效率。
[0177]實(shí)施例三
[0178]本發(fā)明實(shí)施例將從更新應(yīng)用軟件的客戶端的角度進(jìn)行描述,該更新應(yīng)用軟件的方法具體可以集成在客戶端中,該客戶端可以裝載在終端中,該終端具體可以為智能手機(jī)、平板電腦、電子書閱讀器、MP3 (Moving Picture Experts Group Aud1 Layer III,動態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面3)播放器、MP4 (Moving Picture Experts Group Aud1 LayerIV,動態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面3)播放器、膝上型便攜計算機(jī)和臺式計算機(jī)等等。
[0179]本實(shí)施例提供一種更新應(yīng)用軟件的客戶端,所述客戶端具體可以用于:
[0180]首先,將待更新應(yīng)用軟件對應(yīng)的摘要信息列表發(fā)送至服務(wù)器;
[0181]其次,獲取來自所述服務(wù)器的與所述待更新應(yīng)用軟件對應(yīng)的補(bǔ)丁文件;
[0182]最后,將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
[0183]本實(shí)施例還提供一種更新應(yīng)用軟件的服務(wù)器,所述服務(wù)器包括業(yè)務(wù)服務(wù)器和內(nèi)容分發(fā)網(wǎng)絡(luò)服務(wù)器;
[0184]所述業(yè)務(wù)服務(wù)器用于接收客戶端發(fā)送的所述摘要信息列表,并將所述摘要信息列表發(fā)送至所述內(nèi)容分發(fā)網(wǎng)絡(luò)服務(wù)器;
[0185]所述內(nèi)容分發(fā)網(wǎng)絡(luò)服務(wù)器用于根據(jù)所述摘要信息列表與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件,并將所述補(bǔ)丁文件傳送至客戶端。
[0186]實(shí)施例四
[0187]本實(shí)施例提供一種更新應(yīng)用軟件的系統(tǒng),參考圖7,圖7為本實(shí)施例提供的更新應(yīng)用軟件的系統(tǒng)結(jié)構(gòu)圖,其中,所述系統(tǒng)可以包括客戶端701,業(yè)務(wù)服務(wù)器702和內(nèi)容分發(fā)網(wǎng)絡(luò)服務(wù)器703 ;
[0188]所述客戶端701可以為上述更新應(yīng)用軟件的客戶端;
[0189]所述業(yè)務(wù)服務(wù)器702用于接收所述客戶端701發(fā)送的所述摘要信息列表,并將所述摘要信息列表發(fā)送至所述內(nèi)容分發(fā)網(wǎng)絡(luò)服務(wù)器703 ;
[0190]所述內(nèi)容分發(fā)網(wǎng)絡(luò)服務(wù)器703用于根據(jù)所述摘要信息列表與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件,并將所述補(bǔ)丁文件傳送至所述客戶端701。
[0191]其中,參考圖8,圖8為本實(shí)施例提供的更新應(yīng)用軟件的系統(tǒng)的信息交互圖,下面詳細(xì)介紹圖8中各個步驟的工作原理:
[0192]Al.檢查客戶端應(yīng)用更新:客戶端上報所有已經(jīng)安裝應(yīng)用的信息,比如應(yīng)用的名稱,包名稱,版本號等到(具體參考后面的上報應(yīng)用信息結(jié)構(gòu))服務(wù)器。
[0193]A2.返回應(yīng)用更新信息:通過和服務(wù)器的應(yīng)用信息對比,找到哪些是可升級應(yīng)用,哪些應(yīng)用有補(bǔ)丁包,哪些應(yīng)用需要上傳摘要到服務(wù)器,并把上述信息發(fā)送到客戶端。,這些信息就是應(yīng)用更新的信息(具體參考后面的應(yīng)用更新信息結(jié)構(gòu))。
[0194]A3.判斷哪些應(yīng)用需要上傳應(yīng)用摘要:客戶端收到應(yīng)用更新信息后,解析出需要上傳摘要到服務(wù)器的應(yīng)用列表。
[0195]A4.上報摘要:通過舊的安裝計算出摘要信息,上傳到服務(wù)器。
[0196]A5.返回應(yīng)用更新信息:服務(wù)器收到摘要信息后,返回該應(yīng)用的更新信息。
[0197]B.產(chǎn)生補(bǔ)丁包流程:
[0198]B1.上報應(yīng)用摘要:邏輯服務(wù)器上傳摘要到⑶N服務(wù)器。
[0199]B2.產(chǎn)生補(bǔ)丁包:⑶N服務(wù)器收到摘要信息后,對比新版本應(yīng)用,產(chǎn)生補(bǔ)丁包(具體參考后面補(bǔ)丁包的產(chǎn)生)。
[0200]C.下載和合成新包流程:
[0201]Cl.下載補(bǔ)丁包:用戶觸發(fā)下載,通過更新信息取得補(bǔ)丁包的URL地址,從該地址下載補(bǔ)丁包。
[0202]C2.返回補(bǔ)丁片段1,合成:返回部分?jǐn)?shù)據(jù)后,就可以開始邊下載邊合成(參考后面補(bǔ)丁包的合成)。
[0203]C3.返回補(bǔ)丁片段2,合成:同C2。
[0204]C4.返回補(bǔ)丁片段n,合成:同C2。
[0205]C5.返回補(bǔ)丁最后一個片段,合成:收到最后一個片段后,合成到完成,整個下載和合成流程完成。
[0206]與現(xiàn)有技術(shù)相比,本實(shí)施例提供的系統(tǒng)中的服務(wù)器不需要保存各個版本的應(yīng)用軟件,利用來自客戶端的摘要信息列表,理論上可以使所有用戶實(shí)現(xiàn)應(yīng)用軟件的更新。同時,不需要使用bsdiff工具和bspatch工具,提高了更新應(yīng)用軟件的效率。
[0207]實(shí)施例五
[0208]本實(shí)施例以APK文件為例,介紹一種更新應(yīng)用軟件的方法,具體如下:
[0209]首先,介紹該APK文件的應(yīng)用摘要信息的計算方法,參考圖9,圖9為應(yīng)用摘要信息的計算方法流程圖,具體的,圖9的工作原理可以包括:
[0210]首先,使用zip工具讀取舊版本APK文件;
[0211]其次,依次讀取APK文件的每一項(xiàng),獲取每一項(xiàng)的文件名,CRC和未壓縮的文件長度,拼接成如上上述子項(xiàng)的摘要信息,并添加到摘要信息列表結(jié)構(gòu)中。
[0212]最后,重復(fù)上一步,到遍歷完APK文件內(nèi)部每一個子項(xiàng)。
[0213]其中,摘要信息的結(jié)構(gòu)具體為:
[0214]map<string, long>apkDetail
[0215]string:文件名
[0216]long:文件CRC(4字節(jié))+文件未壓縮的大小(4字節(jié))
[0217]其中,上報應(yīng)用信息結(jié)構(gòu):
[0218]struct ClientApkDetail
[0219]{
[0220]Orequire string packageName;//客戶端應(yīng)用包名
[0221]lrequire string manifestMd5 -J/ 客戶端應(yīng)用 manifest 文件 md5
[0222]2require string vers1nCode ;// 版本號
[0223]2opt1nal map〈string,long>apkDetail;//文件名:CRC+FileSize
[0224]};
[0225]應(yīng)用更新信息結(jié)構(gòu):
[0226]struct ApkPatchDetail
[0227]{
[0228]Orequire long patchld;//增量文件 id,用于上報
[0229]lrequire long pkgId4NewVers1n;//服務(wù)器下發(fā)的新版本包 id
[0230]2require string patchFileUrl;//增量文件下載路徑
[0231]3require int patchFileSize;//增量文件大小(界面顯示使用,單位KB)
[0232]4require string patchFielMd5;//增量文件 md5,可用于校驗(yàn)
[0233]5require string packageName;//應(yīng)用包名
[0234]};
[0235]其次,介紹該APK文件的補(bǔ)丁文件產(chǎn)生流程,其中,由于APK文件為ZIP格式的文件,所以,首先介紹一下ZIP格式的文件結(jié)構(gòu),參考圖10,圖10為ZIP格式的文件結(jié)構(gòu)圖,另夕卜,參考圖11,圖11為補(bǔ)丁文件產(chǎn)生流程圖,具體的,圖11的工作原理可以包括:將APK文件的摘要信息的每一項(xiàng)與新版本APK文件的每一項(xiàng)比較,最終確定該APK文件的補(bǔ)丁文件。
[0236]最后,介紹該APK文件的補(bǔ)丁包合成流程,參考圖12,圖12為補(bǔ)丁包合成流程圖,結(jié)合圖10可知,本實(shí)施例在下載補(bǔ)丁包的過程中完成了補(bǔ)丁包的合成,實(shí)現(xiàn)了邊下載邊合成的操作。
[0237]具體的,補(bǔ)丁包文件結(jié)構(gòu)可以如下:
[0238]/**
[0239]*patch 包格式
[0240]*
[0241]*CentralDirItemCount:文件內(nèi)子項(xiàng)個數(shù)
[0242]*CentralDirRecordl+isNeedUpdate (boolean):子項(xiàng) I 的描述信息
[0243]*CentralDirRecord2+isNeedUpdate (boolean):子項(xiàng) 2 的描述信息
[0244]*CentralDirRecord3+isNeedUpdate (boolean):子項(xiàng) 3 的描述信息
[0245]*
[0246]......
[0247]*CentralDirRecordn+isNeedUpdate (boolean):子項(xiàng) η 的描述信息
[0248]*File Data (Compressed):需要更新的子項(xiàng)的數(shù)據(jù),順序是I到η,需要更新的子項(xiàng)才有。
[0249]=I=EndofCentralDirRecord:ΑΡΚ 文件的目錄結(jié)束項(xiàng)。
[0250]*/
[0251]說明:CentralDirRecord:對應(yīng) ZIP 文件結(jié)構(gòu)中的 Central Directory (目錄結(jié)構(gòu)表)中的子項(xiàng)。
[0252]File Data (Compressed):對應(yīng) ZIP 文件結(jié)構(gòu)中的 Local File Header 后面的文件數(shù)據(jù)段。
[0253]EndofCentralDirRecord:對應(yīng) ZIP 文件的 End Of Central Directory。
[0254]如上三項(xiàng)都是直接從新版本的APK文件中直接讀取來填充,isNeedUpdate是根據(jù)客戶端上傳的應(yīng)用摘要信息和新版本的APK計算獲得。
[0255]對于裝置實(shí)施例而言,由于其基本對應(yīng)于方法實(shí)施例,所以相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實(shí)施。
[0256]需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0257]以上對本發(fā)明實(shí)施例所提供的更新應(yīng)用軟件的方法、裝置、客戶端、服務(wù)器及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
【權(quán)利要求】
1.一種更新應(yīng)用軟件的方法,其特征在于,所述方法包括: 獲取客戶端的待更新應(yīng)用軟件對應(yīng)的摘要信息列表,所述待更新應(yīng)用軟件包括至少一個子項(xiàng)文件,所述摘要信息列表包括子項(xiàng)文件與第一摘要信息的對應(yīng)關(guān)系; 獲取與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,所述最新應(yīng)用軟件包括至少一個子項(xiàng)文件; 根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件; 將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件,包括: 將所述最新應(yīng)用軟件中的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng),執(zhí)行獲取補(bǔ)丁文件流程:判斷所述目標(biāo)子項(xiàng)是否存在于所述摘要信息列表,如果是,則根據(jù)所述目標(biāo)子項(xiàng)對應(yīng)的摘要信息獲取補(bǔ)丁文件,所述摘要信息包括第一摘要信息和第二摘要信息;如果否,則將所述最新應(yīng)用軟件中的所述目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到所述補(bǔ)丁文件;將所述最新應(yīng)用軟件中未執(zhí)行所述獲取補(bǔ)丁文件流程的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng),繼續(xù)執(zhí)行所述獲取補(bǔ)丁文件流程,直到所述最新應(yīng)用軟件中的子項(xiàng)文件全部完成執(zhí)行所述獲取補(bǔ)丁文件流程; 獲取所述補(bǔ)丁文件。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述目標(biāo)子項(xiàng)對應(yīng)的摘要信息獲取補(bǔ)丁文件,所述摘要信息包括第一摘要信息和第二摘要信息,包括: 在所述摘要信息列表中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第一摘要信息,且在所述最新應(yīng)用軟件中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第二摘要信息; 判斷所述第一摘要信息與第二摘要信息是否相同,如果是,則將所述目標(biāo)子項(xiàng)標(biāo)記為不更新并添加到補(bǔ)丁文件,如果否,則將所述最新應(yīng)用軟件中的所述目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到所述補(bǔ)丁文件。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新,包括: 將所述補(bǔ)丁文件傳送至所述客戶端; 在所述傳送的過程中,所述客戶端將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述在所述傳送的過程中,所述客戶端將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新,包括: 在所述傳送的過程中,所述客戶端獲取所述補(bǔ)丁文件中的任一子項(xiàng)文件; 判斷所述子項(xiàng)文件是否標(biāo)記為不更新,如果是,則將所述待更新應(yīng)用軟件中所述子項(xiàng)文件對應(yīng)的文件信息添加到更新后應(yīng)用軟件中,如果否,則將所述補(bǔ)丁文件中所述子項(xiàng)文件對應(yīng)的文件信息添加到所述更新后應(yīng)用軟件; 所述客戶端繼續(xù)獲取所述補(bǔ)丁文件中的未執(zhí)行所述判斷所述子項(xiàng)文件是否標(biāo)記為不更新的任一子項(xiàng)文件,繼續(xù)執(zhí)行所述判斷所述子項(xiàng)文件是否標(biāo)記為不更新,直到所述補(bǔ)丁文件中的全部子項(xiàng)文件均完成執(zhí)行所述判斷所述子項(xiàng)文件是否標(biāo)記為不更新; 獲取所述更新后應(yīng)用軟件,以完成所述待更新應(yīng)用軟件的更新。
6.一種更新應(yīng)用軟件的裝置,其特征在于,所述裝置包括: 第一獲取模塊,用于獲取客戶端的待更新應(yīng)用軟件對應(yīng)的摘要信息列表,所述待更新應(yīng)用軟件包括至少一個子項(xiàng)文件,所述摘要信息列表包括子項(xiàng)文件與第一摘要信息的對應(yīng)關(guān)系; 第二獲取模塊,用于獲取與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,所述最新應(yīng)用軟件包括至少一個子項(xiàng)文件; 第三獲取模塊,用于根據(jù)所述摘要信息列表與所述最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件; 合成模塊,用于將所述補(bǔ)丁文件傳送至所述客戶端,以便將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第三獲取模塊包括: 第一確定子模塊,用于將所述最新應(yīng)用軟件中的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng); 第一判斷子模塊,用于判斷所述目標(biāo)子項(xiàng)是否存在于所述摘要信息列表; 第一獲取子模塊,用于在所述第一判斷子模塊的結(jié)果為是時,根據(jù)所述目標(biāo)子項(xiàng)對應(yīng)的摘要信息獲取補(bǔ)丁文件,所述摘要信息包括第一摘要信息和第二摘要信息; 第一添加子模塊,用于在所述第一判斷子模塊的結(jié)果為否時,將所述最新應(yīng)用軟件中的所述目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到所述補(bǔ)丁文件; 第一觸發(fā)子模塊,用于將所述最新應(yīng)用軟件中未觸發(fā)所述第一判斷子模塊的任一子項(xiàng)文件確定為目標(biāo)子項(xiàng),繼續(xù)觸發(fā)所述第一判斷子模塊,直到所述最新應(yīng)用軟件中的子項(xiàng)文件全部完成觸發(fā)所述第一判斷子模塊; 第二獲取子模塊,用于獲取所述補(bǔ)丁文件。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述第一獲取子模塊包括: 第三獲取子模塊,用于在所述摘要信息列表中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第一摘要信息; 第四獲取子模塊,用于在所述最新應(yīng)用軟件中,獲取與所述目標(biāo)子項(xiàng)對應(yīng)的第二摘要信息; 第二判斷子模塊,用于判斷所述第一摘要信息與第二摘要信息是否相同; 第二添加子模塊,用于第二判斷子模塊的結(jié)果為是時,將所述目標(biāo)子項(xiàng)標(biāo)記為不更新并添加到補(bǔ)丁文件; 第三添加子模塊,用于第二判斷子模塊的結(jié)果為否時,將所述最新應(yīng)用軟件中的所述目標(biāo)子項(xiàng)對應(yīng)的文件信息添加到所述補(bǔ)丁文件。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述合成模塊包括: 發(fā)送子模塊,用于將所述補(bǔ)丁文件傳送至所述客戶端; 第一合成子模塊,用于在所述傳送的過程中,所述客戶端將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述第一合成子模塊包括: 第五獲取子模塊,用于在所述傳送的過程中,所述客戶端獲取所述補(bǔ)丁文件中的任一子項(xiàng)文件; 第三判斷子模塊,用于判斷所述子項(xiàng)文件是否標(biāo)記為不更新; 第四添加子模塊,用于在所述第二判斷子模塊的結(jié)果為是時,將所述待更新應(yīng)用軟件中所述子項(xiàng)文件對應(yīng)的文件信息添加到更新后應(yīng)用軟件中; 第五添加子模塊,用于在所述第二判斷子模塊的結(jié)果為否時,將所述補(bǔ)丁文件中所述子項(xiàng)文件對應(yīng)的文件信息添加到所述更新后應(yīng)用軟件; 第二觸發(fā)子模塊,用于所述客戶端繼續(xù)獲取所述補(bǔ)丁文件中的未觸發(fā)所述第二判斷子模塊的任一子項(xiàng)文件,繼續(xù)觸發(fā)所述第二判斷子模塊,直到所述補(bǔ)丁文件中的全部子項(xiàng)文件均完成觸發(fā)所述第二判斷子模塊; 第六獲取子模塊,用于獲取所述更新后應(yīng)用軟件,以完成所述待更新應(yīng)用軟件的更新。
11.一種更新應(yīng)用軟件的客戶端,其特征在于,所述客戶端用于將待更新應(yīng)用軟件對應(yīng)的摘要信息列表發(fā)送至服務(wù)器,并獲取來自所述服務(wù)器的與所述待更新應(yīng)用軟件對應(yīng)的補(bǔ)丁文件,將所述補(bǔ)丁文件與所述待更新應(yīng)用軟件合成,以完成所述待更新應(yīng)用軟件的更新。
12.一種更新應(yīng)用軟件的服務(wù)器,其特征在于,所述服務(wù)器包括業(yè)務(wù)服務(wù)器和內(nèi)容分發(fā)網(wǎng)絡(luò)服務(wù)器; 所述業(yè)務(wù)服務(wù)器用于接收客戶端發(fā)送的所述摘要信息列表,并將所述摘要信息列表發(fā)送至所述內(nèi)容分發(fā)網(wǎng)絡(luò)服務(wù)器; 所述內(nèi)容分發(fā)網(wǎng)絡(luò)服務(wù)器用于根據(jù)所述摘要信息列表與所述待更新應(yīng)用軟件對應(yīng)的最新應(yīng)用軟件,獲取所述待更新應(yīng)用軟件的補(bǔ)丁文件,并將所述補(bǔ)丁文件傳送至客戶端。
13.一種更新應(yīng)用軟件的系統(tǒng),其特征在于,所述系統(tǒng)包括客戶端和服務(wù)器; 所述客戶端為上述權(quán)利要求11所述的客戶端; 所述服務(wù)器為上述權(quán)利要求12所述的服務(wù)器。
【文檔編號】G06F9/445GK104426924SQ201310367633
【公開日】2015年3月18日 申請日期:2013年8月21日 優(yōu)先權(quán)日:2013年8月21日
【發(fā)明者】曹飛, 黃 俊, 鄒迪飛, 林聲煒, 鐘于勝, 吳振宇, 饒凌河, 馬俊, 譚新民, 祝濤, 呂婧, 周濤, 賴云鵬, 羅諺君, 侯媛媛, 林水旺, 吳曉慧 申請人:騰訊科技(深圳)有限公司