專利名稱:應(yīng)用程序更新方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)通信技術(shù)領(lǐng)域,具體涉及一種應(yīng)用程序更新方法和裝置。
背景技術(shù):
應(yīng)用程序是指終端設(shè)備上的基于操作系統(tǒng)的用戶程序。所述終端設(shè)備包括個人電腦、手持設(shè)備、手機、平板電腦等,但不限于這些類別。應(yīng)用程序的更新是指用新版本的應(yīng)用程序替換舊版本的應(yīng)用程序的過程,一般步驟是1.卸載舊版本的應(yīng)用程序;2.安裝新版本的應(yīng)用程序。應(yīng)用程序更新(或者也可以稱為升級)的主要原因是增加新功能,修復(fù)漏洞,改善廣品性能等。·現(xiàn)有技術(shù)中的應(yīng)用程序更新過程包括提示用戶有新的版本需要更新,用戶下載新版本應(yīng)用程序包,卸載舊版本,然后再安裝新版本。這種更新操作較繁瑣,每次更新用戶都需要執(zhí)行卸載和安裝的動作,如果頻繁更新則更增加操作的繁瑣程度。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種應(yīng)用程序更新方法和相應(yīng)的一種應(yīng)用程序更新裝置。依據(jù)本發(fā)明的一個方面,提供了一種應(yīng)用程序更新方法,該方法包括所述應(yīng)用程序由外殼程序和數(shù)據(jù)文件組成;其中,所述數(shù)據(jù)文件中封裝有所述應(yīng)用程序的用戶界面和業(yè)務(wù)邏輯;所述外殼程序通過所述數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能;當所述應(yīng)用程序需要更新時,所述外殼程序獲取新版本的數(shù)據(jù)文件,之后通過所述新版本的數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能;其中,所述數(shù)據(jù)文件為可執(zhí)行文件或不可執(zhí)行文件;所述數(shù)據(jù)文件為可執(zhí)行文件時,所述外殼程序通過啟動所述數(shù)據(jù)文件并給予所述數(shù)據(jù)文件執(zhí)行權(quán)來實現(xiàn)所述應(yīng)用程序的功能;所述數(shù)據(jù)文件為不可執(zhí)行文件時,所述外殼程序根據(jù)封裝在所述數(shù)據(jù)文件中的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)所述應(yīng)用程序的功倉泛??蛇x地,所述數(shù)據(jù)文件為動態(tài)鏈接庫形式的可執(zhí)行文件;或者,所述數(shù)據(jù)文件為文本或圖片形式的不可執(zhí)行文件??蛇x地,所述數(shù)據(jù)文件為可執(zhí)行文件時,所述數(shù)據(jù)文件中定義有用于啟動本數(shù)據(jù)文件的啟動接口和用于關(guān)閉本數(shù)據(jù)文件的關(guān)閉接口??蛇x地,所述數(shù)據(jù)文件為可執(zhí)行文件時,所述數(shù)據(jù)文件中還定義有版本獲取接Π ;所述外殼程序獲取新版本的數(shù)據(jù)文件,并通過所述新版本的數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能包括
所述外殼程序通過原數(shù)據(jù)文件中的版本獲取接口獲取原數(shù)據(jù)文件的版本信息,將該版本信息攜帶在版本查詢請求消息中發(fā)送給服務(wù)器;所述外殼程序 接收服務(wù)器返回的版本查詢響應(yīng)消息,如果該版本查詢響應(yīng)消息中包含新版本信息,則根據(jù)該新版本信息下載新版本數(shù)據(jù)文件;所述外殼程序通過原數(shù)據(jù)文件中的關(guān)閉接口關(guān)閉原數(shù)據(jù)文件,通過新版本數(shù)據(jù)文件的啟動接口啟動新版本數(shù)據(jù)文件并給予新版本數(shù)據(jù)文件執(zhí)行權(quán)??蛇x地,數(shù)據(jù)文件為不可執(zhí)行文件,且數(shù)據(jù)文件中還包含版本信息;所述外殼程序獲取新版本的數(shù)據(jù)文件,并通過所述新版本的數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能包括所述外殼程序從原數(shù)據(jù)文件中獲取版本信息;所述外殼程序?qū)⒃摪姹拘畔y帶在版本查詢請求消息中發(fā)送給服務(wù)器;所述外殼程序接收服務(wù)器返回的版本查詢響應(yīng)消息,如果該版本查詢響應(yīng)消息中包含新版本信息,則根據(jù)該新版本信息下載新版本數(shù)據(jù)文件;所述外殼程序根據(jù)封裝在新版本數(shù)據(jù)文件中的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)所述應(yīng)用程序的功能。可選地,在根據(jù)該新版本信息下載新版本數(shù)據(jù)文件之前,該方法進一步包括所述外殼程序提示用戶是否更新,并在接收到用戶的確認更新指令時執(zhí)行所述根據(jù)該新版本信息下載新版本數(shù)據(jù)文件的步驟。依據(jù)本發(fā)明的另一個方面,提供了一種應(yīng)用程序更新裝置,該裝置包括應(yīng)用外殼單元和存儲單元;所述存儲單元,適于保存封裝有所述應(yīng)用程序的用戶界面和業(yè)務(wù)邏輯的數(shù)據(jù)文件;所述應(yīng)用外殼單元,適于通過所述存儲單元中的數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能;以及在所述應(yīng)用程序需要更新時,適于獲取新版本的數(shù)據(jù)文件保存到所述存儲單元中,之后通過所述存儲單元中的所述新版本的數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能;其中,所述應(yīng)用外殼單元進一步包括第一外殼子單元和第二外殼子單元;所述第一外殼子單元,適于在所述存儲單元中的數(shù)據(jù)文件為可執(zhí)行文件時,通過啟動該數(shù)據(jù)文件并給予該數(shù)據(jù)文件執(zhí)行權(quán)來實現(xiàn)所述應(yīng)用程序的功能;所述第二外殼子單元,適于在所述存儲單元中的數(shù)據(jù)文件為不可執(zhí)行文件時,根據(jù)封裝在該數(shù)據(jù)文件中的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)所述應(yīng)用程序的功能。可選地,所述存儲單元,適于保存動態(tài)鏈接庫形式的數(shù)據(jù)文件,或者適于保存文本或圖片形式的數(shù)據(jù)文件??蛇x地,所述存儲單元,進一步適于保存其中定義有用于啟動本數(shù)據(jù)文件的啟動接口和用于關(guān)閉本數(shù)據(jù)文件的關(guān)閉接口的可執(zhí)行文件形式的數(shù)據(jù)文件。可選地,所述存儲單元,進一步適于保存其中定義有用于啟動本數(shù)據(jù)文件的啟動接口、用于關(guān)閉本數(shù)據(jù)文件的關(guān)閉接口以及版本獲取接口的可執(zhí)行文件形式的數(shù)據(jù)文件;所述應(yīng)用外殼單元進一步包括第一下載更新子單元;所述第一下載更新子單元,適于通過所述存儲單元中的可執(zhí)行文件形式的數(shù)據(jù)文件的版本獲取接口獲取該數(shù)據(jù)文件的版本信息,將該版本信息攜帶在版本查詢請求消息中發(fā)送給服務(wù)器,接收服務(wù)器返回的版本查詢響應(yīng)消息,如果該版本查詢響應(yīng)消息中包含新版本信息,則根據(jù)該新版本信息下載新版本的可執(zhí)行文件形式的數(shù)據(jù)文件并保存到存儲單元中;所述第一外殼子單元,進一步適于通過存儲單元中的可執(zhí)行文件形式的原數(shù)據(jù)文件中的關(guān)閉接口關(guān)閉該原數(shù)據(jù)文件,通過存儲單元中的可執(zhí)行文件形式的新版本數(shù)據(jù)文件的啟動接口啟動該新版本數(shù)據(jù)文件并給予該新版本數(shù)據(jù)文件執(zhí)行權(quán)??蛇x地,所述存儲單元,進一步適于保存包含版本信息的不可執(zhí)行文件形式的數(shù)據(jù)文件;所述應(yīng)用外殼單元進一步包括第二下載更新子單元;所述第二下載更新子單元,適于從存儲單元中的不可執(zhí)行文件形式的數(shù)據(jù)文件中獲取版本信息,將該版本信息攜帶在版本查詢請求消息中發(fā)送給服務(wù)器,接收服務(wù)器返回 的版本查詢響應(yīng)消息,如果該版本查詢響應(yīng)消息中包含新版本信息,則根據(jù)該新版本信息下載新版本的不可執(zhí)行文件形式的數(shù)據(jù)文件并保存到存儲單元中;所述第二外殼子單元,進一步適于根據(jù)存儲單元中的不可執(zhí)行文件形式的新版本數(shù)據(jù)文件中封裝的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)所述應(yīng)用程序的功能。可選地,所述應(yīng)用外殼單元進一步包括提示子單元;所述提示子單元,適于在所述第一下載更新子單元或所述第二下載更新子單元根據(jù)新版本信息下載新版本數(shù)據(jù)文件之前,提示用戶是否更新,并在接收到用戶的確認更新指令時,通知所述第一下載更新子單元或所述第二下載更新子單元根據(jù)所述新版本信息下載新版本數(shù)據(jù)文件。根據(jù)本發(fā)明的這種應(yīng)用程序由外殼程序和數(shù)據(jù)文件組成,其中數(shù)據(jù)文件中封裝有應(yīng)用程序的用戶界面和業(yè)務(wù)邏輯,外殼程序通過所述數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能;當所述應(yīng)用程序需要更新時,所述外殼程序獲取新版本的數(shù)據(jù)文件,之后通過所述新版本的數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能的技術(shù)方案中,由于應(yīng)用程序的用戶界面和業(yè)務(wù)邏輯都封裝在數(shù)據(jù)文件中,因此應(yīng)用程序更新時只需要更新數(shù)據(jù)文件即可,外殼程序不需要更新,且更新數(shù)據(jù)文件的過程由外殼程序來完成,用戶不需要參與,即用戶不需要像現(xiàn)有技術(shù)那樣進行卸載舊版本的應(yīng)用程序和安裝新版本應(yīng)用程序的操作,由此解決了應(yīng)用程序更新的過程中用戶操作繁瑣的問題。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式
。
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中圖I示出了根據(jù)本發(fā)明一個實施例的一種應(yīng)用程序更新方法的流程圖;圖2示出了根據(jù)本發(fā)明一個實施例的場景一中應(yīng)用程序更新過程的流程圖;圖3示出了根據(jù)本發(fā)明一個實施例的場景二中應(yīng)用程序更新過程的流程圖4示出了根據(jù)本發(fā)明一個實施例的場景二中應(yīng)用程序更新過程的流程圖;圖5示出了根據(jù)本發(fā)明一個實施例的一種應(yīng)用程序更新裝置的結(jié)構(gòu)圖;圖6示出了根據(jù)本發(fā)明又一個實施例的一種應(yīng)用程序更新裝置的結(jié)構(gòu)圖。
具體實施例方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。圖I示出了根據(jù)本發(fā)明一個實施例的一種應(yīng)用程序更新方法的流程圖。在本實施例中,應(yīng)用程序由外殼程序和數(shù)據(jù)文件組成,如圖I所示,該應(yīng)用程序更新方法包括·
S110,外殼程序通過數(shù)據(jù)文件實現(xiàn)應(yīng)用程序的功能,其中,該數(shù)據(jù)文件中封裝有該應(yīng)用程序的用戶界面和業(yè)務(wù)邏輯。在本發(fā)明的實施例中,數(shù)據(jù)文件可以為可執(zhí)行文件,或者也可以為不可執(zhí)行文件。在本發(fā)明的一個實施例中,數(shù)據(jù)文件可以為DLL (Dynamic Link Library,動態(tài)鏈接庫)形式的可執(zhí)行文件?;蛘?,在本發(fā)明的另一個實施例中,數(shù)據(jù)文件也可以為文本或圖片形式的不可執(zhí)行文件。S120,當該應(yīng)用程序需要更新時,所述外殼程序獲取新版本的數(shù)據(jù)文件,之后通過該新版本的數(shù)據(jù)文件實現(xiàn)該應(yīng)用程序的功能。在本發(fā)明的一個實施例中,當數(shù)據(jù)文件為可執(zhí)行文件時,外殼程序通過啟動該數(shù)據(jù)文件并給予該數(shù)據(jù)文件執(zhí)行權(quán)來實現(xiàn)該應(yīng)用程序的功能。在本發(fā)明的另一個實施例中,當數(shù)據(jù)文件為不可執(zhí)行文件時,外殼程序根據(jù)封裝在該數(shù)據(jù)文件中的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)該應(yīng)用程序的功能。在本發(fā)明的實施例中,面對用戶的客戶端就是外殼程序,具體的界面怎么展現(xiàn),業(yè)務(wù)邏輯如何走,都由數(shù)據(jù)文件來決定,而不是代碼。所以當應(yīng)用程序需要升級時,外殼程序無需更新,只需要下載最新的數(shù)據(jù)文件即可。由于外殼程序不需要更新,且更新數(shù)據(jù)文件的過程由外殼程序來完成,因此用戶不需要參與,即用戶不需要像現(xiàn)有技術(shù)那樣進行卸載舊版本的應(yīng)用程序和安裝新版本應(yīng)用程序的操作,由此解決了應(yīng)用程序更新的過程中用戶操作繁瑣的問題。這里以Windows操作系統(tǒng)上的應(yīng)用程序為例對本發(fā)明的方案進行說明Windows操作系統(tǒng)上的應(yīng)用程序基于MSI (microsoft installer,微軟安裝包)包,在制作MSI包時只需要留一些啟動和更新的接口,實際的用戶界面和業(yè)務(wù)邏輯都封裝在數(shù)據(jù)文件中,數(shù)據(jù)文件可以是DLL但不限于DLL。所制作的MSI包即為本申請中所述的外殼程序。外殼程序在數(shù)據(jù)文件中查找到對應(yīng)的入口然后加載并給予執(zhí)行權(quán)來完成應(yīng)用程序的啟動。當應(yīng)用程序需要更新時,外殼程序只需要下載最新的數(shù)據(jù)文件,下載完成后給予新數(shù)據(jù)文件執(zhí)行權(quán)即可。用戶不需要再去卸載應(yīng)用程序以及安裝新的安裝包,對用戶來說不需要進行更新的操作即可體驗應(yīng)用程序最新版本的功能。前述已經(jīng)提到,當應(yīng)用程序需要更新時,外殼程序需要獲取升級后的新數(shù)據(jù)文件。一般來說升級后的新數(shù)據(jù)文件從應(yīng)用程序的服務(wù)提供商的服務(wù)器進行下載。這里將應(yīng)用程序的服務(wù)提供商的服務(wù)器簡稱為服務(wù)器。因此外殼程序需要于服務(wù)器進行交互。在本發(fā)明的一個實施例中,外殼程序和服務(wù)器基于HTTP協(xié)議進行通信。在本發(fā)明的一個實施例中,數(shù)據(jù)文件為可執(zhí)行文件時,數(shù)據(jù)文件中定義有用于啟動本數(shù)據(jù)文件的啟動接口、用于關(guān)閉本數(shù)據(jù)文件的關(guān)閉接口。此外為了更新的方便,數(shù)據(jù)文件中還定義有版本獲取接口。以下通過進行應(yīng)用程序更新的三個場景來對本發(fā)明的技術(shù)方案進行說明。場景一圖2示出了根據(jù)本發(fā)明一個實施例的場景一中應(yīng)用程序更新過程的流程圖。如圖2所示,包括如下步驟步驟S201,外殼程序向服務(wù)器發(fā)送攜帶當前數(shù)據(jù)文件的版本信息的版本查詢請 求。當前數(shù)據(jù)文件中包含版本信息。當前數(shù)據(jù)文件為可執(zhí)行文件時,外殼程序通過調(diào)用其版本獲取接口獲取其版本信息。當前數(shù)據(jù)文件為文本或圖片等不可執(zhí)行文件時,外殼程序直接從當前數(shù)據(jù)文件獲取其版本信息。例如,當前數(shù)據(jù)文件的版本為1.0。步驟S202,服務(wù)器收到外殼程序的版本查詢請求后,通過對比本地的數(shù)據(jù)文件版本信息發(fā)現(xiàn)本地有更新版本的數(shù)據(jù)文件,向外殼程序返回包含新版本信息的版本查詢響應(yīng)。例如,本步驟中服務(wù)器發(fā)現(xiàn)本地的最新本版為I. 1,比I. O要新,新版本數(shù)據(jù)文件的信息攜帶在版本查詢響應(yīng)消息中返回給外殼程序。這里新版本信息包括新版本數(shù)據(jù)文件的版本值以及新版本數(shù)據(jù)文件的下載地址。在本發(fā)明的一個實施例中,如果有新版本的數(shù)據(jù)文件,則在查詢響應(yīng)消息中設(shè)置版本頭字段,該字段的值為新版本數(shù)據(jù)的版本值,如1.1,并在查詢響應(yīng)消息的設(shè)置數(shù)據(jù)文件頭字段,該字段的值為新版本數(shù)據(jù)文件的地址。如果沒有新版本的數(shù)據(jù)文件,則不在查詢響應(yīng)消息中設(shè)置版本頭字段和數(shù)據(jù)文件頭字段。步驟S203,外殼程序發(fā)現(xiàn)版本查詢響應(yīng)消息中包含新版本信息,提示用戶是否更新。在本發(fā)明的一個實施例中,可以使用WIN API MessageBox,上面有確定和取消按鈕供用戶選擇。步驟S204,用戶確認更新。例如,用于點擊確定按鈕以確認進行更新。步驟S205,在收到用戶的確認更新信息后,外殼程序根據(jù)版本查詢響應(yīng)中的新版本信息,向服務(wù)器請求下載新版本數(shù)據(jù)文件。具體地,外殼程序根據(jù)版本查詢響應(yīng)中的新版本數(shù)據(jù)文件的地址,向服務(wù)器請求下載新版本數(shù)據(jù)文件。步驟S206,服務(wù)器予以下載,外殼程序通過下載獲得新版本數(shù)據(jù)文件。如果數(shù)據(jù)文件為可執(zhí)行文件時,外殼程序執(zhí)行以下步驟S207-S209。如果數(shù)據(jù)文件為不可執(zhí)行文件,則外殼程序直接根據(jù)封裝在新版本數(shù)據(jù)文件中的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)所述應(yīng)用程序的功能,而不再利用當前原數(shù)據(jù)文件。 步驟S207,外殼程序關(guān)閉當前的數(shù)據(jù)文件。 當前數(shù)據(jù)文件為可執(zhí)行數(shù)據(jù)文件時,外殼程序通過調(diào)用當前數(shù)據(jù)文件的關(guān)閉接口關(guān)閉當前數(shù)據(jù)文件。步驟S208,外殼程序加載新版本數(shù)據(jù)文件。步驟S209,外殼程序啟動新版本數(shù)據(jù)文件。當前數(shù)據(jù)文件為可執(zhí)行數(shù)據(jù)文件時,外殼程序通過調(diào)用新版本數(shù)據(jù)文件的啟動接口啟動新版本數(shù)據(jù)文件。步驟S210,用戶看到新的用戶界面。在此過程中,用戶只需要根據(jù)提示選擇確認即可完成更新,不需要用戶做其它的額外操作。場景二
·
圖3示出了根據(jù)本發(fā)明一個實施例的場景二中應(yīng)用程序更新過程的流程圖。如圖3所示,包括如下步驟步驟S301,外殼程序向服務(wù)器發(fā)送攜帶當前數(shù)據(jù)文件的版本信息的版本查詢請求。例如,當前數(shù)據(jù)文件的版本為I. O。步驟S302,服務(wù)器收到外殼程序的版本查詢請求后,通過對比本地的數(shù)據(jù)文件版本信息發(fā)現(xiàn)本地沒有更新版本的數(shù)據(jù)文件,向外殼程序返回不包含新版本信息的版本查詢響應(yīng)。例如,本步驟中服務(wù)器發(fā)現(xiàn)本地的最新本版也為I. 0,則查詢響應(yīng)消息中告知外殼程序當前版本I. O即為最新版本,無需進行更新。由于無需進行更新,因此外殼程序不需要進行更新操作。場景三圖4示出了根據(jù)本發(fā)明一個實施例的場景二中應(yīng)用程序更新過程的流程圖。如圖4所示,包括如下步驟步驟S401,外殼程序向服務(wù)器發(fā)送攜帶當前數(shù)據(jù)文件的版本信息的版本查詢請求。例如,當前數(shù)據(jù)文件的版本為I. O。步驟S402,服務(wù)器收到外殼程序的版本查詢請求后,通過對比本地的數(shù)據(jù)文件版本信息發(fā)現(xiàn)本地有更新版本的數(shù)據(jù)文件,向外殼程序返回包含新版本信息的版本查詢響應(yīng)。例如,本步驟中服務(wù)器發(fā)現(xiàn)本地的最新本版為I. 1,比I. O要新,新版本數(shù)據(jù)文件的信息攜帶在版本查詢響應(yīng)消息中返回給外殼程序。這里新版本信息包括新版本數(shù)據(jù)文件的版本值以及新版本數(shù)據(jù)文件的下載地址。步驟S403,外殼程序發(fā)現(xiàn)版本查詢響應(yīng)消息中包含新版本信息,提示用戶是否更新。在本發(fā)明的一個實施例中,可以使用WIN API MessageBox,上面有確定和取消按鈕供用戶選擇。步驟S404,用戶拒絕更新。例如,用于點擊取消按鈕以拒絕更新,此時外殼程序不需要進行更新操作。例如,以開發(fā)一款Windows記事本程序為例,該記事本程序的主界面是一個Windows窗體,上面有一個文本框,這里設(shè)計時,需要把窗體和該記事本程序的業(yè)務(wù)邏輯封裝在一個DLL里,并且需要標示版本,即該DLL是該記事本程序的數(shù)據(jù)文件。則記事本程序的DLL中還需要實現(xiàn)一套定義的接口 INT WINAPI Start (void*args) ;//外殼程序通過該接口啟動 DLL ;INT WINAPI Exit (void*args) ;//外殼程序通過該接口關(guān)閉該DLL,更新時需要使用;VERSION WINAPI GetVersion O ; //外殼程序獲取該DLL的版本時使用。該記事本程序的外殼程序在執(zhí)行時,通過調(diào)用INT WINAPI Start來加載并啟動該DLL,并給予該DLL執(zhí)行權(quán),因為有執(zhí)行權(quán),DLL可以做很多事情,如開線程、開窗口和訪問后臺數(shù)據(jù)等。外殼程序通過調(diào)用VERSION WINAPIGetVersion來獲取該DLL文件的版本信息, 以及外殼程序通過調(diào)用INTWINAPI Exit來關(guān)閉該DLL文件。通過CreateWindowEx函數(shù)創(chuàng)建記事本的窗體,掛載消息泵,窗體的樣式、大小,控件的數(shù)據(jù)量和功能等都卸載DLL中。且并在DLL中標示其版本為I. O. O. O。假設(shè)該版本為I. O. O. O的DLL中存在漏洞,無法支持UNICODE編碼的文本。為解決該問題開發(fā)了一個新的DLL,該在新DLL中修復(fù)了該漏洞,該新DLL中標識其版本為
1.0.0. I。將新DLL提交到服務(wù)器上。記事本程序的外殼程序在啟動時或通過主動查詢發(fā)現(xiàn)服務(wù)器上的DLL的版本比本地的新,于是外殼程序先將新版本的DLL下載到本地,然后調(diào)用原DLL的INT WINAPIExit接口來卸載原DLL,接著調(diào)用新DLL的INTWINAPI Start接口來加載并啟動新DLL。這樣用戶看到的版本是已經(jīng)沒有所述漏洞的版本,達到了更新的目的。用戶不需要卸載整個程序然后重新安裝MSI,用戶除了確認是否需要更新外,不需要作其它任何操作。應(yīng)用程序的更新除了修復(fù)漏洞,還可以其它任何方面的改進,如修改用戶界面、增加功能等。本發(fā)明的技術(shù)方案省去了用戶下載更新、卸載并安裝的煩惱,用戶可以體驗到無縫更新。圖5示出了根據(jù)本發(fā)明一個實施例的一種應(yīng)用程序更新裝置的結(jié)構(gòu)圖。如圖5所示,該應(yīng)用程序更新裝置包括應(yīng)用外殼單元501和存儲單元502。存儲單元502,適于保存封裝有應(yīng)用程序的用戶界面和業(yè)務(wù)邏輯的數(shù)據(jù)文件。應(yīng)用外殼單元501,適于通過存儲單元502中的數(shù)據(jù)文件實現(xiàn)應(yīng)用程序的功能;以及在該應(yīng)用程序需要更新時,適于獲取新版本的數(shù)據(jù)文件保存到存儲單元502中,之后通過存儲單元502中的新版本的數(shù)據(jù)文件實現(xiàn)該應(yīng)用程序的功能。圖5所示的裝置,省去了用戶下載更新、卸載并安裝的過程,使得用戶可以體驗到無縫更新。圖6示出了根據(jù)本發(fā)明又一個實施例的一種應(yīng)用程序更新裝置的結(jié)構(gòu)圖。如圖6所示,該應(yīng)用程序更新裝置包括應(yīng)用外殼單元601和存儲單元602。存儲單元602,適于保存封裝有應(yīng)用程序的用戶界面和業(yè)務(wù)邏輯的數(shù)據(jù)文件。應(yīng)用外殼單元601,適于通過存儲單元602中的數(shù)據(jù)文件實現(xiàn)應(yīng)用程序的功能;以及在該應(yīng)用程序需要更新時,適于獲取新版本的數(shù)據(jù)文件保存到存儲單元602中,之后通過存儲單元602中的新版本的數(shù)據(jù)文件實現(xiàn)該應(yīng)用程序的功能。
參見圖6,應(yīng)用外殼單兀610包括第一外殼子單兀601、第二外殼子單兀602、第一下載更新子單元603、第二下載更新子單元604和提示子單元605。在本發(fā)明的一個實施例中,應(yīng)用外殼單兀610可以包括第一外殼子單兀601和第二外殼子單元602,也可以只包括第一外殼子單元601,或者也可以只包括第二外殼子單元602。第一外殼子單元601,適于在存儲單元620中的數(shù)據(jù)文件為可執(zhí)行文件時,通過啟動該數(shù)據(jù)文件并給予該數(shù)據(jù)文件執(zhí)行權(quán)來實現(xiàn)該應(yīng)用程序的功能。第二外殼子單元602,適于在存儲單元620中的數(shù)據(jù)文件為不可執(zhí)行文件時,根據(jù)封裝在該數(shù)據(jù)文件中的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)所述應(yīng)用程序的功能。在本發(fā)明的一個實施例中,存儲單元620,適于保存動態(tài)鏈接庫形式的數(shù)據(jù)文件,或者適于保存文本或圖片形式的數(shù)據(jù)文件。
在本發(fā)明的一個實施例中,存儲單元620,適于保存其中定義有用于啟動本數(shù)據(jù)文件的啟動接口和用于關(guān)閉本數(shù)據(jù)文件的關(guān)閉接口的可執(zhí)行文件形式的數(shù)據(jù)文件。在本發(fā)明的一個實施例中,存儲單元620,還適于保存其中定義有用于啟動本數(shù)據(jù)文件的啟動接口、用于關(guān)閉本數(shù)據(jù)文件的關(guān)閉接口以及版本獲取接口的可執(zhí)行文件形式的數(shù)據(jù)文件。應(yīng)用外殼單元610至少包括第一外殼子單元601和第一下載更新子單元603。第一下載更新子單元603,適于通過存儲單元620中的可執(zhí)行文件形式的數(shù)據(jù)文件的版本獲取接口獲取該數(shù)據(jù)文件的版本信息,將該版本信息攜帶在版本查詢請求消息中發(fā)送給服務(wù)器,接收服務(wù)器返回的版本查詢響應(yīng)消息,如果該版本查詢響應(yīng)消息中包含新版本信息,則根據(jù)該新版本信息下載新版本的可執(zhí)行文件形式的數(shù)據(jù)文件并保存到存儲單元620中。第一外殼子單元601,適于通過存儲單元620中的可執(zhí)行文件形式的原數(shù)據(jù)文件中的關(guān)閉接口關(guān)閉該原數(shù)據(jù)文件,通過存儲單元620中的可執(zhí)行文件形式的新版本數(shù)據(jù)文件的啟動接口啟動該新版本數(shù)據(jù)文件并給予該新版本數(shù)據(jù)文件執(zhí)行權(quán),實現(xiàn)該應(yīng)用程序的功能。在本發(fā)明的又一個實施例中,存儲單元620,適于保存包含版本信息的不可執(zhí)行文件形式的數(shù)據(jù)文件。應(yīng)用外殼單元610至少包括第二外殼子單元602和第二下載更新子單元604。第二下載更新子單元604,適于從存儲單元620中的不可執(zhí)行文件形式的數(shù)據(jù)文件中獲取版本信息,將該版本信息攜帶在版本查詢請求消息中發(fā)送給服務(wù)器,接收服務(wù)器返回的版本查詢響應(yīng)消息,如果該版本查詢響應(yīng)消息中包含新版本信息,則根據(jù)該新版本信息下載新版本的不可執(zhí)行文件形式的數(shù)據(jù)文件并保存到存儲單元620中。第二外殼子單元602,適于根據(jù)存儲單元620中的不可執(zhí)行文件形式的新版本數(shù)據(jù)文件中封裝的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)該應(yīng)用程序的功能。提示子單元605,適于在第一下載更新子單元603或第二下載更新子單元604根據(jù)新版本信息下載新版本數(shù)據(jù)文件之前,提示用戶是否更新,并在接收到用戶的確認更新指令時,通知第一下載更新子單元603或第二下載更新子單元604根據(jù)該新版本信息下載新版本數(shù)據(jù)文件。在圖6所示的裝置中,應(yīng)用程序的具體的界面怎么展現(xiàn),業(yè)務(wù)邏輯如何走,都由存儲單元中的數(shù)據(jù)文件來決定。所以當應(yīng)用程序需要升級時,由應(yīng)用外殼單元下載最新的數(shù)據(jù)文件并保存到存儲單元中,之后應(yīng)用外殼單元根據(jù)新的數(shù)據(jù)文件實現(xiàn)應(yīng)用程序的功能。因此用戶不需要參與,解決了應(yīng)用程序更新的過程中用戶操作繁瑣的問題。
綜上所述,根據(jù)本發(fā)明的這種應(yīng)用程序由外殼程序和數(shù)據(jù)文件組成,其中數(shù)據(jù)文件中封裝有應(yīng)用程序的用戶界面和業(yè)務(wù)邏輯,外殼程序通過所述數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能;當所述應(yīng)用程序需要更新時,所述外殼程序獲取新版本的數(shù)據(jù)文件,之后通過所述新版本的數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能的技術(shù)方案中,由于應(yīng)用程序的用戶界面和業(yè)務(wù)邏輯都封裝在數(shù)據(jù)文件中,因此應(yīng)用程序更新時只需要更新數(shù)據(jù)文件即可,外殼程序不需要更新,且更新數(shù)據(jù)文件的過程由外殼程序來完成,用戶不需要參與,即用戶不需要像現(xiàn)有技術(shù)那樣進行卸載舊版本的應(yīng)用程序和安裝新版本應(yīng)用程序的操作,由此解決了應(yīng)用程序更新的過程中用戶操作繁瑣的問題。需要說明的是在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā) 明的最佳實施方式。在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。類似地,應(yīng)當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式
的權(quán)利要求書由此明確地并入該具體實施方式
,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP )來實現(xiàn)根據(jù)本發(fā)明實施例的一種應(yīng)用程序更新裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。 應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出 替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
權(quán)利要求
1.一種應(yīng)用程序更新方法,該方法包括 所述應(yīng)用程序由外殼程序和數(shù)據(jù)文件組成;其中,所述數(shù)據(jù)文件中封裝有所述應(yīng)用程序的用戶界面和業(yè)務(wù)邏輯; 所述外殼程序通過所述數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能; 當所述應(yīng)用程序需要更新時,所述外殼程序獲取新版本的數(shù)據(jù)文件,之后通過所述新版本的數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能; 其中,所述數(shù)據(jù)文件為可執(zhí)行文件或不可執(zhí)行文件; 所述數(shù)據(jù)文件為可執(zhí)行文件時,所述外殼程序通過啟動所述數(shù)據(jù)文件并給予所述數(shù)據(jù)文件執(zhí)行權(quán)來實現(xiàn)所述應(yīng)用程序的功能;所述數(shù)據(jù)文件為不可執(zhí)行文件時,所述外殼程序根據(jù)封裝在所述數(shù)據(jù)文件中的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)所述應(yīng)用程序的功能。
2.如權(quán)利要求I所述的方法,其中, 所述數(shù)據(jù)文件為動態(tài)鏈接庫形式的可執(zhí)行文件; 或者, 所述數(shù)據(jù)文件為文本或圖片形式的不可執(zhí)行文件。
3.如權(quán)利要求I所述的方法,其中,所述數(shù)據(jù)文件為可執(zhí)行文件時,所述數(shù)據(jù)文件中定義有用于啟動本數(shù)據(jù)文件的啟動接口和用于關(guān)閉本數(shù)據(jù)文件的關(guān)閉接口。
4.如權(quán)利要求3所述的方法,其中,所述數(shù)據(jù)文件為可執(zhí)行文件時,所述數(shù)據(jù)文件中還定義有版本獲取接口; 所述外殼程序獲取新版本的數(shù)據(jù)文件,并通過所述新版本的數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能包括 所述外殼程序通過原數(shù)據(jù)文件中的版本獲取接口獲取原數(shù)據(jù)文件的版本信息,將該版本信息攜帶在版本查詢請求消息中發(fā)送給服務(wù)器; 所述外殼程序接收服務(wù)器返回的版本查詢響應(yīng)消息,如果該版本查詢響應(yīng)消息中包含新版本信息,則根據(jù)該新版本信息下載新版本數(shù)據(jù)文件; 所述外殼程序通過原數(shù)據(jù)文件中的關(guān)閉接口關(guān)閉原數(shù)據(jù)文件,通過新版本數(shù)據(jù)文件的啟動接口啟動新版本數(shù)據(jù)文件并給予新版本數(shù)據(jù)文件執(zhí)行權(quán)。
5.如權(quán)利要求I所述的方法,其中,數(shù)據(jù)文件為不可執(zhí)行文件,且數(shù)據(jù)文件中還包含版本信息; 所述外殼程序獲取新版本的數(shù)據(jù)文件,并通過所述新版本的數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能包括 所述外殼程序從原數(shù)據(jù)文件中獲取版本信息; 所述外殼程序?qū)⒃摪姹拘畔y帶在版本查詢請求消息中發(fā)送給服務(wù)器; 所述外殼程序接收服務(wù)器返回的版本查詢響應(yīng)消息,如果該版本查詢響應(yīng)消息中包含新版本信息,則根據(jù)該新版本信息下載新版本數(shù)據(jù)文件; 所述外殼程序根據(jù)封裝在新版本數(shù)據(jù)文件中的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)所述應(yīng)用程序的功能。
6.根據(jù)權(quán)利要求4或5所述的方法,其中,在根據(jù)該新版本信息下載新版本數(shù)據(jù)文件之前,該方法進一步包括 所述外殼程序提示用戶是否更新,并在接收到用戶的確認更新指令時執(zhí)行所述根據(jù)該新版本信息下載新版本數(shù)據(jù)文件的步驟。
7.一種應(yīng)用程序更新裝置,該裝置包括應(yīng)用外殼單元和存儲單元; 所述存儲單元,適于保存封裝有所述應(yīng)用程序的用戶界面和業(yè)務(wù)邏輯的數(shù)據(jù)文件;所述應(yīng)用外殼單元,適于通過所述存儲單元中的數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能;以及在所述應(yīng)用程序需要更新時,適于獲取新版本的數(shù)據(jù)文件保存到所述存儲單元中,之后通過所述存儲單元中的所述新版本的數(shù)據(jù)文件實現(xiàn)所述應(yīng)用程序的功能; 其中,所述應(yīng)用外殼單元進一步包括第一外殼子單元和第二外殼子單元; 所述第一外殼子單元,適于在所述存儲單元中的數(shù)據(jù)文件為可執(zhí)行文件時,通過啟動該數(shù)據(jù)文件并給予該數(shù)據(jù)文件執(zhí)行權(quán)來實現(xiàn)所述應(yīng)用程序的功能; 所述第二外殼子單元,適于在所述存儲單元中的數(shù)據(jù)文件為不可執(zhí)行文件時,根據(jù)封裝在該數(shù)據(jù)文件中的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)所述應(yīng)用程序的功能。
8.如權(quán)利要求7所述的裝置,其中, 所述存儲單元,適于保存動態(tài)鏈接庫形式的數(shù)據(jù)文件,或者適于保存文本或圖片形式的數(shù)據(jù)文件。
9.如權(quán)利要求7所述的裝置,其中, 所述存儲單元,進一步適于保存其中定義有用于啟動本數(shù)據(jù)文件的啟動接口和用于關(guān)閉本數(shù)據(jù)文件的關(guān)閉接口的可執(zhí)行文件形式的數(shù)據(jù)文件。
10.如權(quán)利要求9所述的裝置,其中, 所述存儲單元,進一步適于保存其中定義有用于啟動本數(shù)據(jù)文件的啟動接口、用于關(guān)閉本數(shù)據(jù)文件的關(guān)閉接口以及版本獲取接口的可執(zhí)行文件形式的數(shù)據(jù)文件; 所述應(yīng)用外殼單元進一步包括第一下載更新子單元; 所述第一下載更新子單元,適于通過所述存儲單元中的可執(zhí)行文件形式的數(shù)據(jù)文件的版本獲取接口獲取該數(shù)據(jù)文件的版本信息,將該版本信息攜帶在版本查詢請求消息中發(fā)送給服務(wù)器,接收服務(wù)器返回的版本查詢響應(yīng)消息,如果該版本查詢響應(yīng)消息中包含新版本信息,則根據(jù)該新版本信息下載新版本的可執(zhí)行文件形式的數(shù)據(jù)文件并保存到存儲單元中; 所述第一外殼子單元,進一步適于通過存儲單元中的可執(zhí)行文件形式的原數(shù)據(jù)文件中的關(guān)閉接口關(guān)閉該原數(shù)據(jù)文件,通過存儲單元中的可執(zhí)行文件形式的新版本數(shù)據(jù)文件的啟動接口啟動該新版本數(shù)據(jù)文件并給予該新版本數(shù)據(jù)文件執(zhí)行權(quán)。
11.如權(quán)利要求7所述的裝置,其中, 所述存儲單元,進一步適于保存包含版本信息的不可執(zhí)行文件形式的數(shù)據(jù)文件; 所述應(yīng)用外殼單元進一步包括第二下載更新子單元; 所述第二下載更新子單元,適于從存儲單元中的不可執(zhí)行文件形式的數(shù)據(jù)文件中獲取版本信息,將該版本信息攜帶在版本查詢請求消息中發(fā)送給服務(wù)器,接收服務(wù)器返回的版本查詢響應(yīng)消息,如果該版本查詢響應(yīng)消息中包含新版本信息,則根據(jù)該新版本信息下載新版本的不可執(zhí)行文件形式的數(shù)據(jù)文件并保存到存儲單元中; 所述第二外殼子單元,進一步適于根據(jù)存儲單元中的不可執(zhí)行文件形式的新版本數(shù)據(jù)文件中封裝的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)所述應(yīng)用程序的功能。
12.根據(jù)權(quán)利要求10或11所述的裝置,其中,所述應(yīng)用外殼單元進一步包括提示子單元; 所述 提示子單元,適于在所述第一下載更新子單元或所述第二下載更新子單元根據(jù)新版本信息下載新版本數(shù)據(jù)文件之前,提示用戶是否更新,并在接收到用戶的確認更新指令時,通知所述第一下載更新子單元或所述第二下載更新子單元根據(jù)所述新版本信息下載新版本數(shù)據(jù)文件。
全文摘要
本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)通信領(lǐng)域,其公開了一種應(yīng)用程序更新方法和裝置。該裝置包括應(yīng)用外殼單元和存儲單元;其中,所述應(yīng)用外殼單元進一步包括第一外殼子單元和第二外殼子單元;第一外殼子單元適于在所述存儲單元中的數(shù)據(jù)文件為可執(zhí)行文件時,通過啟動該數(shù)據(jù)文件并給予該數(shù)據(jù)文件執(zhí)行權(quán)來實現(xiàn)應(yīng)用程序的功能;第二外殼子單元適于在存儲單元中的數(shù)據(jù)文件為不可執(zhí)行文件時,根據(jù)封裝在該數(shù)據(jù)文件中的用戶界面信息和業(yè)務(wù)邏輯信息實現(xiàn)應(yīng)用程序的功能。本發(fā)明的技術(shù)方案使得應(yīng)用程序的更細不需要用戶參與,即用戶不需要像現(xiàn)有技術(shù)那樣進行卸載舊版本的應(yīng)用程序和安裝新版本應(yīng)用程序的操作,由此解決了應(yīng)用程序更新的過程中用戶操作繁瑣的問題。
文檔編號G06F9/445GK102945182SQ20121052118
公開日2013年2月27日 申請日期2012年12月6日 優(yōu)先權(quán)日2012年12月6日
發(fā)明者周沅江 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司