專利名稱:基于檔案流的安裝的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在計(jì)算機(jī)系統(tǒng)上安裝軟件。更確切地說(shuō),本發(fā)明涉及將來(lái)自檔案的文件 安裝到計(jì)算機(jī)系統(tǒng)。
背景技術(shù):
許多常規(guī)的軟件安裝技術(shù)(一般稱為安裝技術(shù))利用自提取檔案,其實(shí)施兩步驟的 過(guò)程以將文件安裝到目標(biāo)計(jì)算機(jī)系統(tǒng)上。在第一步驟中,從檔案中提取將要安裝的文件, 且將其復(fù)制到預(yù)定的系統(tǒng)臨時(shí)文件夾。在第二步驟中,啟動(dòng)安裝過(guò)程,且將系統(tǒng)臨時(shí)文 件夾中的文件從系統(tǒng)臨時(shí)文件夾復(fù)制到目標(biāo)計(jì)算機(jī)系統(tǒng)上的最終目的地。通常,使用數(shù) 據(jù)庫(kù)、腳本、數(shù)據(jù)文件或前述的組合來(lái)確定將復(fù)制文件的次序以及將把文件放置在目標(biāo) 計(jì)算機(jī)系統(tǒng)上的何處。此兩步驟的過(guò)程是一個(gè)耗時(shí)且耗資源的過(guò)程。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的實(shí)施例,將文件從檔案直接提取到計(jì)算機(jī)系統(tǒng)上的一個(gè)或一個(gè)以上最 終文件目的地。在一個(gè)實(shí)施例中,提取過(guò)程被掛鉤,這允許將文件的檔案指定的文件目 的地改變?yōu)橛?jì)算機(jī)系統(tǒng)上的最終文件目的地位置。接著可將文件從檔案直接寫入到計(jì)算 機(jī)系統(tǒng)上的一個(gè)或一個(gè)以上最終文件目的地位置。在一個(gè)實(shí)施例中,所述掛鉤是由回調(diào) 提供的回調(diào)掛鉤,通過(guò)歸檔技術(shù)(即,7-Zip、 RAR、 ZIP、 CAB)來(lái)提供所述回調(diào)。在 另一實(shí)施例中,所述掛鉤是攔截與正被提取過(guò)程打開的文件相關(guān)聯(lián)的文件事件的文件系 統(tǒng)掛鉤。
在另一實(shí)施例中,基于檔案流的安裝提取引擎經(jīng)配置以獲得最終文件目的地位置, 并將文件從檔案直接寫入到計(jì)算機(jī)系統(tǒng)上的一個(gè)或一個(gè)以上最終文件目的地位置。
通過(guò)在結(jié)合附圖閱讀時(shí)參考以下詳細(xì)描述,將最好地理解根據(jù)本發(fā)明的實(shí)施例。
圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例包括在主機(jī)計(jì)算機(jī)系統(tǒng)上執(zhí)行的基于檔案流的安裝 應(yīng)用程序的計(jì)算機(jī)系統(tǒng)的圖。
圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例用于一個(gè)或一個(gè)以上軟件文件的基于檔案流的安裝 方法的高級(jí)流程圖。
8圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例利用回調(diào)掛鉤的用于一個(gè)或一個(gè)以上軟件文件的基 于檔案流的安裝方法的流程圖。
圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例說(shuō)明使用圖3的方法中的回調(diào)掛鉤的一個(gè)實(shí)例的方 框圖。
圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例利用文件系統(tǒng)掛鉤的用于一個(gè)或一個(gè)以上軟件文件 的基于檔案流的安裝方法的流程圖。
圖6是根據(jù)本發(fā)明的一個(gè)實(shí)施例說(shuō)明使用圖5的方法中的文件系統(tǒng)掛鉤的一個(gè)實(shí)例 的方框圖。
圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例包括在主機(jī)計(jì)算機(jī)系統(tǒng)上執(zhí)行的基于檔案流的安裝 提取引擎的計(jì)算機(jī)系統(tǒng)的圖。
圖8說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例由圖7的基于檔案流的安裝提取引擎實(shí)施的用于 一個(gè)或一個(gè)以上軟件文件的基于檔案流的安裝方法的流程圖。
在整個(gè)圖式和詳細(xì)描述中使用共同的參考標(biāo)號(hào)來(lái)指示相同元件。
具體實(shí)施例方式
根據(jù)本發(fā)明的實(shí)施例在正將檔案提取到文件系統(tǒng)中的一個(gè)或一個(gè)以上最終文件目的 地時(shí)從檔案直接串流文件。將檔案文件一次寫入到其最終文件目的地,而不是一次寫入 到中間臨時(shí)位置(例如,系統(tǒng)臨時(shí)文件夾)然后在第二次寫入到最終位置,從而減少檔 案文件的安裝時(shí)間。
在一個(gè)實(shí)施例中,檔案確定文件提取的次序,且檔案的提取驅(qū)動(dòng)安裝過(guò)程。從檔案 循序地處理文件比起在文件系統(tǒng)上或在檔案中隨機(jī)尋找提供更大的性能,因?yàn)椴僮飨到y(tǒng) 將在請(qǐng)求之前提前讀取并緩沖存儲(chǔ)器。
更特定地參看圖l,圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)100 (例如,第一 計(jì)算機(jī)系統(tǒng))的圖,所述計(jì)算機(jī)系統(tǒng)100包括在主機(jī)計(jì)算機(jī)系統(tǒng)102上執(zhí)行的基于檔案 流的安裝應(yīng)用程序106。主機(jī)計(jì)算機(jī)系統(tǒng)102 (有時(shí)稱為客戶端或用戶裝置)通常包括中 央處理單元(CPU) 108 (下文為處理器108)、輸入/輸出(I/O)接口 110、存儲(chǔ)器112 和操作系統(tǒng)104。在一個(gè)實(shí)施例中,基于檔案流的安裝應(yīng)用程序106存儲(chǔ)在主機(jī)計(jì)算機(jī) 系統(tǒng)102的存儲(chǔ)器112中,并在主機(jī)計(jì)算機(jī)系統(tǒng)102上執(zhí)行。
在一個(gè)實(shí)施例中,存儲(chǔ)器112包括用于永久地存儲(chǔ)文件的存儲(chǔ)媒體(未圖示),有時(shí) 稱為非易失性存儲(chǔ)器、非臨時(shí)存儲(chǔ)存儲(chǔ)器、非臨時(shí)存儲(chǔ)媒體,或永久存儲(chǔ)存儲(chǔ)器。舉例 來(lái)說(shuō),在一個(gè)實(shí)施例中,存儲(chǔ)媒體是硬盤驅(qū)動(dòng)器,例如磁性硬盤驅(qū)動(dòng)器、軟盤、CD-ROM和/或DVD。 一般來(lái)說(shuō),在主機(jī)計(jì)算機(jī)系統(tǒng)102斷電(關(guān)閉)后,存儲(chǔ)在永久存儲(chǔ)存儲(chǔ)器 (例如,磁性硬盤、軟盤、CD-ROM、 DVD)中的文件不受影響且被維持,即不會(huì)丟失。 在各種實(shí)施例中,存儲(chǔ)器112進(jìn)一步包括用于非永久地存儲(chǔ)文件的易失性存儲(chǔ)器, 有時(shí)稱為臨時(shí)存儲(chǔ)存儲(chǔ)器、非臨時(shí)存儲(chǔ)媒體,或非永久存儲(chǔ)存儲(chǔ)器。 一般來(lái)說(shuō),在主機(jī) 計(jì)算機(jī)系統(tǒng)102斷電(關(guān)閉)后,存儲(chǔ)在非永久存儲(chǔ)存儲(chǔ)器中的文件會(huì)丟失。在一個(gè)實(shí) 施例中,主機(jī)計(jì)算機(jī)系統(tǒng)102利用一文件系統(tǒng)(未圖示)來(lái)管理文件在主機(jī)計(jì)算機(jī)系統(tǒng) 102上的存儲(chǔ)。
主機(jī)計(jì)算機(jī)系統(tǒng)102可進(jìn)一步包括標(biāo)準(zhǔn)裝置,如鍵盤118、鼠標(biāo)126、打印機(jī)120和 顯示裝置122,以及一個(gè)或一個(gè)以上標(biāo)準(zhǔn)輸入/輸出(1/0)裝置124(例如,壓縮光盤(CD) 或DVD驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器,或用于將數(shù)據(jù)輸入到主機(jī)計(jì)算機(jī)系統(tǒng)102和從主機(jī)計(jì)算機(jī) 系統(tǒng)102輸出數(shù)據(jù)的其它數(shù)字或波形端口)。在一個(gè)實(shí)施例中,經(jīng)由1/0裝置124例如從 含有基于檔案流的安裝應(yīng)用程序106的CD、 DVD或軟盤將基于檔案流的安裝應(yīng)用程序 106加載到主機(jī)計(jì)算機(jī)系統(tǒng)102上。
在一個(gè)實(shí)施例中,基于檔案流的安裝應(yīng)用程序106包括檔案114、提取引擎140、 重定向引擎142以及密鑰映射數(shù)據(jù)庫(kù)144。在一個(gè)實(shí)施例中,檔案114包括將要安裝在目 標(biāo)計(jì)算機(jī)系統(tǒng)(例如,主機(jī)計(jì)算機(jī)系統(tǒng)102)上的一個(gè)或一個(gè)以上文件和/或文件文件夾。 在一個(gè)實(shí)施例中,檔案114是經(jīng)加密的檔案,其中通過(guò)密鑰識(shí)別符來(lái)識(shí)別每一將要提取 的文件夾。
在一個(gè)實(shí)施例中,提取引擎140是從檔案114讀取文件并將檔案文件寫入到主機(jī)計(jì) 算機(jī)系統(tǒng)102的應(yīng)用程序,例如程序代碼。在一個(gè)實(shí)施例中,密鑰映射數(shù)據(jù)庫(kù)144是包 括對(duì)應(yīng)于檔案114中的文件的最終目的地信息在內(nèi)的信息的數(shù)據(jù)庫(kù)。在一個(gè)實(shí)施例中, 密鑰映射數(shù)據(jù)庫(kù)144包括若干條目,所述條目包括密鑰識(shí)別符和對(duì)應(yīng)的最終目的地路徑, 例如,最終目的地位置。
在一個(gè)實(shí)施例中,重定向引擎142是管理由提取引擎140根據(jù)密鑰映射數(shù)據(jù)庫(kù)144 中的信息將文件從檔案114提取到主機(jī)計(jì)算機(jī)系統(tǒng)102上的最終目的地(例如,文件系 統(tǒng)位置116)的應(yīng)用程序,例如程序代碼。在本文中參考圖2-6更詳細(xì)地進(jìn)一步描述基于 檔案流的安裝應(yīng)用程序106的各種組成部分。
在一個(gè)實(shí)施例中,主機(jī)計(jì)算機(jī)系統(tǒng)102通過(guò)網(wǎng)絡(luò)128耦合到系統(tǒng)100的服務(wù)器計(jì)算 機(jī)系統(tǒng)130。服務(wù)器計(jì)算機(jī)系統(tǒng)130通常包括處理器134、存儲(chǔ)器132和網(wǎng)絡(luò)接口 136。
主機(jī)計(jì)算機(jī)系統(tǒng)102也可通過(guò)網(wǎng)絡(luò)128耦合到系統(tǒng)100的其它計(jì)算機(jī)系統(tǒng),例如計(jì)
10算機(jī)系統(tǒng)138。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)138類似于主機(jī)計(jì)算機(jī)系統(tǒng)102,且例如包 括中央處理單元、輸入輸出(I/O)接口和存儲(chǔ)器。計(jì)算機(jī)系統(tǒng)138可進(jìn)一步包括標(biāo)準(zhǔn)裝 置,例如鍵盤、鼠標(biāo)、打印機(jī)、顯示裝置和I/0裝置。未說(shuō)明計(jì)算機(jī)系統(tǒng)138的各種硬 件組件以免轉(zhuǎn)移對(duì)本發(fā)明的原理的注意。
網(wǎng)絡(luò)128可為用戶感興趣的任何網(wǎng)絡(luò)或網(wǎng)絡(luò)系統(tǒng)。在各種實(shí)施例中,網(wǎng)絡(luò)接口 136 和I/0接口 110包括模擬調(diào)制解調(diào)器、數(shù)字調(diào)制解調(diào)器或網(wǎng)絡(luò)接口卡。主機(jī)計(jì)算機(jī)系統(tǒng) 102、計(jì)算機(jī)系統(tǒng)138和服務(wù)器計(jì)算機(jī)系統(tǒng)130的特定類型和配置對(duì)于本發(fā)明并不重要。
圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例用于一個(gè)或一個(gè)以上軟件文件的基于檔案流的安裝 方法200的高級(jí)流程圖?,F(xiàn)在同時(shí)參看圖1和圖2,在一個(gè)實(shí)施例中,由處理器108執(zhí) 行基于檔案流的安裝應(yīng)用程序106導(dǎo)致如下所述的方法200的操作。
在本實(shí)施例中,基于檔案流的安裝應(yīng)用程序106安裝在主機(jī)計(jì)算機(jī)系統(tǒng)102上。在 一個(gè)實(shí)施例中,在"進(jìn)入"操作202處進(jìn)入方法200,且處理從"進(jìn)入"操作202轉(zhuǎn)變 到"啟動(dòng)基于檔案流的安裝應(yīng)用程序"操作204。
在"啟動(dòng)基于檔案流的安裝應(yīng)用程序"操作204中,在主機(jī)計(jì)算機(jī)系統(tǒng)102上啟動(dòng) 基于檔案流的安裝應(yīng)用程序106。處理從"啟動(dòng)基于檔案流的安裝應(yīng)用程序"操作204 轉(zhuǎn)變到"將文件從檔案直接提取到最終目的地"操作206。
在"將文件從檔案直接提取到最終目的地"操作206中,從檔案(例如,檔案114) 直接自動(dòng)提取要安裝在主機(jī)計(jì)算機(jī)系統(tǒng)102上的檔案文件,且將其寫入到主機(jī)計(jì)算機(jī)系 統(tǒng)102上的一個(gè)或一個(gè)以上最終目的地,例如最終文件目的地116。處理從"將文件從檔 案直接提取到最終目的地"操作206轉(zhuǎn)變到"退出"操作208,其中處理退出方法200。 本文中參考圖3、圖4、圖5和圖6進(jìn)一步描述用于將文件從檔案直接提取到主機(jī)計(jì)算機(jī) 系統(tǒng)102上的最終目的地的各種實(shí)施例。
現(xiàn)在參看圖3,圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例利用回調(diào)掛鉤的用于一個(gè)或一個(gè)以 上軟件文件的基于檔案流的安裝方法300的流程圖。參考圖4來(lái)論述圖3,圖4是根據(jù) 本發(fā)明的一個(gè)實(shí)施例說(shuō)明使用圖3的方法中的回調(diào)掛鉤的一個(gè)實(shí)例的方框圖。
在圖4中,在一個(gè)實(shí)施例中,基于檔案流的安裝應(yīng)用程序106 (在此實(shí)施例中展示 為106A)包括重定向引擎142A、檔案114A、提取引擎140A和密鑰映射數(shù)據(jù)庫(kù)144A。 在一個(gè)實(shí)施例中,密鑰映射數(shù)據(jù)庫(kù)144A包括使檔案114A文件夾和/或文件對(duì)應(yīng)于最終文 件目的地(例如,文件目的地116A)的信息。更確切地說(shuō),在一個(gè)實(shí)施例中,密鑰映射 數(shù)據(jù)庫(kù)144A是具有名稱/值對(duì)的查找表。
11現(xiàn)在同時(shí)參看圖1、圖2、圖3和圖4,在一個(gè)實(shí)施例中,由處理器108執(zhí)行基于檔 案流的安裝應(yīng)用程序106導(dǎo)致如下所述的方法300的操作。本文中,對(duì)文件的參考也適 用于文件夾,因?yàn)闄n案可包括一個(gè)或一個(gè)以上文件夾(每一文件夾具有一個(gè)或一個(gè)以上 文件有效負(fù)載和/或子文件夾),且可包括各個(gè)文件。舉例來(lái)說(shuō),如圖4中所示,檔案114A 包括檔案文件夾402A、402B和402C,其每一者分別具有各自的文件有效負(fù)載404A、404B 和404C。在一個(gè)實(shí)施例中,檔案114A的檔案文件夾每一者包括一嵌入式密鑰,例如唯 一密鑰,其對(duì)應(yīng)于密鑰映射數(shù)據(jù)庫(kù)144A中的唯一密鑰條目。在一個(gè)實(shí)施例中,在"進(jìn)入" 操作302處進(jìn)入方法300,且處理從"進(jìn)入"操作302轉(zhuǎn)變到"登記回調(diào)"操作304。
在"登記回調(diào)"操作304中,重定向引擎142A向提取引擎140A登記一回調(diào)?;卣{(diào) 和回調(diào)的登記對(duì)于所屬領(lǐng)域的技術(shù)人員是眾所周知的,且在本文中不進(jìn)一步詳細(xì)描述以 免轉(zhuǎn)移對(duì)本發(fā)明的原理的注意。處理從"登記回調(diào)"操作304轉(zhuǎn)變到"啟動(dòng)提取過(guò)程" 操作306。
在"啟動(dòng)提取過(guò)程"操作306中,啟動(dòng)提取引擎140A的提取過(guò)程。在一個(gè)實(shí)施例中, 重定向引擎142A啟動(dòng)提取引擎140A的提取過(guò)程。提取引擎的啟動(dòng)對(duì)于所屬領(lǐng)域的技術(shù) 人員是眾所周知的,且在本文中不進(jìn)一步描述以免轉(zhuǎn)移對(duì)本發(fā)明的原理的注意。處理從 "啟動(dòng)提取過(guò)程"操作306轉(zhuǎn)變到"要提取的文件"檢查操作308。
在"要提取的文件"檢査操作308中,確定是否存在要從檔案114A提取的文件。更 確切地說(shuō),基于檔案流的安裝應(yīng)用程序106A的提取引擎140A存取檔案114A,且確定 是否存在要提取的文件。在確定不存在要從檔案114A提取的文件("否")時(shí),處理從"要 提取的文件"檢査操作308轉(zhuǎn)變到"退出"操作324,其中處理退出方法300?;蛘?,在 確定存在要提取的文件("是")時(shí),處理從"要提取的文件"檢查操作308轉(zhuǎn)變到"發(fā) 送回調(diào)"操作310。
在"發(fā)送回調(diào)"操作310中,提取引擎產(chǎn)生并發(fā)送回調(diào),其指示用于文件的檔案指 定的文件目的地。更確切地說(shuō),在一個(gè)實(shí)施例中,提取引擎140A產(chǎn)生回調(diào)并將其發(fā)送到 重定向引擎142A。
在一個(gè)實(shí)施例中,回調(diào)包括當(dāng)前檔案文件的檔案指定的路徑,其指示文件的目的地。 舉例來(lái)說(shuō),如果提取引擎140A確定將要提取檔案文件夾402A,則提取引擎140A產(chǎn)生 回調(diào)并將其發(fā)送到重定向引擎142A,所述回調(diào)包括檔案文件夾402A的檔案指定的文件 目的地。在一個(gè)實(shí)施例中,檔案指定的路徑是在檔案(例如,檔案U4A)中指定的路徑。 處理從"發(fā)送回調(diào)"操作310轉(zhuǎn)變到"査找密鑰映射路徑"操作312。在"查找密鑰映射路徑"操作312中,由重定向引擎142A接收回調(diào),且在密鑰映射 數(shù)據(jù)庫(kù)144A中查找用于檔案文件的密鑰映射路徑。舉例來(lái)說(shuō),在一個(gè)實(shí)施例中,在接收 到回調(diào)后,重定向引擎142A存取密鑰映射數(shù)據(jù)庫(kù)144A,并獲得對(duì)應(yīng)于檔案文件的識(shí)別 符(例如,唯一密鑰)的密鑰映射目的地。
如早先所描述,在一個(gè)實(shí)施例中,密鑰映射數(shù)據(jù)庫(kù)144A是具有名稱/值對(duì)的查找表。 在密鑰映射數(shù)據(jù)庫(kù)144A中查找檔案文件的名稱(例如,唯一密鑰\文件夾\文件.^1),且 對(duì)應(yīng)的值是密鑰映射指定的路徑,即最終目的地路徑。處理從"查找密鑰映射路徑"操 作312轉(zhuǎn)變到"重定向"檢査操作314。
在"重定向"檢查操作314中,確定是否應(yīng)將檔案文件從檔案指定的路徑目的地重 定向到密鑰映射路徑目的地。在一個(gè)實(shí)施例中,重定向引擎142A將回調(diào)中的檔案指定的 路徑與從密鑰映射數(shù)據(jù)庫(kù)144A獲得的密鑰映射路徑進(jìn)行比較。
如果對(duì)應(yīng)于檔案文件的密鑰映射路徑不同于檔案指定的路徑,則需要將文件重定向 到由密鑰映射路徑指定的最終目的地?;蛘?,如果對(duì)應(yīng)于檔案文件的密鑰映射路徑與檔 案指定的路徑相同,則不需要將文件重定向,因?yàn)樗雎窂阶R(shí)別相同的最終目的地。
在確定不應(yīng)將文件重定向("否")后,處理從"重定向"檢查操作314轉(zhuǎn)變到本文 中稍后進(jìn)一步描述的"發(fā)送回調(diào)返回"操作318。或者,在確定應(yīng)將文件重定向("是") 后,處理從"重定向"檢査操作314轉(zhuǎn)變到"修改文件目的地"操作316。
在"修改文件目的地"操作316中,使用在密鑰映射數(shù)據(jù)庫(kù)144A中查找到的密鑰映 射路徑來(lái)修改(例如,取代)檔案指定的路徑。更確切地說(shuō),重定向引擎142A產(chǎn)生一回 調(diào)返回,其包括密鑰映射指定的路徑,而不是檔案指定的路徑。處理從"修改文件目的 地"操作316轉(zhuǎn)變到"發(fā)送回調(diào)返回"操作318。
在"發(fā)送回調(diào)返回"操作318中,從重定向引擎142A將對(duì)回調(diào)的返回(本文稱為回 調(diào)返回)發(fā)送到提取引擎140A。在一個(gè)實(shí)施例中,在檔案指定的路徑未被取代的情況下, 例如在不需要重定向時(shí),回調(diào)返回包括檔案指定的路徑。
或者,在一個(gè)實(shí)施例中,在檔案指定的路徑在操作316中被取代的情況下,回調(diào)返 回包括密鑰映射路徑,而不是檔案指定的路徑。以此方式,現(xiàn)在向提取引擎140A提供用 于特定檔案文件的最終文件目的地。處理從"發(fā)送回調(diào)返回"操作318轉(zhuǎn)變到"打開文 件目的地"操作320。
在"打開文件目的地"操作320中,提取引擎140A打開回調(diào)返回中指定的文件目的 地位置。更確切地說(shuō),在一個(gè)實(shí)施例中,打開所述文件在主機(jī)計(jì)算機(jī)系統(tǒng)102上的最終
13目的地。舉例來(lái)說(shuō),在一個(gè)實(shí)施例中,提取引擎140A接收回調(diào)返回,且打開來(lái)自重定向 引擎142A的回調(diào)返回中所指定的文件目的地。
因此,在一個(gè)實(shí)施例中,在檔案指定的路徑未被取代的情況下,最終文件目的地是 由檔案指定的路徑指定的文件位置?;蛘?,在檔案指定的路徑在操作316中被取代的情 況下,最終文件目的地是由密鑰映射路徑指定的文件位置。處理從"打開文件目的地" 操作320轉(zhuǎn)變到"寫入文件"操作322。
在"寫入文件"操作322中,將檔案文件從檔案114A直接寫入到在操作320中打開 的文件目的地。更確切地說(shuō),在一個(gè)實(shí)施例中,提取引擎140A將文件(例如,檔案文件 夾402A)從檔案114A直接寫入到回調(diào)返回中所指定的最終文件目的地116A。以此方式, 將所述文件夾從檔案114A直接寫入到最終文件目的地(例如,文件目的地116A)。處理 從"寫入文件"操作322轉(zhuǎn)變并返回到"要提取的文件"檢查操作308,其中如早先所 描述確定是否存在要提取的文件(例如,下一文件),其中執(zhí)行操作308-322,直到不存 在其它要從檔案114A提取的文件為止。當(dāng)不存在其它要提取的文件("否")時(shí),處理從 "要提取的文件"檢査操作308轉(zhuǎn)變到"退出"操作324,其中處理退出方法300。
前面的實(shí)施例在提取過(guò)程期間利用回調(diào)掛鉤將文件直接重定向到目標(biāo)計(jì)算機(jī)系統(tǒng) (例如,主機(jī)計(jì)算機(jī)系統(tǒng)102)上的最終文件目的地。在另一實(shí)施例中,如本文中參考圖 5和圖6進(jìn)一步描述,在提取過(guò)程期間使用文件系統(tǒng)掛鉤將文件直接重定向到最終文件 目的地。
現(xiàn)在參看圖5,圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例利用文件系統(tǒng)掛鉤的用于一個(gè)或一 個(gè)以上軟件文件的基于檔案流的安裝方法500的流程圖。參考圖6來(lái)論述圖5,圖6是 根據(jù)本發(fā)明的一個(gè)實(shí)施例說(shuō)明使用圖5的方法中的文件系統(tǒng)掛鉤的一個(gè)實(shí)例的方框圖。
在圖6中,在一個(gè)實(shí)施例中,基于檔案流的安裝應(yīng)用程序106 (在此實(shí)施例中展示 為106B)包括重定向引擎H2B、檔案114B、提取引擎140B和密鑰映射數(shù)據(jù)庫(kù)144B。 在一個(gè)實(shí)施例中,密鑰映射數(shù)據(jù)庫(kù)144B包括使檔案U4B文件夾和/或文件對(duì)應(yīng)于最終文 件目的地(例如,文件目的地116B)的信息。更確切地說(shuō),在一個(gè)實(shí)施例中,密鑰映射 數(shù)據(jù)庫(kù)144B是具有名稱/值對(duì)的查找表。
現(xiàn)在同時(shí)參看圖1、圖2、圖5和圖6,在一個(gè)實(shí)施例中,由處理器108執(zhí)行基于檔 案流的安裝應(yīng)用程序106導(dǎo)致如下所述的方法500的操作。本文中,對(duì)文件的參考也適 用于文件夾,因?yàn)闄n案可包括一個(gè)或一個(gè)以上文件夾(每一文件夾具有一個(gè)或一個(gè)以上 文件有效負(fù)載和/或子文件夾),且可包括各個(gè)文件。舉例來(lái)說(shuō),如圖6中所示,檔案114B包括檔案文件夾602A、 602B和602C,其每 一者分別具有各自的文件有效負(fù)載604A、 604B和604C。在一個(gè)實(shí)施例中,檔案114B 的檔案文件夾每一者包括一嵌入式密鑰,例如唯一密鑰,其對(duì)應(yīng)于密鑰映射數(shù)據(jù)庫(kù)144B 中的唯一密鑰條目。在一個(gè)實(shí)施例中,在"進(jìn)入"操作502處進(jìn)入方法500,且處理從 "進(jìn)入"操作502轉(zhuǎn)變到"掛鉤文件系統(tǒng)"操作504。
在"掛鉤文件系統(tǒng)"操作504中,將文件系統(tǒng)掛鉤安裝在主機(jī)計(jì)算機(jī)系統(tǒng)102上。 更確切地說(shuō),在一個(gè)實(shí)施例中,重定向引擎142B將文件系統(tǒng)掛鉤安裝在主機(jī)計(jì)算機(jī)系統(tǒng) 102上。在一個(gè)實(shí)施例中,文件系統(tǒng)掛鉤攔截選定的文件系統(tǒng)事件,例如在由調(diào)用模塊 (例如,提取引擎140B)接收之前攔截來(lái)自主機(jī)計(jì)算機(jī)系統(tǒng)102的文件系統(tǒng)(未圖示) 的對(duì)調(diào)用的返回。
可使用多種文件系統(tǒng)掛鉤技術(shù)中的任一者(例如,通過(guò)將調(diào)用表(未圖示)掛鉤到 文件系統(tǒng))來(lái)實(shí)施文件系統(tǒng)掛鉤。文件系統(tǒng)掛鉤技術(shù)對(duì)于所屬領(lǐng)域的技術(shù)人員是眾所周 知的,且在本文中不進(jìn)一步描述以免轉(zhuǎn)移對(duì)本發(fā)明的原理的注意。處理從"掛鉤文件系 統(tǒng)"操作504轉(zhuǎn)變到"啟動(dòng)提取過(guò)程"操作506。
在"啟動(dòng)提取過(guò)程"操作506中,啟動(dòng)提取引擎140B的提取過(guò)程。在一個(gè)實(shí)施例中, 重定向引擎142B啟動(dòng)提取引擎140B的提取過(guò)程。提取引擎的啟動(dòng)對(duì)于所屬領(lǐng)域的技術(shù) 人員是眾所周知的,且在本文中不進(jìn)一步描述以免轉(zhuǎn)移對(duì)本發(fā)明的原理的注意。處理從 "啟動(dòng)提取過(guò)程"操作506轉(zhuǎn)變到"要提取的文件"檢查操作508。
在"要提取的文件"檢査操作508中,確定是否存在要從檔案114B提取的文件。更 確切地說(shuō),基于檔案流的安裝應(yīng)用程序106B的提取引擎140B存取檔案114B,且確定是 否存在要提取的文件。在確定不存在要從檔案114B提取的文件("否")后,處理從"要 提取的文件"檢査操作508轉(zhuǎn)變到"退出"操作526,其中處理退出方法500?;蛘撸?確定存在要提取的文件("是")后,處理從"要提取的文件"檢查操作508轉(zhuǎn)變到"調(diào) 用文件系統(tǒng)"操作510。
在"調(diào)用文件系統(tǒng)"操作510中,調(diào)用主機(jī)計(jì)算機(jī)系統(tǒng)102的文件系統(tǒng)(未圖示) 以打開要提取的文件的檔案指定的文件目的地。更確切地說(shuō),在一個(gè)實(shí)施例中,提取引 擎140B產(chǎn)生并發(fā)送對(duì)文件系統(tǒng)的調(diào)用以打開由要提取的文件的檔案指定的路徑識(shí)別的 文件位置。處理從"調(diào)用文件系統(tǒng)"操作510轉(zhuǎn)變到"停止對(duì)調(diào)用的返回"操作512。
在"停止對(duì)調(diào)用的返回"操作512中,停止對(duì)文件系統(tǒng)的調(diào)用。確切地說(shuō),在一個(gè) 實(shí)施例中,由文件系統(tǒng)上的掛鉤攔截從對(duì)文件系統(tǒng)的調(diào)用的返回,且將其重定向到重定
15向引擎142B,在重定向引擎142B處所述返回被接收且停止以用于進(jìn)一步處理。在一個(gè) 實(shí)施例中,對(duì)調(diào)用的返回包括具有調(diào)用中所請(qǐng)求的文件的文件位置的文件句柄。處理從 "停止對(duì)調(diào)用的返回"操作512轉(zhuǎn)變到"來(lái)自提取過(guò)程"檢査操作514。
在"來(lái)自提取過(guò)程"檢査操作514中,確定所停止的返回是否響應(yīng)于來(lái)自提取引擎 的調(diào)用。當(dāng)返回可響應(yīng)于除提取引擎140B之外的過(guò)程所產(chǎn)生的調(diào)用時(shí),進(jìn)行檢查以確定 所述返回是否與提取引擎140B相關(guān)聯(lián)。
舉例來(lái)說(shuō),在一個(gè)實(shí)施例中,可檢査返回的調(diào)用源參數(shù)以查看是否識(shí)別提取引擎 140B的路徑。如果識(shí)別提取引擎140B的路徑,則所述調(diào)用是來(lái)自提取過(guò)程;否則,所 述調(diào)用不是來(lái)自提取過(guò)程。在其它實(shí)施例中,可使用其它技術(shù)來(lái)確定返回是否來(lái)自提取 過(guò)程。
在確定文件不是來(lái)自提取過(guò)程("否")后,處理從"來(lái)自提取過(guò)程"檢查操作514 轉(zhuǎn)變到本文中稍后進(jìn)一步描述的"返回文件句柄"操作520?;蛘撸诖_定所停止的返 回是來(lái)自提取過(guò)程("是")后,處理從"來(lái)自提取過(guò)程"檢査操作514轉(zhuǎn)變到"重定向" 檢査操作516。
在"重定向"檢査操作516中,確定是否應(yīng)將文件從文件句柄中所識(shí)別的檔案指定 的路徑目的地重定向到密鑰映射路徑目的地。舉例來(lái)說(shuō),在一個(gè)實(shí)施例中,在接收到回 調(diào)后,重定向引擎142B存取密鑰映射數(shù)據(jù)庫(kù)144B,并獲得對(duì)應(yīng)于檔案文件的識(shí)別符(例 如,唯一密鑰)的密鑰映射目的地。
如早先所描述,在一個(gè)實(shí)施例中,密鑰映射數(shù)據(jù)庫(kù)144B是具有名稱/值對(duì)的査找表。 在密鑰映射數(shù)據(jù)庫(kù)144B中査找檔案文件的名稱(例如,唯一密鑰X文件夾X文件.ext),且 對(duì)應(yīng)的值是密鑰映射指定的路徑,即最終目的地路徑。在一個(gè)實(shí)施例中,重定向引擎142B 將所返回的文件句柄中的檔案指定的路徑與從密鑰映射數(shù)據(jù)庫(kù)144B獲得的密鑰映射路 徑進(jìn)行比較。
如果對(duì)應(yīng)于檔案文件的密鑰映射路徑不同于文件句柄中的檔案指定的路徑,則需要 將文件重定向到由密鑰映射路徑指定的最終目的地。或者,如果對(duì)應(yīng)于檔案文件的密鑰 映射路徑與檔案指定的路徑相同,則不需要將文件重定向,因?yàn)樗雎窂阶R(shí)別相同的最 終文件目的地。
在確定不應(yīng)將文件重定向("否")后,處理從"重定向"檢查操作516轉(zhuǎn)變到本文 中稍后進(jìn)一步描述的"返回文件句柄"操作520?;蛘?,在確定應(yīng)將文件重定向("是") 后,處理從"重定向"檢查操作516轉(zhuǎn)變到"修改文件目的地"操作518。
16在"修改文件目的地"操作518中,使用密鑰映射路徑目的地來(lái)修改(例如,取代) 所停止的文件句柄中所指定的文件目的地。處理從"修改文件目的地"操作518轉(zhuǎn)變到 "返回文件句柄"操作520。
在"返回文件句柄"操作520中,將操作518中所修改的文件句柄返回給調(diào)用程序。 因此,在一個(gè)實(shí)施例中,當(dāng)調(diào)用程序是提取引擎140B時(shí),將文件句柄返回給提取引擎 140B。在調(diào)用程序不是來(lái)自提取過(guò)程的例子中,將文件句柄不加修改地返回給調(diào)用程序。 處理從"返回文件句柄"操作520轉(zhuǎn)變到"打開文件目的地"操作522。
在"打開文件目的地"操作522中,提取引擎140B打開所返回的文件句柄中指定的 文件目的地位置。更確切地說(shuō),在一個(gè)實(shí)施例中,打開文件在主機(jī)計(jì)算機(jī)系統(tǒng)102上的 最終目的地。
舉例來(lái)說(shuō),在一個(gè)實(shí)施例中,提取引擎140B接收所返回的文件句柄,且打開來(lái)自重 定向引擎142B的文件句柄中指定的文件目的地。在一個(gè)實(shí)施例中,在文件句柄被修改為 密鑰映射目的地的情況下,由提取引擎140B在文件系統(tǒng)中打開密鑰映射數(shù)據(jù)庫(kù)中指定的 密鑰映射路徑目的地。處理從"打開文件目的地"操作522轉(zhuǎn)變到"寫入文件"操作524。
在"寫入文件"操作524中,將檔案文件從檔案114B直接寫入到在操作522中打開 的文件目的地。更確切地說(shuō),在一個(gè)實(shí)施例中,提取引擎140B將文件(例如,檔案文件 夾602A)從檔案114B直接寫入到所返回的文件句柄中指定的最終文件目的地116B。以 此方式,將所述文件夾從檔案114B直接寫入到最終文件目的地(例如,文件目的地116B)。 處理從"寫入文件"操作524轉(zhuǎn)變并返回到"要提取的文件"檢查操作508,其中如早 先所描述確定是否存在要提取的文件(例如,下一文件),其中執(zhí)行操作508-524,直到 不存在其它要從檔案114B提取的文件為止。當(dāng)不存在其它要提取的文件("否")時(shí),處 理從"要提取的文件"檢査操作508轉(zhuǎn)變到"退出"操作526,其中處理退出方法500。
在上述實(shí)施例中,使用回調(diào)掛鉤(方法300)和文件系統(tǒng)掛鉤(方法500)來(lái)掛鉤提 取引擎的提取過(guò)程。在另一實(shí)施例中,描述一種經(jīng)配置以實(shí)施基于檔案流的安裝方法的 新的檔案提取引擎,其如本文中參考圖7和圖8進(jìn)一步描述。
現(xiàn)在參看圖7,圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例包括在主機(jī)計(jì)算機(jī)系統(tǒng)702上執(zhí)行 的基于檔案流的安裝提取引擎706的計(jì)算機(jī)系統(tǒng)700的圖。在一個(gè)實(shí)施例中,基于檔案 流的安裝提取引擎706包括檔案714和密鑰映射數(shù)據(jù)庫(kù)740。
在一個(gè)實(shí)施例中,檔案714包括要安裝在目標(biāo)計(jì)算機(jī)系統(tǒng)(例如,主機(jī)計(jì)算機(jī)系統(tǒng) 702)上的一個(gè)或一個(gè)以上文件和/或文件文件夾。在一個(gè)實(shí)施例中,檔案714是經(jīng)加密的檔案,其中通過(guò)密鑰識(shí)別符來(lái)識(shí)別要提取的每一文件夾。在一個(gè)實(shí)施例中,密鑰映射 數(shù)據(jù)庫(kù)740是包括對(duì)應(yīng)于檔案714中的文件的最終目的地信息在內(nèi)的信息的數(shù)據(jù)庫(kù)。在 一個(gè)實(shí)施例中,密鑰映射數(shù)據(jù)庫(kù)740包括若干條目,所述條目包括密鑰識(shí)別符和對(duì)應(yīng)的 最終目的地路徑,例如,最終目的地位置。在一個(gè)實(shí)施例中,例如經(jīng)由I/O裝置724將 基于檔案流的提取引擎706加載到主機(jī)計(jì)算機(jī)系統(tǒng)702上。
圖8說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例由圖7的基于檔案流的安裝提取引擎706實(shí)施的 用于一個(gè)或一個(gè)以上軟件文件的基于檔案流的安裝方法800的流程圖?,F(xiàn)在同時(shí)參看圖 7和圖8,在一個(gè)實(shí)施例中,由處理器108執(zhí)行基于檔案流的提取引擎706的方法800導(dǎo) 致如下所述的方法800的操作。在一個(gè)實(shí)施例中,在"進(jìn)入"操作802處進(jìn)入方法800, 且處理從"進(jìn)入"操作802轉(zhuǎn)變到"啟動(dòng)基于檔案流的提取引擎"操作804。
在"啟動(dòng)基于檔案流的提取引擎"操作804中,在主機(jī)計(jì)算機(jī)系統(tǒng)702上啟動(dòng)檔案 提取引擎706。處理從"啟動(dòng)基于檔案流的提取引擎"操作804轉(zhuǎn)變到"設(shè)置重定向路 徑"操作806。
在"設(shè)置重定向路徑"操作806中,基于檔案流的提取引擎706存取密鑰映射數(shù)據(jù) 庫(kù)740,查找將要安裝的每一檔案文件的對(duì)應(yīng)重定向路徑,且設(shè)置每一檔案文件的對(duì)應(yīng) 重定向路徑。
因此,不是像早先參考方法300和500所描述的那樣通過(guò)回調(diào)掛鉤或文件系統(tǒng)掛鉤 來(lái)掛鉤提取引擎過(guò)程并査找提取引擎的重定向路徑,而是基于檔案流的提取引擎706自 身存取密鑰映射數(shù)據(jù)庫(kù)740、査找重定向路徑,并設(shè)置每一檔案文件的重定向路徑。處 理從"設(shè)置重定向路徑"操作806轉(zhuǎn)變到"啟動(dòng)提取過(guò)程"操作808。
在"啟動(dòng)提取過(guò)程"操作808中,基于檔案流的提取引擎706啟動(dòng)提取過(guò)程。處理 從"啟動(dòng)提取過(guò)程"操作808轉(zhuǎn)變到"要提取的文件"檢査操作810。
在"要提取的文件"檢查操作810中,確定是否存在要從檔案714提取的文件。更 確切地說(shuō),基于檔案流的提取引擎706存取檔案714,且確定是否存在要提取的文件。 在確定不存在要從檔案714提取的文件("否")后,處理從"要提取的文件"檢査操作 810轉(zhuǎn)變到"退出"操作822,其中處理退出方法800?;蛘?,在確定存在要提取的文件 ("是")后,處理從"要提取的文件"檢查操作810轉(zhuǎn)變到"獲得檔案路徑"操作812。
在"獲得檔案路徑"操作812中,基于檔案流的提取引擎706存取要從檔案714提 取的文件的檔案指定的路徑,例如,唯一密鑰Vt件夾X文件.ext。處理從"獲得檔案路徑" 操作812轉(zhuǎn)變到"重定向"檢査操作814。
18在"重定向"檢查操作814中,基于檔案流的提取引擎706將檔案指定的路徑與從 密鑰映射數(shù)據(jù)庫(kù)740獲得的密鑰映射路徑進(jìn)行比較。如果對(duì)應(yīng)于檔案文件的密鑰映射路 徑不同于檔案指定的路徑,則需要將文件重定向到由密鑰映射路徑指定的最終目的地。
或者,如果對(duì)應(yīng)于檔案文件的密鑰映射路徑與檔案指定的路徑相同,則不需要將文 件重定向,因?yàn)樗雎窂阶R(shí)別相同的最終目的地。在確定不應(yīng)將文件重定向("否")后, 處理從"重定向"檢查操作814轉(zhuǎn)變到本文中稍后進(jìn)一步描述的"打開文件目的地"操 作818?;蛘?,在確定應(yīng)將文件重定向("是")后,處理從"重定向"檢查操作814轉(zhuǎn) 變到"修改文件目的地"操作816。
在"修改文件目的地"操作816中,使用密鑰映射路徑(即,重定向路徑)來(lái)修改 (例如,取代)檔案指定的路徑。處理從"修改文件目的地"操作816轉(zhuǎn)變到"打開文件 目的地"操作818。
在"打開文件目的地"操作818中,打開最終文件目的地位置。更確切地說(shuō),在一 個(gè)實(shí)施例中,在主機(jī)計(jì)算機(jī)系統(tǒng)702上打開檔案文件的最終文件目的地。舉例來(lái)說(shuō),在 一個(gè)實(shí)施例中,檔案提取引擎706打開文件目的地。
因此,在一個(gè)實(shí)施例中,在檔案指定的路徑未被取代的情況下,最終文件目的地是 由檔案指定的路徑指定的文件位置。或者,在檔案指定的路徑在操作816中被取代的情 況下,最終文件目的地是由重定向路徑指定的文件位置。處理從"打開文件目的地"操 作818轉(zhuǎn)變到"寫入文件"操作820。
在"寫入文件"操作820中,將檔案文件從檔案714直接寫入到在操作818中打開 的最終文件目的地。更確切地說(shuō),在一個(gè)實(shí)施例中,基于檔案流的提取引擎706將文件 從檔案714直接寫入到在操作818中打開的最終文件目的地716。處理從"寫入文件" 操作820轉(zhuǎn)變并返回到"要提取的文件"檢查操作810,其中如早先所描述確定檔案714 中是否存在要提取的文件(例如,下一文件),其中執(zhí)行操作810-820,直到不存在其它 要從檔案714提取的文件為止。當(dāng)不存在其它要提取的文件("否")時(shí),處理從"要提 取的文件"檢查操作810轉(zhuǎn)變到"退出"操作822,其中處理退出方法800。
現(xiàn)在再次參看圖1,在本發(fā)明的一個(gè)實(shí)施例中,基于檔案流的安裝應(yīng)用程序106是 在存儲(chǔ)器112中。本文中使用的計(jì)算機(jī)存儲(chǔ)器是指易失性存儲(chǔ)器、非易失性存儲(chǔ)器或所 述兩者的組合。
雖然將基于檔案流的安裝應(yīng)用程序106稱作應(yīng)用程序,但這僅是說(shuō)明性的?;跈n 案流的安裝應(yīng)用程序106應(yīng)能夠從應(yīng)用程序或操作系統(tǒng)調(diào)用。在一個(gè)實(shí)施例中,應(yīng)用程
19序一般被界定為任何可執(zhí)行代碼。而且,所屬領(lǐng)域的技術(shù)人員將理解,當(dāng)提到應(yīng)用程序 或操作采取某一動(dòng)作時(shí),所述動(dòng)作是由處理器執(zhí)行一個(gè)或一個(gè)以上指令的結(jié)果。
可使用任何合適的硬件配置或構(gòu)件來(lái)實(shí)行根據(jù)本發(fā)明的實(shí)施例,所述硬件配置或構(gòu) 件涉及個(gè)人計(jì)算機(jī)、工作站、便攜式裝置或計(jì)算機(jī)裝置的網(wǎng)絡(luò)。在其它實(shí)施例中使用除 客戶端-服務(wù)器配置之外的其它網(wǎng)絡(luò)配置,例如對(duì)等的、基于網(wǎng)絡(luò)的、內(nèi)聯(lián)網(wǎng)、因特網(wǎng)網(wǎng) 絡(luò)配置。
本文中,計(jì)算機(jī)程序產(chǎn)品包含經(jīng)配置以存儲(chǔ)或傳送根據(jù)本發(fā)明的一實(shí)施例的計(jì)算機(jī) 可讀代碼的媒體。計(jì)算機(jī)程序產(chǎn)品的一些實(shí)例是CD-ROM盤、DVD、 ROM卡、軟盤、 磁帶、計(jì)算機(jī)硬盤驅(qū)動(dòng)器、網(wǎng)絡(luò)上的服務(wù)器和經(jīng)由網(wǎng)絡(luò)傳輸?shù)谋硎居?jì)算機(jī)可讀代碼的信 號(hào)。在另一實(shí)施例中,計(jì)算機(jī)程序產(chǎn)品包含經(jīng)配置以存儲(chǔ)計(jì)算機(jī)可讀代碼的有形存儲(chǔ)媒 體,包括CD-ROM盤、DVD、 ROM卡、軟盤、磁帶、計(jì)算機(jī)硬盤驅(qū)動(dòng)器和網(wǎng)絡(luò)上的服 務(wù)器。
如圖1中所說(shuō)明,此媒體本身可屬于計(jì)算機(jī)系統(tǒng)。然而,也可從計(jì)算機(jī)系統(tǒng)中移除 所述媒體。舉例來(lái)說(shuō),基于檔案流的安裝應(yīng)用程序106可存儲(chǔ)在物理上位于與處理器108 不同的位置中的存儲(chǔ)器132中。處理器108應(yīng)耦合到存儲(chǔ)器132。此可在客戶端-服務(wù)器 系統(tǒng)中或替代地經(jīng)由與另一計(jì)算機(jī)的連接(經(jīng)由調(diào)制解調(diào)器和模擬線,或數(shù)字接口和數(shù) 字載波線)而實(shí)現(xiàn)。
更具體來(lái)說(shuō),在一個(gè)實(shí)施例中,主機(jī)計(jì)算機(jī)系統(tǒng)102和/或服務(wù)器計(jì)算機(jī)系統(tǒng)130是 便攜式計(jì)算機(jī)、工作站、雙向?qū)ず魴C(jī)、蜂窩式電話、數(shù)字無(wú)線電話、個(gè)人數(shù)字助理、服 務(wù)器計(jì)算機(jī)、因特網(wǎng)器具,或任何其它包括可執(zhí)行根據(jù)如本文中所描述的實(shí)施例中的至 少一者的基于檔案流的安裝應(yīng)用程序106的功能性的組件的裝置。類似地,在另一實(shí)施 例中,主機(jī)計(jì)算機(jī)系統(tǒng)102和/或服務(wù)器計(jì)算機(jī)系統(tǒng)130由多個(gè)不同計(jì)算機(jī)、無(wú)線裝置、 蜂窩式電話、數(shù)字電話、雙向?qū)ず魴C(jī),或個(gè)人數(shù)字助理、服務(wù)器計(jì)算機(jī),或這些裝置的 經(jīng)互連以執(zhí)行如本文中所描述的方法的任何所要組合所組成。
鑒于本揭示內(nèi)容,可以多種多樣的計(jì)算機(jī)系統(tǒng)配置來(lái)實(shí)施根據(jù)本發(fā)明的一個(gè)實(shí)施例 的基于檔案流的安裝應(yīng)用程序106的功能性。另外,基于檔案流的安裝應(yīng)用程序106的 功能性可作為不同模塊存儲(chǔ)在不同裝置的存儲(chǔ)器中。
舉例來(lái)說(shuō),基于檔案流的安裝應(yīng)用程序106可起初存儲(chǔ)在服務(wù)器計(jì)算機(jī)系統(tǒng)130中, 且接著在必要時(shí),可將基于檔案流的安裝應(yīng)用程序106的一部分轉(zhuǎn)移到主機(jī)計(jì)算機(jī)系統(tǒng) 102并在主機(jī)計(jì)算機(jī)系統(tǒng)102上執(zhí)行。隨后,將在服務(wù)器計(jì)算機(jī)系統(tǒng)130的處理器134上執(zhí)行基于檔案流的安裝應(yīng)用程序106的功能性的一部分,且將在主機(jī)計(jì)算機(jī)系統(tǒng)102 的處理器108上執(zhí)行另一部分。鑒于本發(fā)明,所屬領(lǐng)域的技術(shù)人員可使用用戶感興趣的 操作系統(tǒng)和計(jì)算機(jī)編程語(yǔ)言以多種多樣的物理硬件配置來(lái)實(shí)施本發(fā)明的各種實(shí)施例。
在又一實(shí)施例中,基于檔案流的安裝應(yīng)用程序106存儲(chǔ)在服務(wù)器計(jì)算機(jī)系統(tǒng)130的 存儲(chǔ)器132中。經(jīng)由網(wǎng)絡(luò)128將基于檔案流的安裝應(yīng)用程序106轉(zhuǎn)移到主機(jī)計(jì)算機(jī)系統(tǒng) 102中的存儲(chǔ)器112。在此實(shí)施例中,網(wǎng)絡(luò)接口 136和I/0接口 110將包括模擬調(diào)制解調(diào) 器、數(shù)字調(diào)制解調(diào)器或網(wǎng)絡(luò)接口卡。如果使用調(diào)制解調(diào)器,則網(wǎng)絡(luò)128包括通信網(wǎng)絡(luò), 且經(jīng)由通信網(wǎng)絡(luò)來(lái)下載基于檔案流的安裝應(yīng)用程序106。
本揭示內(nèi)容提供本發(fā)明的示范性實(shí)施例。本發(fā)明的范圍不受這些示范性實(shí)施例限制。 鑒于本揭示內(nèi)容,所屬領(lǐng)域的技術(shù)人員可實(shí)施許多變更,無(wú)論其是由說(shuō)明書明確提供的 變更還是由說(shuō)明書暗示的變更。
權(quán)利要求
1.一種計(jì)算機(jī)實(shí)施的方法,其包含啟動(dòng)提取過(guò)程;以及將至少一個(gè)文件從檔案直接提取到計(jì)算機(jī)系統(tǒng)上的一個(gè)或一個(gè)以上最終文件目的地。
2. 根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)施的方法,其中所述將至少一個(gè)文件從檔案直接提 取到計(jì)算機(jī)系統(tǒng)上的一個(gè)或一個(gè)以上最終文件目的地包含向提取引擎登記回調(diào);啟動(dòng)所述提取引擎,所述啟動(dòng)致使所述提取引擎獲得來(lái)自所述檔案的所述至少一 個(gè)文件的檔案指定的文件目的地,并產(chǎn)生和發(fā)送回調(diào);從所述提取引擎接收所述回調(diào),所述回調(diào)包括所述至少一個(gè)文件的檔案指定的文 件目的地;在密鑰映射數(shù)據(jù)庫(kù)中查找與所述至少一個(gè)文件相關(guān)聯(lián)的密鑰映射指定的文件目 的地;基于所述檔案指定的文件目的地是否與所述密鑰映射指定的文件目的地匹配來(lái) 確定是否將把所述至少一個(gè)文件從所述檔案指定的文件目的地重定向到所述密鑰 映射指定的文件目的地其中在確定將把所述至少一個(gè)文件重定向后,產(chǎn)生被修改的回調(diào)返回,所述被修 改的回調(diào)返回包括所述密鑰映射指定的文件目的地;且將所述被修改的回調(diào)返回發(fā)送到所述提取引擎,其中響應(yīng)于接收到所述被修改的 回調(diào)返回,所述提取引擎打開計(jì)算機(jī)系統(tǒng)上的處于所述密鑰映射指定的文件目的地 處的位置,且將所述至少一個(gè)文件從所述檔案直接寫入到處于所述密鑰映射指定的文件目的 地處的所述位置。
3. 根據(jù)權(quán)利要求2所述的計(jì)算機(jī)實(shí)施的方法,其中在確定將不把所述至少一個(gè)文件重 定向后,產(chǎn)生回調(diào)返回,所述回調(diào)返回包括所述檔案指定的文件目的地;且將所述回調(diào)返回發(fā)送到所述提取引擎,其中響應(yīng)于接收到所述回調(diào)返回,所述提 取引擎打開所述計(jì)算機(jī)系統(tǒng)上的處于所述檔案指定的文件目的地處的位置,且將所述至少一個(gè)文件從所述檔案直接寫入到處于所述檔案指定的文件目的地處 的所述位置。
4. 根據(jù)權(quán)利要求2所述的計(jì)算機(jī)實(shí)施的方法,其進(jìn)一步包含-確定是否存在將要由所述提取引擎從所述檔案提取的所述至少一個(gè)文件;且 其中在確定存在將要提取的所述至少一個(gè)文件后,所述提取引擎產(chǎn)生所述回調(diào),且發(fā)送所述回調(diào)。
5. 根據(jù)權(quán)利要求4所述的計(jì)算機(jī)實(shí)施的方法,其中在確定不存在將要提取的所述至少 一個(gè)文件后,退出所述計(jì)算機(jī)實(shí)施的方法。
6. 根據(jù)權(quán)利要求2所述的計(jì)算機(jī)實(shí)施的方法,其中所述至少一個(gè)文件位于所述檔案的 具有唯一密鑰識(shí)別符的文件夾中,且進(jìn)一步其中所述密鑰映射數(shù)據(jù)庫(kù)包括一個(gè)或一 個(gè)以上條目,所述一個(gè)或一個(gè)以上條目中的每一者基于至少一唯一密鑰識(shí)別符將檔 案指定的文件目的地與密鑰映射指定的文件目的地相關(guān)聯(lián)。
7. 根據(jù)權(quán)利要求l所述的計(jì)算機(jī)實(shí)施的方法,其中所述將所述至少一個(gè)文件從檔案直 接提取到目標(biāo)計(jì)算機(jī)系統(tǒng)上的一個(gè)或一個(gè)以上最終文件目的地包含將文件系統(tǒng)掛鉤安裝在計(jì)算機(jī)系統(tǒng)上,所述文件系統(tǒng)掛鉤用于攔截并停止所述計(jì) 算機(jī)系統(tǒng)上的一個(gè)或一個(gè)以上文件系統(tǒng)事件;啟動(dòng)提取引擎,所述啟動(dòng)起始由所述提取引擎從檔案提取所述至少一個(gè)文件,所述提取引擎產(chǎn)生對(duì)文件系統(tǒng)的調(diào)用以打開與所述文件相關(guān)聯(lián)的檔案指定的文件目 的地處的位置;接收由所述文件系統(tǒng)掛鉤攔截的文件系統(tǒng)事件,所述文件系統(tǒng)事件包括識(shí)別所述 檔案指定的文件目的地的文件句柄; 停止所述文件系統(tǒng)事件;確定所述文件系統(tǒng)事件是否與所述提取引擎相關(guān)聯(lián);其中在確定所述文件系統(tǒng)事件與所述提取引擎相關(guān)聯(lián)后,確定是否將把所述至少 一個(gè)文件從所述檔案指定的文件目的地重定向到密鑰映射指定的文件目的地;其中在確定將把所述至少一個(gè)文件重定向后,產(chǎn)生被修改的文件句柄,所述被修 改的文件句柄包括所述密鑰映射指定的文件目的地且將所述被修改的文件句柄返回給所述提取引擎,其中響應(yīng)于接收到所述被修改的 文件句柄,所述提取引擎打開所述計(jì)算機(jī)系統(tǒng)上的處于所述密鑰映射指定的文件目 的地處的位置,且將所述至少一個(gè)文件從所述檔案直接寫入到處于所述密鑰映射指定的文件目的地處的所述位置。
8. 根據(jù)權(quán)利要求7所述的計(jì)算機(jī)實(shí)施的方法,其中在確定將不把所述至少一個(gè)文件重 定向后,將包括所述檔案指定的文件目的地的所述文件句柄返回給所述提取引擎, 其中響應(yīng)于接收到所述文件句柄,所述提取引擎打開處于所述檔案指定的文件目的 地處的位置,且將所述至少一個(gè)文件從所述檔案直接寫入到處于所述檔案指定的文件目的地處 的所述位置。
9. 根據(jù)權(quán)利要求7所述的計(jì)算機(jī)實(shí)施的方法,其中所述確定是否將把所述至少一個(gè)文 件從所述檔案指定的文件目的地重定向到密鑰映射指定的文件目的地包含在密鑰映射數(shù)據(jù)庫(kù)中查找與所述至少一個(gè)文件相關(guān)聯(lián)的密鑰映射指定的文件目 的地;以及基于所述檔案指定的文件目的地是否與所述密鑰映射指定的文件目的地匹配來(lái) 確定是否將把所述至少一個(gè)文件從所述檔案指定的文件目的地重定向到所述密鑰 映射指定的文件目的地。
10. 根據(jù)權(quán)利要求7所述的計(jì)算機(jī)實(shí)施的方法,其中所述至少一個(gè)文件位于所述檔案的 具有唯一密鑰識(shí)別符的文件夾中,且進(jìn)一步其中所述密鑰映射數(shù)據(jù)庫(kù)包括一個(gè)或一 個(gè)以上條目,所述一個(gè)或一個(gè)以上條目中的每一者基于至少一唯一密鑰識(shí)別符將檔 案指定的文件目的地與密鑰映射指定的文件目的地相關(guān)聯(lián)。
11. 一種包含存儲(chǔ)計(jì)算機(jī)程序代碼的有形計(jì)算機(jī)可讀存儲(chǔ)媒體的計(jì)算機(jī)程序產(chǎn)品,其包 含基于檔案流的安裝應(yīng)用程序,其用于在正將檔案直接提取到文件系統(tǒng)中的一個(gè)或 一個(gè)以上最終文件位置時(shí)從所述檔案直接串流至少一個(gè)文件,所述基于檔案流的安 裝應(yīng)用程序包含用于從檔案提取所述至少一個(gè)文件且用于將所述至少一個(gè)文件直接寫入到所述文件系統(tǒng)中的所述一個(gè)或一個(gè)以上最終文件位置的構(gòu)件;以及用于將所述至少一個(gè)文件從檔案指定的文件目的地重定向到密鑰映射指定的文件目的地的構(gòu)件;以及從將所述檔案指定的文件目的地與所述密鑰映射指定的文件目的地相關(guān)聯(lián)的 構(gòu)件。
12. 根據(jù)權(quán)利要求ll所述的計(jì)算機(jī)程序產(chǎn)品,其進(jìn)一步包含檔案,所述檔案包括用于安裝在所述計(jì)算機(jī)系統(tǒng)上的所述至少一個(gè)文件。
13. —種包含存儲(chǔ)用于一方法的計(jì)算機(jī)程序代碼的計(jì)算機(jī)可讀媒體的計(jì)算機(jī)程序產(chǎn)品, 所述方法包含啟動(dòng)提取過(guò)程;以及將至少一個(gè)文件從檔案直接提取到計(jì)算機(jī)系統(tǒng)上的一個(gè)或一個(gè)以上最終文件目 的地。
14. 根據(jù)權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其中在所述方法中,所述將所述至少一 個(gè)文件從檔案直接提取到計(jì)算機(jī)系統(tǒng)上的一個(gè)或一個(gè)以上最終文件目的地包含向提取引擎登記回調(diào)啟動(dòng)所述提取引擎,所述啟動(dòng)致使所述提取引擎獲得來(lái)自所述檔案的所述至少一 個(gè)文件的檔案指定的文件目的地,并產(chǎn)生和發(fā)送回調(diào);從所述提取引擎接收所述回調(diào),所述回調(diào)包括所述至少一個(gè)文件的檔案指定的文 件目的地;在密鑰映射數(shù)據(jù)庫(kù)中查找與所述至少一個(gè)文件相關(guān)聯(lián)的密鑰映射指定的文件目 的地;基于所述檔案指定的文件目的地是否與所述密鑰映射指定的文件目的地匹配來(lái) 確定是否將把所述至少一個(gè)文件從所述檔案指定的文件目的地重定向到所述密鑰 映射指定的文件目的地;其中在確定將把所述至少一個(gè)文件重定向后,產(chǎn)生被修改的回調(diào)返回,所述被修 改的回調(diào)返回包括所述密鑰映射指定的文件目的地;且將所述被修改的回調(diào)返回發(fā)送到所述提取引擎,其中響應(yīng)于接收到所述被修改的 回調(diào)返回,所述提取引擎打開計(jì)算機(jī)系統(tǒng)上的處于所述密鑰映射指定的文件目的地 處的位置,且將所述至少一個(gè)文件從所述檔案直接寫入到處于所述密鑰映射指定的文件目的 地處的所述位置。
15. 根據(jù)權(quán)利要求14所述的計(jì)算機(jī)程序產(chǎn)品,其中所述至少一個(gè)文件位于所述檔案的 具有唯一密鑰識(shí)別符的文件夾中,且進(jìn)一步其中所述密鑰映射數(shù)據(jù)庫(kù)包括一個(gè)或一 個(gè)以上條目,所述一個(gè)或一個(gè)以上條目中的每一者基于至少一唯一密鑰識(shí)別符將檔 案指定的文件目的地與密鑰映射指定的文件目的地相關(guān)聯(lián)。
16. 根據(jù)權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其中在所述方法中,所述將所述至少一個(gè)文件從檔案直接提取到計(jì)算機(jī)系統(tǒng)上的一個(gè)或一個(gè)以上最終文件目的地包含將文件系統(tǒng)掛鉤安裝在計(jì)算機(jī)系統(tǒng)上,所述文件系統(tǒng)掛鉤用于攔截并停止所述計(jì) 算機(jī)系統(tǒng)上的一個(gè)或一個(gè)以上文件系統(tǒng)事件;啟動(dòng)提取引擎,所述啟動(dòng)起始由所述提取引擎從檔案提取所述至少一個(gè)文件,所 述提取引擎產(chǎn)生對(duì)文件系統(tǒng)的調(diào)用以打開與所述至少一個(gè)文件相關(guān)聯(lián)的檔案指定 的文件目的地處的位置;接收由所述文件系統(tǒng)掛鉤攔截的文件系統(tǒng)事件,所述文件系統(tǒng)事件包括識(shí)別所述 檔案指定的文件目的地的文件句柄;停止所述文件系統(tǒng)事件;確定所述文件系統(tǒng)事件是否與所述提取引擎相關(guān)聯(lián);其中在確定所述文件系統(tǒng)事件與所述提取引擎相關(guān)聯(lián)后,確定是否將把所述至少 一個(gè)文件從所述檔案指定的文件目的地重定向到密鑰映射指定的文件目的地;其中在確定將把所述至少一個(gè)文件重定向后,產(chǎn)生被修改的文件句柄,所述被修 改的文件句柄包括所述密鑰映射指定的文件目的地;且將所述被修改的文件句柄返回給所述提取引擎,其中響應(yīng)于接收到所述被修改的 文件句柄,所述提取引擎打開所述計(jì)算機(jī)系統(tǒng)上的處于所述密鑰映射指定的文件目 的地處的位置,且將所述至少一個(gè)文件從所述檔案直接寫入到處于所述密鑰映射指定的文件目的 地處的所述位置。
17. 根據(jù)權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其中所述至少一個(gè)文件位于所述檔案的 具有唯一密鑰識(shí)別符的文件夾中,且進(jìn)一步其中所述密鑰映射數(shù)據(jù)庫(kù)包括一個(gè)或一 個(gè)以上條目,所述一個(gè)或一個(gè)以上條目中的每一者基于至少一唯一密鑰識(shí)別符將檔 案指定的文件目的地與密鑰映射指定的文件目的地相關(guān)聯(lián)。
18. —種基于檔案流的提取引擎,其包含用于從檔案提取至少一個(gè)文件的構(gòu)件;以及用于將所述至少一個(gè)文件從所述檔案直接寫入到計(jì)算機(jī)系統(tǒng)中的一個(gè)或一個(gè)以 上最終文件位置的構(gòu)件。
19. 根據(jù)權(quán)利要求18所述的基于檔案流的提取引擎,其進(jìn)一步包含-用于將所述至少一個(gè)文件在所述檔案中的檔案指定的文件目的地與密鑰映射指 定的文件目的地相關(guān)聯(lián)的構(gòu)件,所述密鑰映射指定的文件目的地指示所述至少一個(gè)文件在所述計(jì)算機(jī)系統(tǒng)上的最終文件目的地。
20.根據(jù)權(quán)利要求18所述的基于檔案流的提取引擎,其中所述至少一個(gè)文件位于所述 檔案的具有唯一密鑰識(shí)別符的文件夾中,且進(jìn)一步其中所述密鑰映射數(shù)據(jù)庫(kù)包括一個(gè)或一個(gè)以上條目,所述一個(gè)或一個(gè)以上條目中的每一者基于至少一唯一密鑰識(shí)別 符將檔案指定的文件目的地與密鑰映射指定的文件目的地相關(guān)聯(lián)。
全文摘要
本發(fā)明涉及一種基于檔案流的安裝。在正將檔案直接提取到計(jì)算機(jī)系統(tǒng)上的一個(gè)或一個(gè)以上最終目的地位置時(shí)從所述檔案串流將要安裝在所述計(jì)算機(jī)系統(tǒng)上的文件。
文檔編號(hào)G06F9/445GK101576827SQ20091012932
公開日2009年11月11日 申請(qǐng)日期2009年3月20日 優(yōu)先權(quán)日2008年3月21日
發(fā)明者喬治·施塔爾, 布賴恩·鮑威爾, 彼得·維爾容, 科林·戴維斯 申請(qǐng)人:賽門鐵克公司