本發(fā)明涉及軟件升級,尤其涉及一種工業(yè)軟件的增量升級方法及裝置、計算機可讀存儲介質(zhì)、計算機程序產(chǎn)品。
背景技術(shù):
1、當前,大部分工業(yè)軟件基于windows平臺的msvc開發(fā),由于歷史包袱重、功能模塊數(shù)量龐大、模塊間耦合嚴重等問題,難以使用常見的通過提升模塊版本號的方式來進行模塊增量升級。并且由于工業(yè)軟件對穩(wěn)定性的高要求,bsdiff等二進制差分的方法由于需要在用戶本地合并生成新的二進制文件,穩(wěn)定性較差,較難在工業(yè)軟件生產(chǎn)環(huán)境使用。因此,大部分工業(yè)軟件目前都采用全量包升級的方式,在軟件需求變化日益頻繁的互聯(lián)網(wǎng)時代,會造成下載流量大、安裝過程耗時、升級穩(wěn)定性差等問題。但是當網(wǎng)絡(luò)帶寬較慢時或者客戶端安裝包本身體積較大時,需要花費更多的時間完成安裝包的下載,同時也會消耗更多的網(wǎng)絡(luò)流量,影響用戶的升級體驗。為了避免上述問題,現(xiàn)有技術(shù)中提出了各種增量升級方法。
2、例如,公開號為cn105740016a的中國發(fā)明專利申請公開了一種應(yīng)用程序的增量發(fā)布方法和裝置、升級方法和裝置,其通過一種應(yīng)用程序的增量發(fā)布方法和裝置、升級方法和裝置。所述增量發(fā)布方法包括以下步驟:獲取應(yīng)用程序的第一版本安裝包和第二版本安裝包;比較應(yīng)用程序的第一版本安裝包中的文件和第二版本安裝包中的文件,得到新增文件和變化文件的列表;將變化文件進行差分計算得到第一差分數(shù)據(jù);采用二進制流方式打開應(yīng)用程序的第一版本安裝包,在所述第一版本安裝包的文件中添加變化文件和新增文件,得到第三版本安裝包;將第三版本安裝包與第二版本安裝包進行差分計算得到第二差分數(shù)據(jù);將新增文件和變化文件的列表、第一差分數(shù)據(jù)、第二差分數(shù)據(jù)和新增文件打包成增量升級包;發(fā)布所述增量升級包。不需要下載完整的第二版本安裝包,節(jié)省用戶升級流量。
3、然而,上述增量升級方式需要依靠版本號來判斷是否新版本,然后將不同版本中的文件進行差分對比,并根據(jù)對比結(jié)果來生成增量升級包。版本號的更新通常是由開發(fā)者手動修改,傳統(tǒng)工業(yè)軟件因為規(guī)模龐大、模塊眾多、模塊耦合嚴重,在不進行架構(gòu)優(yōu)化重構(gòu)的情況下,開發(fā)者可能較難評估自己的修改會導(dǎo)致哪些模塊(即工程)產(chǎn)生變化,而且變化的模塊可能涉及多個團隊,要準確提升每個受影響模塊的版本號,對開發(fā)人員來說是一個不小的挑戰(zhàn)。
4、又如,現(xiàn)有技術(shù)cn114296771a公開了一種基于文件對比的安裝包增量升級方法和裝置,其獲取軟件各個版本的安裝包;生成所述安裝包中的每個文件對應(yīng)的哈希值;建立所述哈希值與安裝包的版本號之間的對應(yīng)關(guān)系;將最新版本的安裝包中每個文件對應(yīng)的哈希值,與低版本的安裝包中每個文件對應(yīng)的哈希值進行比對,生成不同版本升級到最新版本的增量升級包;接收軟件的升級請求,根據(jù)所述軟件的當前版本號,獲取對應(yīng)的增量升級包,使用所述增量升級包對所述軟件進行升級。在保證客戶端完整升級的前提下,減少流量消耗,降低安裝包下載和安裝的時間。
5、上述現(xiàn)有技術(shù)通過計算每個二進制文件計算對應(yīng)的哈希值,即物理md5,然后比較不同版本的哈希值,若不同則生成相應(yīng)的版本號的增量升級包,也即其不再依靠版本號來判斷是否要進行增量升級,而是基于每個二進制文件(包括工程或其他文件)的物理md5來判斷是否進行增量升級。然而,編譯器每次編譯時會加入隨機因子,即使工程未發(fā)生任何實質(zhì)性變化(例如,相同的代碼和工程配置),每次編譯二進制文件后得到的物理md5都不同。例如由于編譯時間和編譯機器的不同而導(dǎo)致工程的物理md5發(fā)生變化。因此,每次編譯都會針對該工程生成一個新的物理md5,若以物理md5作為對應(yīng)工程或功能模塊進行增量升級的依據(jù),就可能存在實際上工程未發(fā)生任何實質(zhì)變化,但因物理md5發(fā)生了變化而被通知需要進行增量升級,從而導(dǎo)致一些原本不需要升級的工程進行升級操作。
6、有鑒于此,當前亟需一種新的增量升級方法及裝置,能夠一定程度地避免部分不必要的升級。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于提供一種增量升級方法及裝置、計算機可讀存儲介質(zhì)和計算機程序產(chǎn)品,部分地解決或緩解現(xiàn)有技術(shù)中的上述不足,能夠避免一些原本不需要升級的工程進行升級操作。
2、為了解決上述所提到的技術(shù)問題,本發(fā)明具體采用以下技術(shù)方案:
3、本發(fā)明的第一方面,在于提供一種增量升級方法,其包括步驟:
4、s101,獲取每個工程的編譯日志,并根據(jù)所述編譯日志獲取參與所述工程的編譯過程的編譯材料;
5、s102,基于每個工程對應(yīng)的所述編譯材料計算表征所述工程的編譯過程的唯一邏輯簽名;
6、s103,基于每個工程的所述唯一邏輯簽名構(gòu)建對應(yīng)應(yīng)用程序的全量包,所述全量包包括第一簽名列表文件,所述第一簽名列表文件包括每個工程及其對應(yīng)的唯一邏輯簽名,以及第二文件及其對應(yīng)的物理簽名;
7、s104,提取所述全量包中的第一簽名列表文件,并將其與歷史全量包中的第二簽名列表文件進行差分比較,生成增量升級包,自動更新應(yīng)用程序的版本號,并發(fā)布升級通知;
8、其中,步驟s102中基于每個工程對應(yīng)的所述編譯材料計算表征所述工程的編譯過程的唯一邏輯簽名,具體包括:
9、s1021,基于信息摘要算法計算每種編譯材料的綜合物理簽名;
10、s1022,基于每種編譯材料的綜合物理簽名確定所述唯一邏輯簽名。
11、在一些實施例中,步驟s104中提取所述全量包中的第一簽名列表文件,并將其與歷史全量包中的第二簽名列表文件進行差分比較,生成增量升級包,具體包括:
12、基于所述第一簽名列表文件和所述第二簽名列表文件中各工程對應(yīng)的唯一邏輯簽名判斷所述工程是否發(fā)生變化;若發(fā)生變化,獲取發(fā)生變化的所述工程;
13、基于所述第一簽名列表文件和所述第二簽名列表文件中第二文件對應(yīng)的所述物理簽名判斷所述第二文件是否發(fā)生變化;若發(fā)生變化,獲取發(fā)生變化的所述第二文件;
14、根據(jù)發(fā)生變化的所述工程和/或所述第二文件生成所述增量升級包。
15、在一些實施例中,步驟s101之前還包括步驟:封裝邏輯簽名分析組件;所述邏輯簽名分析組件用于基于每種編譯材料的綜合物理簽名確定每個工程對應(yīng)的唯一邏輯簽名。
16、在一些實施例中,每種編譯材料包括多個編譯材料文件,相應(yīng)地,步驟s1021中計算每種編譯材料的綜合物理簽名,具體包括:
17、基于信息摘要算法計算每個所述編譯材料文件的物理簽名;
18、基于信息摘要算法和每種編譯材料對應(yīng)的所有編譯材料文件各自的物理簽名計算得到每種編譯材料各自對應(yīng)的綜合物理簽名。
19、在一些實施例中,步驟s1022中基于每種編譯材料的綜合物理簽名確定所述唯一邏輯簽名的步驟,具體包括:
20、基于信息摘要算法和每種編譯材料各自對應(yīng)的綜合物理簽名計算得到所述工程對應(yīng)的唯一邏輯簽名;或者,
21、將每種編譯材料各自對應(yīng)的綜合物理簽名按照預(yù)設(shè)的編碼規(guī)則進行編碼得到所述工程對應(yīng)的唯一邏輯簽名;所述編碼規(guī)則包括:按照所述編譯日志中各編譯材料的排列順序,依次將每種編譯材料各自的綜合物理簽名連成一串。
22、本發(fā)明的第二方面,在于提供一種增量升級裝置,其包括:
23、編譯日志獲取模塊,用于獲取每個工程的編譯日志;
24、編譯材料獲取模塊,用于根據(jù)所述編譯日志獲取參與所述工程的編譯過程的編譯材料;
25、邏輯簽名分析模塊,用于基于每個工程對應(yīng)的所述編譯材料計算表征所述工程的編譯過程的唯一邏輯簽名;
26、全量包構(gòu)建模塊,用于基于每個工程的所述唯一邏輯簽名構(gòu)建對應(yīng)應(yīng)用程序的全量包,所述全量包包括第一簽名列表文件,所述第一簽名列表文件包括每個工程及其對應(yīng)的唯一邏輯簽名,以及第二文件及其對應(yīng)的物理簽名;
27、增量升級包獲取模塊,用于提取所述全量包中的所述第一簽名列表文件,并將其與歷史全量包中的第二簽名列表文件進行差分比較,生成增量升級包,并自動更新應(yīng)用程序的版本號,同時生成并發(fā)布升級通知;
28、其中,所述邏輯簽名分析模塊具體包括:
29、第一簽名計算單元,用于基于信息摘要算法計算每種編譯材料的綜合物理簽名;
30、第二簽名計算單元,用于基于每種編譯材料的綜合物理簽名確定所述唯一邏輯簽名。
31、在一些實施例中,每種編譯材料可能包括多個編譯材料文件,所述第一簽名計算單元具體包括:
32、第一計算子單元,用于基于信息摘要算法計算每個所述編譯材料文件的物理簽名;
33、第二計算子單元,用于基于信息摘要算法和每種編譯材料對應(yīng)的所有編譯材料文件各自的物理簽名計算得到每種編譯材料各自對應(yīng)的綜合物理簽名。
34、在一些實施例中,第二簽名計算單元具體用于基于信息摘要算法和每種編譯材料各自對應(yīng)的綜合物理簽名計算得到所述工程對應(yīng)的唯一邏輯簽名;或者,將每種編譯材料各自對應(yīng)的綜合物理簽名按照預(yù)設(shè)的編碼規(guī)則進行編碼得到所述工程對應(yīng)的唯一邏輯簽名;所述編碼規(guī)則包括:按照所述編譯日志中各編譯材料的排列順序,依次將每種編譯材料各自的綜合物理簽名連成一串數(shù)字編碼。
35、在一些實施例中,所述增量升級包獲取模塊具體包括:
36、第一文件獲取單元,用于基于所述第一簽名列表文件和所述第二簽名列表文件中各工程對應(yīng)的唯一邏輯簽名判斷所述工程是否發(fā)生變化;且當判斷出相應(yīng)工程對應(yīng)的所述唯一邏輯簽名發(fā)生變化時,獲取發(fā)生變化的所述工程;
37、第二文件獲取單元,用于基于所述第一簽名列表文件和所述第二簽名列表文件中第二文件對應(yīng)的所述物理簽名判斷所述第二文件是否發(fā)生變化;且當判斷出所述第二文件發(fā)生變化,獲取發(fā)生變化的所述第二文件;
38、增量升級包獲取單元,用于根據(jù)發(fā)生變化的所述工程和/或所述第二文件生成所述增量升級包。
39、本發(fā)明的第三方面,在于提供了一種計算機可讀存儲介質(zhì),其存儲有計算機可讀指令,所述計算機可讀指令被處理器執(zhí)行時,實現(xiàn)上述增量升級方法的步驟。
40、本發(fā)明的第四方面,在于提供了一種計算機程序產(chǎn)品,其包括計算機執(zhí)行指令,所述計算機執(zhí)行指令存儲在計算機可讀存儲介質(zhì)中;電子設(shè)備的至少一個處理器可以從所述計算機可讀存儲介質(zhì)中讀取所述計算機執(zhí)行指令,所述至少一個處理器執(zhí)行所述計算機執(zhí)行指令使得所述電子設(shè)備執(zhí)行如上述增量升級方法。
41、有益效果:
42、現(xiàn)有技術(shù)中,通過計算每個文件的哈希值,即物理md5,并通過比較不同版本中該物理md5是否發(fā)生變化來確定是否進行增量升級。然而,實際編譯過程中,編譯器每次對工程進行編譯時,即使編譯材料未發(fā)生任何變化,也會由于編譯時間和編譯機器的不同而導(dǎo)致工程的物理md5發(fā)生變化,也即無論工程是否發(fā)生變化,每次編譯都會針對該工程生成一個新的物理md5,因此,若僅以此作為增量升級的依據(jù),會導(dǎo)致一些原本不需要升級的工程進行了不必要的升級操作。而本技術(shù)中提出一種表征每個工程的編譯過程的唯一邏輯簽名,其是基于編譯過程中實際所需要的編譯材料生成(具體地,通過解析編譯器編譯工程的編譯日志,從而確認每個工程對應(yīng)的參與編譯過程的源代碼、工程配置等編譯材料,然后計算得到該唯一邏輯md5),因此,只有當任一編譯材料發(fā)生變化,也即該工程發(fā)生實質(zhì)變化(例如,工程配置進行了修改,或源代碼進行了修改)時,其唯一邏輯簽名才會發(fā)生變化,相應(yīng)地,此時才需要進行增量升級(或者說,保證在源碼和工程配置不變的情況下,每次編譯算出的邏輯md5都一樣),從而杜絕了不必要的升級操作。
43、進一步地,本技術(shù)中是先基于每個工程的唯一邏輯簽名判斷出該工程發(fā)生實際變化時,才會生成應(yīng)用程序?qū)?yīng)的版本號,相較于現(xiàn)有技術(shù)中手動進行版本號的修改,其效率更高,并且準確率更高。
44、本發(fā)明提出的增量升級方法,以一種較為通用的方案,實現(xiàn)了基于msvc構(gòu)建的大型工業(yè)軟件的增量升級流程,復(fù)用性強、穩(wěn)定性高,解決了傳統(tǒng)工業(yè)軟件面臨的問題,提高了軟件迭代更新的效率和穩(wěn)定性。