專(zhuān)利名稱(chēng):應(yīng)用程序運(yùn)行方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件處理技術(shù),具體涉及一種應(yīng)用程序運(yùn)行方法、裝置及系統(tǒng)。
背景技術(shù):
一個(gè)應(yīng)用程序,其運(yùn)行時(shí)所需的文件通常包含兩部分程序文件和數(shù)據(jù)文件。而對(duì) 于大部分應(yīng)用程序,其數(shù)據(jù)文件的體積通常要比程序模塊文件的體積大。應(yīng)用程序體積過(guò)大,不僅會(huì)占用過(guò)多的存儲(chǔ)空間,而且會(huì)導(dǎo)致用戶使用軟件時(shí)間 成本過(guò)高。因此,為了滿足不同用戶的應(yīng)用需求,市面上有很多軟件的瘦身版本,即精簡(jiǎn)版 本。這些產(chǎn)品大多數(shù)都是針對(duì)資源文件的瘦身,一般而言,都是經(jīng)過(guò)特殊定制的。還有一些 精簡(jiǎn)版本的軟件需要修改原程序的源代碼,重新編譯出新的程序文件,并且刪減部分程序 文件和數(shù)據(jù)文件,從而達(dá)到瘦身的目的。這樣的做法主要有以下缺點(diǎn)1、需要針對(duì)不同的應(yīng)用程序進(jìn)行特別定制,無(wú)法提供通用的方法。2、精簡(jiǎn)版本的軟件功能受限,如果用戶需要體驗(yàn)其他功能,需要重新安裝。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種應(yīng)用程序運(yùn)行方法、裝置及系統(tǒng),無(wú)需進(jìn)行專(zhuān)門(mén)定制,即可 簡(jiǎn)單、高效地縮減應(yīng)用程序安裝包的體積,提供用戶所需功能。為此,本發(fā)明實(shí)施例提供如下技術(shù)方案一種應(yīng)用程序運(yùn)行方法,包括創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程,并加載預(yù)先生成的所述應(yīng)用程序的數(shù)據(jù)文件描述 fn息;通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,并在監(jiān)聽(tīng)到所述應(yīng)用程序的I/O請(qǐng) 求后,根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型;如果所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件,則根據(jù)所述數(shù)據(jù)文件描述信息 從服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊;將所述數(shù)據(jù)塊加載到內(nèi)存。優(yōu)選地,所述加載預(yù)先生成的所述應(yīng)用程序的數(shù)據(jù)文件描述信息包括從所述服務(wù)器端加載所述應(yīng)用程序的數(shù)據(jù)文件描述信息。優(yōu)選地,所述方法還包括在創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程之前,檢查所述應(yīng)用程序的數(shù)據(jù)文件描述信息是 否保存在本地的指定目錄;如果是,則從所述指定目錄加載所述數(shù)據(jù)文件描述信息;如果否,則執(zhí)行所述從所述服務(wù)器端加載所述應(yīng)用程序的數(shù)據(jù)文件描述信息的步
馬聚ο優(yōu)選地,所述方法還包括
抽取所述應(yīng)用程序的數(shù)據(jù)文件,生成所述數(shù)據(jù)文件描述信息;將所述數(shù)據(jù)文件描述信息保存到本地的指定目錄和/或所述服務(wù)器端,并將所述 數(shù)據(jù)文件保存到所述服務(wù)器端。優(yōu)選地,所述通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求包括通過(guò)所述進(jìn)程加載I/O鉤子函數(shù);通過(guò)所述I/O鉤子函數(shù)在所述應(yīng)用程序運(yùn)行時(shí)監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求。優(yōu)選地,所述根據(jù)所述數(shù)據(jù)文件描述信息從所述服務(wù)器端獲取所述應(yīng)用程序所需 的數(shù)據(jù)塊包括根據(jù)所述數(shù)據(jù)文件描述信息檢查所述數(shù)據(jù)文件是否存在;如果所述數(shù)據(jù)文件存在,則向所述服務(wù)器端發(fā)送數(shù)據(jù)塊下載請(qǐng)求;接收所述服務(wù)器端下發(fā)的所述應(yīng)用程序所需的數(shù)據(jù)塊。優(yōu)選地,所述方法還包括在向所述服務(wù)器端發(fā)送數(shù)據(jù)塊下載請(qǐng)求之前,檢查所述應(yīng)用程序所需的數(shù)據(jù)塊是 否保存在本地的映射文件中;如果是,則從所述映射文件中獲取所述應(yīng)用程序所需的數(shù)據(jù)塊;如果否,則執(zhí)行向所述服務(wù)器端發(fā)送數(shù)據(jù)塊下載請(qǐng)求的步驟。優(yōu)選地,所述方法還包括接收到所述服務(wù)器端下發(fā)的所述應(yīng)用程序所需的數(shù)據(jù)塊后,將所述數(shù)據(jù)塊保存到 所述映射文件中,并更新所述映射文件的頭部信息;所述檢查所述應(yīng)用程序所需的數(shù)據(jù)塊是否保存在本地的映射文件中包括通過(guò)檢 查所述映射文件的頭部信息,確定所述應(yīng)用程序所需的數(shù)據(jù)塊是否保存在本地的映射文件 中。優(yōu)選地,所述方法還包括服務(wù)器端接收到所述數(shù)據(jù)塊下載請(qǐng)求后,對(duì)所述請(qǐng)求進(jìn)行驗(yàn)證并檢測(cè)請(qǐng)求的數(shù)據(jù) 塊是否存在;如果驗(yàn)證通過(guò)并且所述數(shù)據(jù)塊存在,則將所述數(shù)據(jù)塊發(fā)送給請(qǐng)求方。一種應(yīng)用程序運(yùn)行裝置,包括進(jìn)程創(chuàng)建單元,用于創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程,并加載預(yù)先生成的所述應(yīng)用 程序的數(shù)據(jù)文件描述信息;監(jiān)聽(tīng)單元,用于通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,并在監(jiān)聽(tīng)到所述應(yīng) 用程序的I/O請(qǐng)求后,根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型;網(wǎng)絡(luò)通信單元,用于在所述監(jiān)聽(tīng)單元確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù) 文件后,根據(jù)所述數(shù)據(jù)文件描述信息從服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊;加載單元,用于將所述數(shù)據(jù)塊加載到內(nèi)存。優(yōu)選地,網(wǎng)絡(luò)通信單元還用于從所述服務(wù)器端下載所述數(shù)據(jù)文件描述信息,并將 所述數(shù)據(jù)文件描述信息發(fā)送給所述進(jìn)程創(chuàng)建單元。優(yōu)選地,所述裝置還包括存儲(chǔ)單元,用于在本地保存所述數(shù)據(jù)文件描述信息;所述網(wǎng)絡(luò)通信單元,還用于將下載的所述數(shù)據(jù)文件描述信息保存到所述存儲(chǔ)單元中;所述進(jìn)程創(chuàng)建單元,還用于在創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程之前,檢查所述應(yīng)用 程序的數(shù)據(jù)文件描述信息是否保存在所述存儲(chǔ)單元中;如果是,則從所述存儲(chǔ)單元中提取 并加載所述應(yīng)用程序的數(shù)據(jù)文件描述信息;如果不是,則向所述網(wǎng)絡(luò)通信單元發(fā)送通知;所述網(wǎng)絡(luò)通信單元在接收到所述進(jìn)程創(chuàng)建單元發(fā)送的通知后從所述服務(wù)器端下 載所述數(shù)據(jù)文件描述信息。 優(yōu)選地,所述裝置還包括數(shù)據(jù)文件抽取單元,用于抽取所述應(yīng)用程序的數(shù)據(jù)文件,生成所述數(shù)據(jù)文件描述 信息,并將所述數(shù)據(jù)文件描述信息保存到所述存儲(chǔ)單元和/或通過(guò)所述網(wǎng)絡(luò)通信單元將所 述數(shù)據(jù)文件描述信息上傳給所述服務(wù)器端。優(yōu)選地,所述裝置還包括檢查單元,用于在所述監(jiān)聽(tīng)單元確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件 后,根據(jù)所述數(shù)據(jù)文件描述信息檢查所述數(shù)據(jù)文件是否存在;所述網(wǎng)絡(luò)通信單元,具體用于在所述檢查單元檢查到所述數(shù)據(jù)文件存在后,從所 述服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊。優(yōu)選地,所述裝置還包括映射單元,用于保存數(shù)據(jù)塊的映射文件;數(shù)據(jù)塊提取單元,用于從所述映射單元中提取所述應(yīng)用程序所需用數(shù)據(jù)塊;所述檢查單元,還用于在檢查到所述數(shù)據(jù)文件存在后,進(jìn)一步檢查所述應(yīng)用程序 所需的數(shù)據(jù)塊是否保存在所述映射文件中;如果是,則向所述數(shù)據(jù)塊提取單元發(fā)送通知; 如果否,則向所述網(wǎng)絡(luò)通信單元發(fā)送通知;所述數(shù)據(jù)塊提取單元,具體用于在收到所述檢查單元發(fā)送的通知后,從所述映射 單元保存的映射文件中提取所述應(yīng)用程序所需的數(shù)據(jù)塊,并將所述數(shù)據(jù)發(fā)送給所述加載單 元;所述網(wǎng)絡(luò)通信單元,具體用于在收到所述檢查單元發(fā)送的通知后,從所述服務(wù)器 端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊,將所述數(shù)據(jù)塊發(fā)送給所述加載單元,并將所述數(shù)據(jù)塊 保存到所述映射文件中,同步更新所述映射文件的頭部信息。所述檢查單元通過(guò)檢查所述映射文件的頭部信息,確定所述應(yīng)用程序所需的數(shù)據(jù) 塊是否保存在本地的映射文件中。一種應(yīng)用程序加載系統(tǒng),包括客戶端和服務(wù)器端;所述服務(wù)器端,用于保存應(yīng)用程序所需的數(shù)據(jù)文件的各數(shù)據(jù)塊;所述客戶端,用于創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程,并加載預(yù)先生成的所述應(yīng)用程 序的數(shù)據(jù)文件描述信息;通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,并在監(jiān)聽(tīng)到所述應(yīng) 用程序的I/O請(qǐng)求后,根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型;如果所述應(yīng) 用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件,則根據(jù)所述數(shù)據(jù)文件描述信息從所述服務(wù)器端獲取 所述應(yīng)用程序所需的數(shù)據(jù)塊,并將所述數(shù)據(jù)塊加載到內(nèi)存。優(yōu)選地,所述客戶端通過(guò)向所述服務(wù)器端發(fā)送數(shù)據(jù)文件請(qǐng)求從所述服務(wù)器端獲取 所述應(yīng)用程序所需的數(shù)據(jù)塊;所述服務(wù)器端,還用于接收到所述數(shù)據(jù)文件請(qǐng)求后,對(duì)所述請(qǐng)求進(jìn)行驗(yàn)證并檢測(cè)請(qǐng)求的數(shù)據(jù)文件是否存在;如果驗(yàn)證通過(guò)并且所述數(shù)據(jù)文件存在,則將所述數(shù)據(jù)文件發(fā)送給所述客戶端。一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括計(jì)算機(jī)程序代碼,該計(jì)算機(jī)程序代碼由一個(gè)計(jì)算 機(jī)單元執(zhí)行,使得該計(jì)算機(jī)單元?jiǎng)?chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程,并加載預(yù)先生成的所述應(yīng)用程序的數(shù)據(jù)文件描述 fn息;通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,并在監(jiān)聽(tīng)到所述應(yīng)用程序的I/O請(qǐng) 求后,根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型;如果所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件,則根據(jù)所述數(shù)據(jù)文件描述信息 從服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊;將所述數(shù)據(jù)塊加載到內(nèi)存。本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行方法、裝置及系統(tǒng),在客戶端,通過(guò)加載預(yù)先生成的所 述應(yīng)用程序的數(shù)據(jù)文件描述信息,并監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,在監(jiān)聽(tīng)到應(yīng)用程序的 I/O請(qǐng)求后,根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型,并在所述應(yīng)用程序要 訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件時(shí),根據(jù)所述數(shù)據(jù)文件描述信息從服務(wù)器端獲取所述應(yīng)用程序 所需的數(shù)據(jù)塊,將所述數(shù)據(jù)塊加載到內(nèi)存。這樣,可以將應(yīng)用程序的程序文件和數(shù)據(jù)文件相 分離保存,使用戶終端僅安裝應(yīng)用程序的程序模塊文件,而數(shù)據(jù)文件可保存在外網(wǎng),根據(jù)用 戶需要下載安裝,從而有效地減少了應(yīng)用程序的體積,節(jié)省了用戶終端的存儲(chǔ)空間。利用本發(fā)明實(shí)施例的方法無(wú)需進(jìn)行軟件精簡(jiǎn)版本的專(zhuān)門(mén)定制,即可簡(jiǎn)單、高效地 縮減應(yīng)用程序安裝包的體積,提供用戶所需功能。
圖1是本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行方法的流程圖;圖2是本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行裝置的一種結(jié)構(gòu)示意圖;圖3是本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行裝置的另一種結(jié)構(gòu)示意圖;圖4是本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行裝置的另一種結(jié)構(gòu)示意圖;圖5是本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行裝置的另一種結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實(shí)施例的方案,下面結(jié)合附圖和實(shí)施 方式對(duì)本發(fā)明實(shí)施例作進(jìn)一步的詳細(xì)說(shuō)明。本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行方法、裝置及系統(tǒng),針對(duì)上述現(xiàn)有技術(shù)存在的缺點(diǎn),考 慮到應(yīng)用程序體積過(guò)大主要是由數(shù)據(jù)文件的體積過(guò)大引起的這一特點(diǎn),將應(yīng)用程序的程序 文件和數(shù)據(jù)文件相分離保存。在客戶端,通過(guò)加載預(yù)先生成的所述應(yīng)用程序的數(shù)據(jù)文件描 述信息,并監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,在監(jiān)聽(tīng)到應(yīng)用程序的I/O請(qǐng)求后,根據(jù)所述I/O 請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型,并在所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文 件時(shí),根據(jù)所述數(shù)據(jù)文件描述信息從服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊,將所述數(shù) 據(jù)塊加載到內(nèi)存。從而可以使用戶終端僅安裝應(yīng)用程序的程序模塊文件,而數(shù)據(jù)文件可保 存在外網(wǎng),根據(jù)用戶需要下載安裝,有效地減少了應(yīng)用程序的體積,節(jié)省了用戶終端的存儲(chǔ)空間,而且無(wú)需進(jìn)行軟件精簡(jiǎn)版本的專(zhuān)門(mén)定制,即可簡(jiǎn)單、高效地縮減應(yīng)用程序安裝包的體 積,提供用戶所需功能。如圖1所示,是本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行方法的流程圖,包括以下步驟步驟101,創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程,并加載預(yù)先生成的所述應(yīng)用程序的數(shù)據(jù) 文件描述信息。所述數(shù)據(jù)文件描述信息可以通過(guò)預(yù)先抽取所述應(yīng)用程序的數(shù)據(jù)文件來(lái)生成,該抽 取過(guò)程可以在已經(jīng)安裝好所述應(yīng)用程序的一個(gè)終端上進(jìn)行,所述終端可以是運(yùn)行所述應(yīng)用 程序的終端,也可以是其他終端。例如,假設(shè)在一個(gè)終端上部署了 wps的安裝包,wps的安裝目錄為C:\Pr0gram Files\Kingsoft\WPS Office Personal,則可以通過(guò)以下過(guò)程生成對(duì)應(yīng)該wps的數(shù)據(jù)文件 描述信息首先遍歷該目錄下的文件夾以及文件,分析在這個(gè)目錄下具體有多少文件,哪些 文件是數(shù)據(jù)文件,哪些文件是程序文件。具體地,可以根據(jù)文件名及其擴(kuò)展名來(lái)區(qū)分程序 文件和數(shù)據(jù)文件,比如,在 C:\Program Files\Kingsoft\WPSOffice Personal\office6 目 錄下大部分的dll文件和exe文件都是程序文件,在C: \Program Files\Kingsoft\WPS Office Personal\media目錄下大部分文件都是數(shù)據(jù)文件。除此之外,還可以通過(guò)分析文件的二進(jìn)制格式來(lái)確定文件類(lèi)型。遍歷分析之后,生成一個(gè)描述文件,即數(shù)據(jù)文件描述信息。這個(gè)描述文件主要包含 如下的信息應(yīng)用程序包含多少個(gè)數(shù)據(jù)文件;每個(gè)數(shù)據(jù)文件的文件名、大小、MD5校驗(yàn)碼等。 除此之外,所述數(shù)據(jù)文件描述信息還可進(jìn)一步包括每個(gè)數(shù)據(jù)文件的映射文件名。其中,所 述映射文件表示在用戶終端存儲(chǔ)的數(shù)據(jù)文件的映射信息,具體將在后面詳細(xì)說(shuō)明。當(dāng)然,根據(jù)應(yīng)用需要,還可以有其他信息,本發(fā)明實(shí)施例對(duì)此不做限定。在本發(fā)明實(shí)施例中,可以將所述數(shù)據(jù)文件描述信息保存到本地和/或服務(wù)器端, 并將所述數(shù)據(jù)文件保存到服務(wù)器端。在創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程之前,需要檢查所述應(yīng)用程序的數(shù)據(jù)文件描述信 息是否已保存在本地的指定目錄;如果是,則可以直接從本地加載所述數(shù)據(jù)文件描述信息; 如果否,則可以從所述服務(wù)器端下載所述數(shù)據(jù)文件描述信息來(lái)加載。進(jìn)一步,還可以將下載 得到的數(shù)據(jù)文件描述信息保存到本地的指定目錄中。這樣,在以后需要加載所述應(yīng)用程序 的數(shù)據(jù)文件描述信息時(shí),就可以直接從本地的指定目錄中直接加載了,而無(wú)需再?gòu)姆?wù)端 下載。步驟102,通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,并在監(jiān)聽(tīng)到所述應(yīng)用程序 的I/O請(qǐng)求后,根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型。具體地,可以由所述進(jìn)程對(duì)所述應(yīng)用程序的文件的I/O應(yīng)用程序接口(比如 CreateFiIe、GetFiIeAttributes、SetFiIePointer、CloseHandle、GetFiIeSize、ReadFiIe、 WriteFile)等函數(shù)掛鉤子(Hook),即加載I/O鉤子函數(shù),監(jiān)聽(tīng)?wèi)?yīng)用程序的I/O請(qǐng)求。在所 述應(yīng)用程序運(yùn)行后,如果有1/0請(qǐng)求,則可以被1/0鉤子函數(shù)監(jiān)聽(tīng)并攔截到。在計(jì)算機(jī)編程領(lǐng)域,使用鉤子,可以攔截軟件組件間的函數(shù)調(diào)用和消息傳遞,進(jìn)而 改變函數(shù)調(diào)用的執(zhí)行結(jié)果或消息傳遞的內(nèi)容。在本發(fā)明實(shí)施例中,1/0鉤子函數(shù)監(jiān)聽(tīng)到所述應(yīng)用程序的1/0請(qǐng)求后,根據(jù)所述I/0請(qǐng)求得到所述應(yīng)用程序要訪問(wèn)的文件句柄,根據(jù)該文件句柄可以得到該文件的相關(guān)信息, 比如文件名、大小、屬性(只讀/讀寫(xiě)等),根據(jù)這些信息即可確定被訪問(wèn)的文件類(lèi)型。比如, 所述應(yīng)用程序的數(shù)據(jù)文件描述信息中包含該文件名,則表明所述應(yīng)用程序被訪問(wèn)的文件為 數(shù)據(jù)文件。步驟103,如果所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件,則根據(jù)所述數(shù)據(jù)文件 描述信息從服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊。前面提到,所述數(shù)據(jù)文件描述信息可以包括以下信息每個(gè)數(shù)據(jù)文件的文件名、大 小、MD5校驗(yàn)碼等。因此,所述I/O鉤子函數(shù)根據(jù)所述數(shù)據(jù)文件描述信息即可檢查所述應(yīng)用 程序需要訪問(wèn)的數(shù)據(jù)文件是否存在。如果所述數(shù)據(jù)文件描述信息中包含所述應(yīng)用程序需要 訪問(wèn)的數(shù)據(jù)文件的文件名,則表明該數(shù)據(jù)文件存在;否則表明該數(shù)據(jù)文件不存在。如果檢查到所述數(shù)據(jù)文件不存在,可以向用戶返回錯(cuò)誤提示信息;如果檢查到所述數(shù)據(jù)文件存在,則可以從服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù) 塊。具體地,可以向所述服務(wù)器端發(fā)送數(shù)據(jù)塊下載請(qǐng)求;并接收所述服務(wù)器端下發(fā)的所述應(yīng) 用程序所需的數(shù)據(jù)塊。所述的數(shù)據(jù)塊是所述數(shù)據(jù)文件中的一部分?jǐn)?shù)據(jù)或全部數(shù)據(jù)。所述服務(wù)器端接收到所述數(shù)據(jù)文件請(qǐng)求后,還可以對(duì)所述請(qǐng)求進(jìn)行驗(yàn)證并檢測(cè)請(qǐng) 求的數(shù)據(jù)文件是否存在;如果驗(yàn)證通過(guò)并且所述數(shù)據(jù)文件存在,則將所述數(shù)據(jù)文件發(fā)送給 請(qǐng)求方。這樣,可以進(jìn)一步保證數(shù)據(jù)的安全性。同樣,為了方便后續(xù)應(yīng)用程序再次運(yùn)行時(shí)對(duì)所述數(shù)據(jù)塊的加載需求,并節(jié)省加載 時(shí)間成本,在從服務(wù)器端獲取到所述應(yīng)用程序所需的數(shù)據(jù)塊后,可以將其映射到本地的映 射文件中。相應(yīng)地,在本發(fā)明實(shí)施例中,在從服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊之前, 還可以進(jìn)一步檢查所述應(yīng)用程序所需的數(shù)據(jù)塊是否保存在本地的映射文件中。如果所述數(shù) 據(jù)塊保存在本地的映射文件中,則可以直接從所述映射文件中提取所述應(yīng)用程序所需的數(shù) 據(jù)塊;否則從所述服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊。所述映射文件可以包括頭部信息和數(shù)據(jù)信息兩部分內(nèi)容。其中頭部信息包括 所述映射文件中包含的各數(shù)據(jù)塊的索引信息,比如,名稱(chēng)、偏移地址等。這樣,在檢查所述應(yīng) 用程序所需的數(shù)據(jù)塊是否保存在本地的映射文件中時(shí),無(wú)需遍歷整個(gè)映射文件,只需根據(jù) 該頭部信息中的內(nèi)容即可確定,從而方便了對(duì)所述映射文件中保存的信息的查找。相應(yīng)地,為了保證映射文件中頭部信息和數(shù)據(jù)信息的對(duì)應(yīng),在將從所述服務(wù)器端 獲取的數(shù)據(jù)塊保存到所述映射文件后,還要同步更新所述映射文件的頭部信息。當(dāng)然,本發(fā)明實(shí)施例中并不僅限定上述這種實(shí)現(xiàn)方式,比如,為了進(jìn)一步節(jié)省用戶 終端的內(nèi)存空間,也可以不在本地保存所述數(shù)據(jù)塊,應(yīng)用程序每次運(yùn)行時(shí),如果需要訪問(wèn)數(shù) 據(jù)文件,再?gòu)姆?wù)器端下載相應(yīng)的數(shù)據(jù)塊。另外,由于應(yīng)用程序在訪問(wèn)數(shù)據(jù)文件時(shí),有時(shí)可能只需訪問(wèn)該數(shù)據(jù)文件中的某個(gè) 或某些數(shù)據(jù)塊,因此,每次從服務(wù)器端下載時(shí),可以將應(yīng)用程序需要訪問(wèn)的數(shù)據(jù)文件完整地 下載到本地,也可以只下載所述數(shù)據(jù)文件中所述應(yīng)用程序所需的數(shù)據(jù)塊。當(dāng)然,應(yīng)用程序也 可以不按照數(shù)據(jù)塊的邊界來(lái)訪問(wèn),有時(shí)可能只是訪問(wèn)一個(gè)數(shù)據(jù)塊的一部分內(nèi)容,有時(shí)可能 會(huì)訪問(wèn)連續(xù)的幾個(gè)數(shù)據(jù)塊。為此,可以通過(guò)一定的算法根據(jù)應(yīng)用程序要訪問(wèn)的文件偏移以 及數(shù)據(jù)大小進(jìn)行確定,并將其轉(zhuǎn)換為對(duì)應(yīng)的數(shù)據(jù)塊映射到所述映射文件中。也就是說(shuō),本地保存的映射文件中的數(shù)據(jù)塊可以和下載的數(shù)據(jù)塊的格式不同,存在一定的映射關(guān)系。步驟104,將所述數(shù)據(jù)塊加載到內(nèi)存,以供所述應(yīng)用程序使用。本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行方法,通過(guò)加載預(yù)先生成的所述應(yīng)用程序的數(shù)據(jù)文件 描述信息,并監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,在監(jiān)聽(tīng)到應(yīng)用程序的I/O請(qǐng)求后,根據(jù)所述I/O 請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型,并在所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文 件時(shí),根據(jù)所述數(shù)據(jù)文件描述信息獲取所述應(yīng)用程序所需的數(shù)據(jù)塊,將所述數(shù)據(jù)塊加載到 內(nèi)存。從而可以使用戶終端僅安裝應(yīng)用程序的程序模塊文件,而數(shù)據(jù)文件可保存在外網(wǎng),根 據(jù)用戶需要下載安裝,有效地減少了應(yīng)用程序的體積,節(jié)省了用戶終端的存儲(chǔ)空間,而且無(wú) 需進(jìn)行軟件精簡(jiǎn)版本的專(zhuān)門(mén)定制,即可簡(jiǎn)單、高效地縮減應(yīng)用程序安裝包的體積,提供用戶 所需功能。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以 通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中, 所述的存儲(chǔ)介質(zhì),如R0M/RAM、磁碟、光盤(pán)等。相應(yīng)地,本發(fā)明實(shí)施例還提供一種應(yīng)用程序運(yùn)行裝置,如圖2所示,是該裝置的一 種結(jié)構(gòu)示意圖。在該實(shí)施例中,所述裝置包括進(jìn)程創(chuàng)建單元201,監(jiān)聽(tīng)單元202,網(wǎng)絡(luò)通信單元 203和加載單元204。其中進(jìn)程創(chuàng)建單元201,用于創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程,并加載預(yù)先生成的所述應(yīng) 用程序的數(shù)據(jù)文件描述信息。所述數(shù)據(jù)文件描述信息可以是保存在本地的,也可以是保存在服務(wù)器端的,當(dāng)然, 也可以是同時(shí)保存在本地和服務(wù)器端的。如前面所述,所述數(shù)據(jù)文件描述信息可以由安裝所述應(yīng)用程序的用戶終端抽取所 述應(yīng)用程序的數(shù)據(jù)文件來(lái)生成,并將其保存在本地和/或服務(wù)器端;也可以是由其他用戶 終端生成后保存到服務(wù)器端的。所述數(shù)據(jù)文件描述信息的具體內(nèi)容及生成過(guò)程可參照前面 本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行方法中的描述,在此不再贅述。相應(yīng)地,所述進(jìn)程創(chuàng)建單元201在加載所述數(shù)據(jù)文件描述信息時(shí),可以是從本地 加載,或是從所述服務(wù)器端獲取并加載,具體過(guò)程將在后面詳細(xì)說(shuō)明。需要說(shuō)明的是,所述應(yīng)用程序的數(shù)據(jù)文件也需要預(yù)先保存在所述服務(wù)器端。監(jiān)聽(tīng)單元202,用于通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,并在監(jiān)聽(tīng)到所述 應(yīng)用程序的I/O請(qǐng)求后,根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型。具體地,可以通過(guò)所述進(jìn)程對(duì)所述應(yīng)用程序的文件的I/O應(yīng)用程序接口(比如 CreateFiIe、GetFiIeAttributes、SetFiIePointer、CloseHandle、GetFiIeSize、ReadFiIe、 WriteFile)等函數(shù)掛鉤子,即加載I/O鉤子函數(shù),監(jiān)聽(tīng)?wèi)?yīng)用程序的I/O請(qǐng)求。在所述應(yīng)用程 序運(yùn)行后,如果有I/O請(qǐng)求,則可以被I/O鉤子函數(shù)監(jiān)聽(tīng)并攔截到。I/O鉤子函數(shù)監(jiān)聽(tīng)到所述應(yīng)用程序的I/O請(qǐng)求后,根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用 程序要訪問(wèn)的文件類(lèi)型。網(wǎng)絡(luò)通信單元203,用于在所述監(jiān)聽(tīng)單元202確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi) 型為數(shù)據(jù)文件后,根據(jù)所述數(shù)據(jù)文件描述信息從服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù) 塊。
前面提到,所述應(yīng)用程序的數(shù)據(jù)文件預(yù)先保存在了服務(wù)器端,通常由于一個(gè)數(shù)據(jù) 文件包含一個(gè)或多個(gè)數(shù)據(jù)塊,而應(yīng)用程序在訪問(wèn)某個(gè)數(shù)據(jù)文件時(shí),可能只需要其中的一部 分?jǐn)?shù)據(jù)塊,因此,在本發(fā)明實(shí)施例中,所述數(shù)據(jù)塊獲取單元203可以?xún)H從所述服務(wù)器端獲取 所述應(yīng)用程序所需的數(shù)據(jù)塊。加載單元204,用于將所述數(shù)據(jù)塊加載到內(nèi)存??梢?jiàn),本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行裝置,通過(guò)加載預(yù)先生成的所述應(yīng)用程序的數(shù) 據(jù)文件描述信息,并監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,在監(jiān)聽(tīng)到應(yīng)用程序的I/O請(qǐng)求后,根據(jù) 所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型,并在所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型 為數(shù)據(jù)文件時(shí),根據(jù)所述數(shù)據(jù)文件描述信息從服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊, 將所述數(shù)據(jù)塊加載到內(nèi)存。從而可以使用戶終端僅安裝應(yīng)用程序的程序模塊文件,而將數(shù) 據(jù)文件保存在外網(wǎng),并根據(jù)用戶需要下載安裝,有效地減少了應(yīng)用程序的體積,節(jié)省了用戶 終端的存儲(chǔ)空間,而且無(wú)需進(jìn)行軟件精簡(jiǎn)版本的專(zhuān)門(mén)定制,即可簡(jiǎn)單、高效地縮減應(yīng)用程序 安裝包的體積,提供用戶所需功能。前面提到,所述數(shù)據(jù)文件描述信息可以由其他用戶終端預(yù)先生成并保存在服務(wù)器 端,為此,在本發(fā)明應(yīng)用程序運(yùn)行裝置的一種實(shí)施例中,所述網(wǎng)絡(luò)通信單元203,還用于從所 述服務(wù)器端下載所述數(shù)據(jù)文件描述信息,并將所述數(shù)據(jù)文件描述信息發(fā)送給所述進(jìn)程創(chuàng)建 單元203。如圖3所示,是本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行裝置的另一種結(jié)構(gòu)示意圖。與圖2所示實(shí)施例不同的是,在該實(shí)施例中,所述裝置還包括存儲(chǔ)單元301,用于在本地保存所述數(shù)據(jù)文件描述信息;所述網(wǎng)絡(luò)通信單元203,還用于將下載的所述數(shù)據(jù)文件描述信息保存到所述存儲(chǔ) 單元301中。在該實(shí)施例中,所述進(jìn)程創(chuàng)建單元201在第一次加載所述數(shù)據(jù)文件描述信息時(shí), 只能通過(guò)所述網(wǎng)絡(luò)通信單元203從所述服務(wù)器端下載所述數(shù)據(jù)文件描述信息來(lái)加載,而在 后續(xù)所述應(yīng)用程序再次運(yùn)行時(shí),就可以直接從所述存儲(chǔ)單元301中加載所述數(shù)據(jù)文件描述信息。相應(yīng)地,所述進(jìn)程創(chuàng)建單元201,還用于在創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程之前,檢 查所述應(yīng)用程序的數(shù)據(jù)文件描述信息是否保存在所述存儲(chǔ)單元301中;如果是,則從所述 存儲(chǔ)單元301中提取并加載所述應(yīng)用程序的數(shù)據(jù)文件描述信息;如果不是,則向所述網(wǎng)絡(luò) 通信單元203發(fā)送通知。所述網(wǎng)絡(luò)通信單元203在接收到所述進(jìn)程創(chuàng)建單元201發(fā)送的通 知后從所述服務(wù)器端下載所述數(shù)據(jù)文件描述信息,將所述數(shù)據(jù)文件描述信息返回給所述進(jìn) 程創(chuàng)建單元201,并將所述數(shù)據(jù)文件描述信息保存到所述存儲(chǔ)單元301中。前面提到,所述數(shù)據(jù)文件描述信息還可以由安裝所述應(yīng)用程序的用戶終端抽取所 述應(yīng)用程序的數(shù)據(jù)文件來(lái)生成。如圖4所示,是本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行裝置的另一種結(jié)構(gòu)示意圖。與圖3所示實(shí)施例不同的是,在該實(shí)施例中,所述裝置還包括數(shù)據(jù)文件抽取單元401,用于抽取所述應(yīng)用程序的數(shù)據(jù)文件,生成所述數(shù)據(jù)文件描 述信息,并將所述數(shù)據(jù)文件描述信息保存到所述存儲(chǔ)單元301中。當(dāng)然,在本發(fā)明應(yīng)用程序運(yùn)行裝置的另一實(shí)施例中,所述數(shù)據(jù)文件抽取單元401還可以通過(guò)所述網(wǎng)絡(luò)通信單元將所述數(shù)據(jù)文件描述信息上傳給所述服務(wù)器端。當(dāng)然,所述數(shù)據(jù)文件抽取單元401可以同時(shí)將所述數(shù)據(jù)文件描述信息保存到所述 存儲(chǔ)單元和通過(guò)所述網(wǎng)絡(luò)通信單元上傳給所述服務(wù)器端。在該實(shí)施例中,所述進(jìn)程創(chuàng)建單元201在第一次加載所述數(shù)據(jù)文件描述信息時(shí), 就可以直接從所述存儲(chǔ)單元301中加載所述數(shù)據(jù)文件描述信息。相應(yīng)地,所述進(jìn)程創(chuàng)建單元201,還用于在創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程之前,檢 查所述應(yīng)用程序的數(shù)據(jù)文件描述信息是否保存在所述存儲(chǔ)單元301中;如果是,則從所述 存儲(chǔ)單元301中提取并加載所述應(yīng)用程序的數(shù)據(jù)文件描述信息;如果不是,則向所述網(wǎng)絡(luò) 通信單元203發(fā)送通知。所述網(wǎng)絡(luò)通信單元203在接收到所述進(jìn)程創(chuàng)建單元201發(fā)送的通 知后從所述服務(wù)器端下載所述數(shù)據(jù)文件描述信息,將所述數(shù)據(jù)文件描述信息返回給所述進(jìn) 程創(chuàng)建單元201,并將所述數(shù)據(jù)文件描述信息保存到所述存儲(chǔ)單元301中。如圖5所示,是本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行裝置的另一種結(jié)構(gòu)示意圖。與圖2所示實(shí)施例不同的是,在該實(shí)施例中,所述裝置還包括檢查單元501,用于在所述監(jiān)聽(tīng)單元202確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為 數(shù)據(jù)文件后,根據(jù)所述進(jìn)程創(chuàng)建單元201加載的數(shù)據(jù)文件描述信息檢查所述數(shù)據(jù)文件是否 存在。在該實(shí)施例中,所述網(wǎng)絡(luò)通信單元203需要在所述檢查單元501檢查到所述數(shù)據(jù) 文件存在后,從所述服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊。當(dāng)然,所述檢查單元501同樣可以應(yīng)用于上述圖3和圖4所示的實(shí)施例中。為了進(jìn)一步方便后續(xù)應(yīng)用程序運(yùn)行時(shí)對(duì)之前加載過(guò)的數(shù)據(jù)塊的加載需求,在本發(fā) 明實(shí)施例中,還可進(jìn)一步包括映射單元502和數(shù)據(jù)塊提取單元503。其中映射單元502,用于保存數(shù)據(jù)塊的映射文件;數(shù)據(jù)塊提取單元503,用于從所述映射單元502中提取所述應(yīng)用程序所需用數(shù)據(jù) 塊。在該實(shí)施例中,所述檢查單元501,還用于在檢查到所述數(shù)據(jù)文件存在后,進(jìn)一步 檢查所述應(yīng)用程序所需的數(shù)據(jù)塊是否保存在所述映射文件中;如果是,則向所述數(shù)據(jù)塊提 取單元503發(fā)送通知;如果否,則向所述網(wǎng)絡(luò)通信單元203發(fā)送通知。所述數(shù)據(jù)塊提取單元503,具體用于在收到所述檢查單元501發(fā)送的通知后,從所 述映射單元502保存的映射文件中提取所述應(yīng)用程序所需的數(shù)據(jù)塊,并將所述數(shù)據(jù)塊發(fā)送 給所述加載單元204。同樣,所述網(wǎng)絡(luò)通信單元203,具體用于在收到所述檢查單元501發(fā)送的通知后, 從所述服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊,并將所述數(shù)據(jù)塊發(fā)送給所述加載單元 204。同時(shí),還要將所述數(shù)據(jù)塊保存到所述映射文件中。本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行裝置,通過(guò)加載預(yù)先生成的所述應(yīng)用程序的數(shù)據(jù)文件 描述信息,并監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,在監(jiān)聽(tīng)到應(yīng)用程序的I/O請(qǐng)求后,根據(jù)所述I/O 請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型,并在所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文 件時(shí),根據(jù)所述數(shù)據(jù)文件描述信息從服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊,將所述數(shù) 據(jù)塊加載到內(nèi)存。從而可以使用戶終端僅安裝應(yīng)用程序的程序模塊文件,而將數(shù)據(jù)文件保 存在外網(wǎng),并根據(jù)用戶需要下載安裝,有效地減少了應(yīng)用程序的體積,節(jié)省了用戶終端的存
13儲(chǔ)空間,而且無(wú)需進(jìn)行軟件精簡(jiǎn)版本的專(zhuān)門(mén)定制,即可簡(jiǎn)單、高效地縮減應(yīng)用程序安裝包的 體積,提供用戶所需功能。進(jìn)一步地,網(wǎng)絡(luò)通信單元203從所述服務(wù)器端獲取到所述應(yīng)用程 序所需的數(shù)據(jù)塊,將其保存到所述映射文件中,可以使應(yīng)用程序在后續(xù)再次運(yùn)行時(shí),可以直 接從本地獲取所述數(shù)據(jù)塊,而無(wú)需再通過(guò)網(wǎng)絡(luò)獲取,從而有效地加快了所述數(shù)據(jù)塊的加載 時(shí)間,并最大限度地節(jié)省了本地存儲(chǔ)空間。在本發(fā)明實(shí)施例中,所述映射文件可以包括頭部信息和數(shù)據(jù)信息兩部分內(nèi)容。為 此,所述網(wǎng)絡(luò)通信單元203在將從服務(wù)器端獲取到的數(shù)據(jù)塊保存到所述映射文件的同時(shí), 還需要同步更新所述映射文件的頭部信息。這樣,可以使所述檢查單元501在檢查所述應(yīng) 用程序所需的數(shù)據(jù)塊是否保存在本地的映射文件中時(shí),無(wú)需遍歷整個(gè)映射文件,只需檢查 所述映射文件的頭部信息,即可確定所述應(yīng)用程序所需的數(shù)據(jù)塊是否保存在本地的映射文 件中。需要說(shuō)明的是,在本發(fā)明實(shí)施例中,所述映射文件中的數(shù)據(jù)塊可以和從服務(wù)器端 下載獲得的數(shù)據(jù)塊的格式不同,存在一定的映射關(guān)系。本發(fā)明實(shí)施例還提供一種應(yīng)用程序運(yùn)行系統(tǒng),所述系統(tǒng)包括客戶端和服務(wù)器端。 其中所述服務(wù)器端,用于保存應(yīng)用程序所需的數(shù)據(jù)文件的各數(shù)據(jù)塊;所述客戶端,用于創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程,并加載預(yù)先生成的所述應(yīng)用程 序的數(shù)據(jù)文件描述信息;通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,并在監(jiān)聽(tīng)到所述應(yīng) 用程序的I/O請(qǐng)求后,根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型;如果所述應(yīng) 用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件,則根據(jù)所述數(shù)據(jù)文件描述信息從所述服務(wù)器端獲取 所述應(yīng)用程序所需的數(shù)據(jù)塊,并將所述數(shù)據(jù)塊加載到內(nèi)存。在本發(fā)明實(shí)施例中,所述客戶端可以是前面各實(shí)施例中的應(yīng)用程序運(yùn)行裝置。另外,所述客戶端通過(guò)向所述服務(wù)器端發(fā)送數(shù)據(jù)文件請(qǐng)求從所述服務(wù)器端獲取所 述應(yīng)用程序所需的數(shù)據(jù)塊。相應(yīng)地,所述服務(wù)器端,還用于接收到所述數(shù)據(jù)文件請(qǐng)求后,對(duì) 所述請(qǐng)求進(jìn)行驗(yàn)證并檢測(cè)請(qǐng)求的數(shù)據(jù)文件是否存在;如果驗(yàn)證通過(guò)并且所述數(shù)據(jù)文件存 在,則將所述數(shù)據(jù)文件發(fā)送給所述客戶端。本發(fā)明實(shí)施例應(yīng)用程序運(yùn)行系統(tǒng),不需要對(duì)特別軟件做專(zhuān)門(mén)定制,即可實(shí)現(xiàn)流式 運(yùn)行、按需下載,即客戶端的用戶終端只需安裝軟件完整版本的一部分文件,其余需要的文 件以數(shù)據(jù)流的方式從服務(wù)器端下載,從而可以有效節(jié)省用戶的磁盤(pán)空間。本發(fā)明實(shí)施例應(yīng) 用程序運(yùn)行系統(tǒng)通用性強(qiáng),對(duì)市面上大部分軟件以及網(wǎng)絡(luò)游戲均有較好效果。進(jìn)一步地,還 可以通過(guò)控制數(shù)據(jù)文件的下載來(lái)實(shí)現(xiàn)針對(duì)不同用戶在功能使用上的限制。以上對(duì)本發(fā)明實(shí)施例進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行 了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及設(shè)備;同時(shí),對(duì)于本領(lǐng)域的 一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所 述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種應(yīng)用程序運(yùn)行方法,其特征在于,包括創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程,并加載預(yù)先生成的所述應(yīng)用程序的數(shù)據(jù)文件描述信息;通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,并在監(jiān)聽(tīng)到所述應(yīng)用程序的I/O請(qǐng)求后, 根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型;如果所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件,則根據(jù)所述數(shù)據(jù)文件描述信息從服 務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊; 將所述數(shù)據(jù)塊加載到內(nèi)存。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述加載預(yù)先生成的所述應(yīng)用程序的數(shù) 據(jù)文件描述信息包括從所述服務(wù)器端加載所述應(yīng)用程序的數(shù)據(jù)文件描述信息。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括在創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程之前,檢查所述應(yīng)用程序的數(shù)據(jù)文件描述信息是否保 存在本地的指定目錄;如果是,則從所述指定目錄加載所述數(shù)據(jù)文件描述信息;如果否,則執(zhí)行所述從所述服務(wù)器端加載所述應(yīng)用程序的數(shù)據(jù)文件描述信息的步驟。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括 抽取所述應(yīng)用程序的數(shù)據(jù)文件,生成所述數(shù)據(jù)文件描述信息;將所述數(shù)據(jù)文件描述信息保存到本地的指定目錄和/或所述服務(wù)器端,并將所述數(shù)據(jù) 文件保存到所述服務(wù)器端。
5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,所述通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng) 用程序的I/O請(qǐng)求包括通過(guò)所述進(jìn)程加載I/O鉤子函數(shù);通過(guò)所述I/O鉤子函數(shù)在所述應(yīng)用程序運(yùn)行時(shí)監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求。
6.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述數(shù)據(jù)文件描述信 息從所述服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊包括根據(jù)所述數(shù)據(jù)文件描述信息檢查所述數(shù)據(jù)文件是否存在; 如果所述數(shù)據(jù)文件存在,則向所述服務(wù)器端發(fā)送數(shù)據(jù)塊下載請(qǐng)求; 接收所述服務(wù)器端下發(fā)的所述應(yīng)用程序所需的數(shù)據(jù)塊。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述方法還包括在向所述服務(wù)器端發(fā)送數(shù)據(jù)塊下載請(qǐng)求之前,檢查所述應(yīng)用程序所需的數(shù)據(jù)塊是否保 存在本地的映射文件中;如果是,則從所述映射文件中獲取所述應(yīng)用程序所需的數(shù)據(jù)塊; 如果否,則執(zhí)行向所述服務(wù)器端發(fā)送數(shù)據(jù)塊下載請(qǐng)求的步驟。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述方法還包括接收到所述服務(wù)器端下發(fā)的所述應(yīng)用程序所需的數(shù)據(jù)塊后,將所述數(shù)據(jù)塊保存到所述 映射文件中,并更新所述映射文件的頭部信息;所述檢查所述應(yīng)用程序所需的數(shù)據(jù)塊是否保存在本地的映射文件中包括通過(guò)檢查所 述映射文件的頭部信息,確定所述應(yīng)用程序所需的數(shù)據(jù)塊是否保存在本地的映射文件中。
9.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述方法還包括服務(wù)器端接收到所述數(shù)據(jù)塊下載請(qǐng)求后,對(duì)所述請(qǐng)求進(jìn)行驗(yàn)證并檢測(cè)請(qǐng)求的數(shù)據(jù)塊是 否存在;如果驗(yàn)證通過(guò)并且所述數(shù)據(jù)塊存在,則將所述數(shù)據(jù)塊發(fā)送給請(qǐng)求方。
10.一種應(yīng)用程序運(yùn)行裝置,其特征在于,包括進(jìn)程創(chuàng)建單元,用于創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程,并加載預(yù)先生成的所述應(yīng)用程序 的數(shù)據(jù)文件描述信息;監(jiān)聽(tīng)單元,用于通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,并在監(jiān)聽(tīng)到所述應(yīng)用程 序的I/O請(qǐng)求后,根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型;網(wǎng)絡(luò)通信單元,用于在所述監(jiān)聽(tīng)單元確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件 后,根據(jù)所述數(shù)據(jù)文件描述信息從服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊; 加載單元,用于將所述數(shù)據(jù)塊加載到內(nèi)存。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,網(wǎng)絡(luò)通信單元,還用于從所述服務(wù)器端下載所述數(shù)據(jù)文件描述信息,并將所述數(shù)據(jù)文 件描述信息發(fā)送給所述進(jìn)程創(chuàng)建單元。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述裝置還包括 存儲(chǔ)單元,用于在本地保存所述數(shù)據(jù)文件描述信息;所述網(wǎng)絡(luò)通信單元,還用于將下載的所述數(shù)據(jù)文件描述信息保存到所述存儲(chǔ)單元中; 所述進(jìn)程創(chuàng)建單元,還用于在創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程之前,檢查所述應(yīng)用程序 的數(shù)據(jù)文件描述信息是否保存在所述存儲(chǔ)單元中;如果是,則從所述存儲(chǔ)單元中提取并加 載所述應(yīng)用程序的數(shù)據(jù)文件描述信息;如果不是,則向所述網(wǎng)絡(luò)通信單元發(fā)送通知;所述網(wǎng)絡(luò)通信單元在接收到所述進(jìn)程創(chuàng)建單元發(fā)送的通知后從所述服務(wù)器端下載所 述數(shù)據(jù)文件描述信息。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述裝置還包括數(shù)據(jù)文件抽取單元,用于抽取所述應(yīng)用程序的數(shù)據(jù)文件,生成所述數(shù)據(jù)文件描述信息, 并將所述數(shù)據(jù)文件描述信息保存到所述存儲(chǔ)單元和/或通過(guò)所述網(wǎng)絡(luò)通信單元將所述數(shù) 據(jù)文件描述信息上傳給所述服務(wù)器端。
14.根據(jù)權(quán)利要求10至13任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括檢查單元,用于在所述監(jiān)聽(tīng)單元確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件后, 根據(jù)所述數(shù)據(jù)文件描述信息檢查所述數(shù)據(jù)文件是否存在;所述網(wǎng)絡(luò)通信單元,具體用于在所述檢查單元檢查到所述數(shù)據(jù)文件存在后,從所述服 務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述裝置還包括 映射單元,用于保存數(shù)據(jù)塊的映射文件;數(shù)據(jù)塊提取單元,用于從所述映射單元中提取所述應(yīng)用程序所需用數(shù)據(jù)塊; 所述檢查單元,還用于在檢查到所述數(shù)據(jù)文件存在后,進(jìn)一步檢查所述應(yīng)用程序所需 的數(shù)據(jù)塊是否保存在所述映射文件中;如果是,則向所述數(shù)據(jù)塊提取單元發(fā)送通知;如果 否,則向所述網(wǎng)絡(luò)通信單元發(fā)送通知;所述數(shù)據(jù)塊提取單元,具體用于在收到所述檢查單元發(fā)送的通知后,從所述映射單元保存的映射文件中提取所述應(yīng)用程序所需的數(shù)據(jù)塊,并將所述數(shù)據(jù)發(fā)送給所述加載單元;所述網(wǎng)絡(luò)通信單元,具體用于在收到所述檢查單元發(fā)送的通知后,從所述服務(wù)器端獲 取所述應(yīng)用程序所需的數(shù)據(jù)塊,將所述數(shù)據(jù)塊發(fā)送給所述加載單元,并將所述數(shù)據(jù)塊保存 到所述映射文件中,同步更新所述映射文件的頭部信息。所述檢查單元通過(guò)檢查所述映射文件的頭部信息,確定所述應(yīng)用程序所需的數(shù)據(jù)塊是 否保存在本地的映射文件中。
16.一種應(yīng)用程序加載系統(tǒng),其特征在于,包括客戶端和服務(wù)器端;所述服務(wù)器端,用于保存應(yīng)用程序所需的數(shù)據(jù)文件的各數(shù)據(jù)塊;所述客戶端,用于創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程,并加載預(yù)先生成的所述應(yīng)用程序的 數(shù)據(jù)文件描述信息;通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,并在監(jiān)聽(tīng)到所述應(yīng)用程 序的I/O請(qǐng)求后,根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型;如果所述應(yīng)用程 序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件,則根據(jù)所述數(shù)據(jù)文件描述信息從所述服務(wù)器端獲取所述 應(yīng)用程序所需的數(shù)據(jù)塊,并將所述數(shù)據(jù)塊加載到內(nèi)存。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其特征在于,所述客戶端通過(guò)向所述服務(wù)器端發(fā)送數(shù)據(jù)文件請(qǐng)求從所述服務(wù)器端獲取所述應(yīng)用程 序所需的數(shù)據(jù)塊;所述服務(wù)器端,還用于接收到所述數(shù)據(jù)文件請(qǐng)求后,對(duì)所述請(qǐng)求進(jìn)行驗(yàn)證并檢測(cè)請(qǐng)求 的數(shù)據(jù)文件是否存在;如果驗(yàn)證通過(guò)并且所述數(shù)據(jù)文件存在,則將所述數(shù)據(jù)文件發(fā)送給所述客戶端。
18.根據(jù)權(quán)利要求16或17所述的系統(tǒng),其特征在于,所述客戶端為權(quán)利要求10至15 任一項(xiàng)所述的應(yīng)用程序運(yùn)行裝置。
19.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,包括計(jì)算機(jī)程序代碼,該計(jì)算機(jī)程序代碼 由一個(gè)計(jì)算機(jī)單元執(zhí)行,使得該計(jì)算機(jī)單元?jiǎng)?chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程,并加載預(yù)先生成的所述應(yīng)用程序的數(shù)據(jù)文件描述信息;通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,并在監(jiān)聽(tīng)到所述應(yīng)用程序的I/O請(qǐng)求后, 根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型;如果所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件,則根據(jù)所述數(shù)據(jù)文件描述信息從服 務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊;將所述數(shù)據(jù)塊加載到內(nèi)存。
全文摘要
本發(fā)明涉及軟件處理技術(shù)領(lǐng)域,公開(kāi)了一種應(yīng)用程序運(yùn)行方法、裝置及系統(tǒng),所述方法包括創(chuàng)建對(duì)應(yīng)所述應(yīng)用程序的進(jìn)程,并加載預(yù)先生成的所述應(yīng)用程序的數(shù)據(jù)文件描述信息;通過(guò)所述進(jìn)程監(jiān)聽(tīng)所述應(yīng)用程序的I/O請(qǐng)求,并在監(jiān)聽(tīng)到所述應(yīng)用程序的I/O請(qǐng)求后,根據(jù)所述I/O請(qǐng)求確定所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型;如果所述應(yīng)用程序要訪問(wèn)的文件類(lèi)型為數(shù)據(jù)文件,則根據(jù)所述數(shù)據(jù)文件描述信息從服務(wù)器端獲取所述應(yīng)用程序所需的數(shù)據(jù)塊;將所述數(shù)據(jù)塊加載到內(nèi)存。利用本發(fā)明,無(wú)需進(jìn)行專(zhuān)門(mén)定制,即可簡(jiǎn)單、高效地縮減應(yīng)用程序安裝包的體積,提供用戶所需功能。
文檔編號(hào)G06F9/445GK102135892SQ20101010033
公開(kāi)日2011年7月27日 申請(qǐng)日期2010年1月22日 優(yōu)先權(quán)日2010年1月22日
發(fā)明者朱熠鍔 申請(qǐng)人:北京金山數(shù)字娛樂(lè)科技有限公司