專利名稱:基于目錄的軟件組件管理的制作方法
基于目錄的軟件組件管理
背景技術(shù):
計(jì)算機(jī)一般運(yùn)行操作系統(tǒng),該系統(tǒng)提供包括允許其他應(yīng)用在計(jì)算機(jī)上安裝和運(yùn)行的功能在內(nèi)的各種功能。不同應(yīng)用經(jīng)??梢园惭b在計(jì)算機(jī)上并以不同方式運(yùn)行,導(dǎo)致各種文件和信息存儲(chǔ)入該計(jì)算機(jī)上的多個(gè)位置、文件夾等中。相應(yīng)地,比如在試圖將應(yīng)用升級(jí)到新版本時(shí),在卸載一個(gè)應(yīng)用時(shí)等,管理計(jì)算機(jī)上這些不同應(yīng)用會(huì)產(chǎn)生很多困難。
發(fā)明內(nèi)容
提供了該發(fā)明內(nèi)容來以簡化形式引入一些將在具體實(shí)施方式
里進(jìn)行進(jìn)一步闡述的概念選集。該發(fā)明內(nèi)容目的不是標(biāo)識(shí)要求保護(hù)的主題的關(guān)鍵特征或必要特征,其目的也不是限定要求保護(hù)的主題的范圍。根據(jù)一個(gè)或多個(gè)方面,在設(shè)備操作系統(tǒng)的目錄中維護(hù)多個(gè)軟件組件標(biāo)識(shí)符。這些
軟件組件標(biāo)識(shí)符中的每個(gè)對(duì)應(yīng)于安裝在該設(shè)備上的多個(gè)軟件組件之一。響應(yīng)于有關(guān)多個(gè)軟件組件之一的請(qǐng)求來訪問目錄,而至少部分地基于該目錄中所含的信息來對(duì)該請(qǐng)求做出響應(yīng)。根據(jù)一個(gè)或多個(gè)方面,在計(jì)算設(shè)備的操作系統(tǒng)中,標(biāo)識(shí)該計(jì)算設(shè)備上安裝的軟件組件的兩個(gè)或多個(gè)版本。確定該軟件組件的兩個(gè)或多個(gè)版本中哪個(gè)版本是要運(yùn)行的軟件組件的活動(dòng)版本。作為對(duì)有關(guān)軟件組件信息的請(qǐng)求的響應(yīng),返回有關(guān)軟件組件的活動(dòng)版本的信息。
在整個(gè)附圖中,使用相同的數(shù)字來引用類似的特征。圖I示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的、實(shí)現(xiàn)基于目錄的軟件組件管理的示例計(jì)算設(shè)備。圖2示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的示例目錄。圖3示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的示例軟件組件。圖4示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的、用于基于目錄的軟件組件管理的示例處理的流程圖。圖5示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的、用于基于目錄的軟件組件管理的示例處理的流程圖。圖6示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的、能被配置為實(shí)現(xiàn)基于目錄的軟件組件管理的示例計(jì)算設(shè)備。
具體實(shí)施例方式在此論述基于目錄的軟件組件管理。軟件產(chǎn)品由一個(gè)或多個(gè)軟件組件構(gòu)成。每個(gè)軟件組件具有在計(jì)算設(shè)備上的操作系統(tǒng)的目錄中維護(hù)的身份。該目錄標(biāo)識(shí)哪些軟件組件安裝在計(jì)算設(shè)備上。該目錄允許操作系統(tǒng)容易地標(biāo)識(shí)安裝在該系統(tǒng)中的軟件組件并管理這些軟件組件。圖I示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的實(shí)現(xiàn)基于目錄的軟件組件管理的示例計(jì)算設(shè)備100。計(jì)算設(shè)備100可以是能夠運(yùn)行各軟件應(yīng)用的各種不同的設(shè)備。例如,計(jì)算設(shè)備100可以是桌面型計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、膝上型計(jì)算機(jī)、移動(dòng)站、娛樂電器、可通信地耦接到顯示設(shè)備的機(jī)頂盒、蜂窩電話或其他無線電話、游戲控制臺(tái)、車載計(jì)算機(jī)等。因此,計(jì)算設(shè)備100的范圍可以從有大量存儲(chǔ)器和處理器資源的全資源設(shè)備(如個(gè)人計(jì)算機(jī),游戲控制臺(tái))到具有有限存儲(chǔ)器和/或處理資源的低資源設(shè)備(如傳統(tǒng)的機(jī)頂盒,游戲手柄控制臺(tái))。計(jì)算設(shè)備100包括操作系統(tǒng)102,該操作系統(tǒng)102具有軟件組件訪問控制模塊104和目錄106。兩個(gè)軟件產(chǎn)品110和112 (也被稱作軟件應(yīng)用)被示出為包括在計(jì)算設(shè)備100中。盡管在圖I的示例中示出了兩個(gè)軟件產(chǎn)品110和112,作為選擇,計(jì)算設(shè)備100中可以包括少于兩個(gè)或多于兩個(gè)軟件產(chǎn)品。每個(gè)軟件產(chǎn)品110和112包括一個(gè)或多個(gè)軟件組件。在圖I的示例中,軟件產(chǎn)品110包括軟件組件122、軟件組件124和軟件組件126,而軟件產(chǎn)
品112包括軟件組件126和軟件組件128。如圖I所示,多個(gè)不同的軟件產(chǎn)品可以共享軟件組件(如軟件組件126)。軟件組件訪問控制模塊104管理安裝在計(jì)算設(shè)備100中的軟件組件??刂颇K104將安裝在計(jì)算設(shè)備100上的軟件組件(如圖I示例中的軟件組件122-128)的記錄維護(hù)為目錄106。目錄106是安裝在計(jì)算設(shè)備100上并因此能在計(jì)算設(shè)備100上運(yùn)行的軟件組件的記錄。為了在計(jì)算設(shè)備100上運(yùn)行軟件組件,該軟件組件安裝在計(jì)算設(shè)備中。該安裝處理一般由安裝組件或模塊執(zhí)行,且一般包括在操作系統(tǒng)102的文件系統(tǒng)中的各個(gè)位置存儲(chǔ)文件、存儲(chǔ)各種描述該軟件組件的信息等。作為在計(jì)算設(shè)備100上安裝軟件組件的處理的一部分,使控制模塊104感知該軟件組件,以允許將該軟件組件的標(biāo)識(shí)符添加到目錄106中。這種安裝的軟件組件也能被稱作“活動(dòng)”軟件組件,這是因?yàn)樵撥浖M件能在計(jì)算設(shè)備100上運(yùn)行。其他軟件組件可以存儲(chǔ)在計(jì)算設(shè)備100上,但不是安裝在計(jì)算設(shè)備100上。操作系統(tǒng)102 —般感知不到這樣的軟件組件,沒有把這種組件的標(biāo)識(shí)符包括到目錄106中,且不支持運(yùn)行這種軟件組件。相應(yīng)地,這種軟件組件也能被稱作是“休眠”的,因?yàn)殡m然它們存儲(chǔ)在計(jì)算設(shè)備100上,但這種軟件組件沒有安裝在計(jì)算設(shè)備100上。要理解的是,可以出現(xiàn)這種情況軟件組件是可以由操作系統(tǒng)102執(zhí)行的可執(zhí)行文件(雖然該可執(zhí)行文件沒有安裝在計(jì)算設(shè)備100上)。然而,因?yàn)檫@種軟件組件沒有安裝在計(jì)算設(shè)備100上,操作系統(tǒng)102 一般感知不到有關(guān)這種軟件組件的信息(如這種軟件組件提供的功能,這種軟件組件的開發(fā)商或出版商等),且因此這種軟件組件仍被稱作休眠的軟件組件。軟件組件訪問控制模塊104提供了對(duì)安裝在計(jì)算設(shè)備100上的軟件組件的集中管理。如后文更詳細(xì)的論述那樣,通過維護(hù)目錄106,控制模塊104感知并能容易地為特定軟件組件提供各種功能。例如,控制模塊104能容易地標(biāo)識(shí)安裝在計(jì)算設(shè)備100上的全部軟件組件104,并能提供有關(guān)這些標(biāo)識(shí)的軟件組件的各種功能。如圖I可以看出,每個(gè)軟件產(chǎn)品包括一個(gè)或多個(gè)軟件組件。軟件產(chǎn)品的軟件組件包括能在計(jì)算設(shè)備100上運(yùn)行的指令和數(shù)據(jù),而且這些軟件組件一起提供軟件產(chǎn)品的功能。操作系統(tǒng)102在運(yùn)行時(shí)與單獨(dú)的軟件組件(而不是和軟件產(chǎn)品整體)進(jìn)行通信。雖然圖I示出的是單個(gè)目錄106,作為選擇,操作系統(tǒng)可以包括多個(gè)目錄106。在一個(gè)或多個(gè)實(shí)施例中,操作系統(tǒng)102為計(jì)算設(shè)備100上的每個(gè)賬戶包括不同的目錄106。在這種實(shí)施例中,操作系統(tǒng)102允許不同的用戶每個(gè)創(chuàng)建不同的賬號(hào)(或多個(gè)不同的賬號(hào)),并為該不同的賬號(hào)維護(hù)不同的設(shè)置、訪問權(quán)利等。另外,也能在計(jì)算設(shè)備100上創(chuàng)建一個(gè)或多個(gè)系統(tǒng)或管理員賬號(hào)。操作系統(tǒng)102為這些不同的賬號(hào)中的每一個(gè)維護(hù)一個(gè)不同的目錄106。操作系統(tǒng)102也可允許多個(gè)不同的用戶在任意給定時(shí)間里登錄到計(jì)算設(shè)備100中。然而,在這些情形中,多個(gè)用戶中一般只有一個(gè)是當(dāng)前的活動(dòng)用戶(使用當(dāng)前的活動(dòng)賬號(hào))。因此,在任意給定時(shí)間由控制模塊104使用的目錄106可以基于在該給定時(shí)間內(nèi)登錄進(jìn)去的計(jì)算設(shè)備100的特定賬號(hào)、或可能地基于該給定時(shí)間處多個(gè)登錄進(jìn)入的賬號(hào)中哪個(gè)是當(dāng)前的活動(dòng)賬號(hào)而改變。具體的目錄106包括安裝在計(jì)算設(shè)備100上的軟件組件的標(biāo)識(shí)符。在為不同賬號(hào)維護(hù)不同目錄106的情形中,具體的目錄106包括在那個(gè)賬戶下安裝在計(jì)算設(shè)備100上的軟件組件的標(biāo)識(shí)符。不同的用戶可以在計(jì)算設(shè)備100上安裝不同的軟件組件,導(dǎo)致不同的目錄106中包括不同的標(biāo)識(shí)符。圖2示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的示例目錄200。目錄200包括多個(gè)軟件組件標(biāo)識(shí)符202、204、206和208,每個(gè)識(shí)別符分別地標(biāo)識(shí)相應(yīng)的軟件組件222、224、226和208。這些軟件組件222-228是安裝在實(shí)現(xiàn)目錄200的計(jì)算設(shè)備上(或在該計(jì)算設(shè)備的操作系統(tǒng)上的特定賬號(hào)下安裝)的軟件組件。每個(gè)軟件組件222-228具有允許該軟件組件區(qū)別于其他軟件組件的組件身份。在一個(gè)或多個(gè)實(shí)施例中,該身份由軟件組件提供,比如包括在如后文中更詳細(xì)介紹的清單中。作為選擇,該組件身份能以其他方式產(chǎn)生,比如通過操作系統(tǒng)(如圖I中的操作系統(tǒng)102)、通過另一個(gè)組件或模塊、通過另一個(gè)本地或遠(yuǎn)程服務(wù)、通過另一個(gè)本地或遠(yuǎn)程設(shè)備等來產(chǎn)生。返回到圖1,在一個(gè)或多個(gè)實(shí)施例中,目錄106包括已安裝的軟件組件的單個(gè)索弓I。在其他實(shí)施例中,目錄106包括軟件組件的多個(gè)索引或者部分。這些多個(gè)索引或部分包括,例如一個(gè)包括所有已安裝軟件組件的索引或部分(也稱作全索引)。這些多個(gè)索引或部分也可以包括,例如,一個(gè)包括滿足特定規(guī)則或條件集的軟件組件子集的第二索引或部分(也稱作有效索引)。這個(gè)規(guī)則或條件集也能用于有效地減少已安裝并能運(yùn)行的軟件組件。一般地,有效索引標(biāo)識(shí)安裝在計(jì)算設(shè)備100上軟件組件的活動(dòng)版本。軟件組件的多個(gè)不同版本可以安裝在計(jì)算設(shè)備100上,它們中的每個(gè)都包括在全索引中。然而,對(duì)于軟件組件的多個(gè)版本,選擇那些版本之一包括在有效索引中。各種不同的規(guī)則或條件能用于確定被選擇包括在有效索引中的版本。在一個(gè)或多個(gè)實(shí)施例中,一個(gè)這樣的規(guī)則是版本規(guī)則。版本規(guī)則基于版本序號(hào)或其他版本標(biāo)識(shí)符來指定軟件組件的多個(gè)不同版本中哪一個(gè)是活動(dòng)版本。例如,這種版本規(guī)則可以是,要運(yùn)行的最新版本(如版本號(hào)最高的版本)、要運(yùn)行的具有特定格式版本標(biāo)識(shí)符的版本或具有特定值的版本等。在這種實(shí)施例中,軟件組件的活動(dòng)版本包括在有效索引中,軟件組件的其他版本從有效索引中排除(即使它們可能包括在全索引中)。另一個(gè)能用于確定有效索引的規(guī)則是策略規(guī)則。例如,計(jì)算設(shè)備100的管理員或計(jì)算設(shè)備100因各種不同原因耦接到的網(wǎng)絡(luò)的管理員可以建立策略。這個(gè)策略可以指定特定的軟件組件或其版本不在計(jì)算設(shè)備100上運(yùn)行、只有由特定出版商數(shù)字簽名了的軟件組件或其版本能夠運(yùn)行等。在這種情形中,將特定的軟件組件或版本從有效索引中排除(即使它們可能包括在全索引中)。另一個(gè)能用于確定有效索引的規(guī)則是復(fù)制規(guī)則。復(fù)制原則指定,如果相同軟件組件的多個(gè)復(fù)本安裝在計(jì)算設(shè)備上,則只有一個(gè)這種復(fù)本要在有效索引中維護(hù)。多個(gè)這種復(fù)本能因?yàn)楦鞣N不同的原因而安裝,比如作為安裝在計(jì)算設(shè)備上的多個(gè)軟件產(chǎn)品中的每個(gè)都包括了共有的軟件組件的結(jié)果。圖3示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的示例軟件組件300。軟件組件是一個(gè)和多個(gè)文件和描述該軟件組件的元數(shù)據(jù)的集合。軟件組件300包括一個(gè)或多個(gè)資源文件302,每個(gè)存儲(chǔ)用于該軟件組件300的各種指令和/或數(shù)據(jù)。包括在軟件組件300中的特定資源文件302可以基于軟件組件300的開發(fā)商的意愿而變化。清單304存儲(chǔ)描述軟件組件300的元數(shù)據(jù)和軟件組件300揭示的功能。在一個(gè)或多個(gè)實(shí)施例中,清單304包括軟件組件300的標(biāo)識(shí)符。軟件組件300的標(biāo)識(shí)符允許軟件組件300區(qū)別于安裝在設(shè)備上的其他軟件組件。該標(biāo)識(shí)符可以由各種屬性構(gòu)成,比如軟件組件300的一個(gè)或多個(gè)版本號(hào)、資源文件302 (和清單304的可選部分)上的數(shù)字簽名和軟件組件300的開發(fā)商或出版商的標(biāo)識(shí)符。作為選擇,這些版本號(hào),數(shù)字簽名和開發(fā)商或出版商的標(biāo)識(shí)符可被分開維護(hù)而不是(或另外地)作為軟件組件300的標(biāo)識(shí)符的屬性被包括。軟件組件300的版本號(hào)允許易于標(biāo)識(shí)軟件組件300的不同版本。如后文更詳細(xì)地論述的那樣,這些版本號(hào)可以用于便于對(duì)軟件組件300的管理。清單304也可以包括通過在資源文件302上應(yīng)用散列函數(shù)而產(chǎn)生的散列值。各種不同散列函數(shù),比如一個(gè)或多個(gè)加密或單向散列函數(shù)可用于產(chǎn)生散列值。這種散列函數(shù)的例子包括MD5 (消息-摘要算法5)散列函數(shù),SHA-I (安全散列算法I)散列函數(shù)等。清單304的至少一部分(比如清單304中除了數(shù)字簽名之外的那些部分)上的數(shù)字簽名由軟件組件300的出版商產(chǎn)生或代表其產(chǎn)生。作為選擇,該數(shù)字簽名也可以在資源文件302 (代替包括在清單304中的資源文件302的散列,或者另外地)上。軟件組件300的出版商可以是軟件組件300的資源文件302的開發(fā)商,或作為選擇,是對(duì)軟件組件300有貢獻(xiàn)的另一實(shí)體。可以通過使用基于公鑰加密的任意各種熟知的技術(shù)來產(chǎn)生該數(shù)字簽名。如果在其上進(jìn)行數(shù)字簽名的資源文件302 (比如由于清單304中資源文件302的散列值)以及清單304的其他部分改變了,則數(shù)字簽名會(huì)改變。相應(yīng)地,該數(shù)字簽名也可以充當(dāng)在其上進(jìn)行數(shù)字簽名的特定資源文件302集以及清單304的其他部分的標(biāo)識(shí)符。軟件組件300的出版商和/或開發(fā)商的身份也可以包括在清單304中。數(shù)字簽名也能在出版商和/或開發(fā)商的身份上產(chǎn)生。當(dāng)軟件組件300要安裝到計(jì)算設(shè)備(比如圖I中的計(jì)算設(shè)備100)上時(shí),軟件組件300由安裝或者部署組件或模塊獲得。軟件組件300可以從任意各種本地和/或遠(yuǎn)程服務(wù)和/或設(shè)備中獲得。作為安裝處理的部分,軟件組件300的標(biāo)識(shí)符在安裝或作為選擇由安裝處理標(biāo)識(shí)時(shí),添加到計(jì)算設(shè)備的操作系統(tǒng)的特定賬號(hào)的目錄中。該安裝處理可以將軟件組件300的標(biāo)識(shí)符添加到目錄中,或作為選擇可以與軟件組件訪問控制模塊(如圖I中的控制模塊104)進(jìn)行通信,該控制模塊接著可以將軟件組件300的標(biāo)識(shí)符添加到目錄中。在一個(gè)或多個(gè)實(shí)施例中,在將軟件組件300的標(biāo)識(shí)符添加到目錄之前,軟件組件訪問控制模塊或者安裝組件或模塊采取一個(gè)或多個(gè)驗(yàn)證動(dòng)作。能采取各種驗(yàn)證動(dòng)作。比如,可以建立軟件組件300、清單304和/或資源文件302要遵守的規(guī)則或條件集。作為驗(yàn)證的部分,可以有關(guān)該規(guī)則或條件集實(shí)際上是否被遵守進(jìn)行檢查。如果該規(guī)則或條件集沒有被遵守,那么不將軟件組件300的標(biāo)識(shí)符添加到目錄中。再舉個(gè)例子,可以關(guān)于如上所述的在資源文件302和/或清單304上的數(shù)字簽名是否存在于清單304中進(jìn)行檢查。如果清單304中不存在這種數(shù)字簽名,那么不將軟件組件300的標(biāo)識(shí)符添加到目錄中。然而,如果清單304中存在這種數(shù)字簽名,那么會(huì)進(jìn)行在其上做出數(shù)字簽名的資源文件302和/或清單304從被數(shù)字簽名以來是否改變了的檢查。這個(gè)檢查可以包括計(jì)算資源文件302的散列值來驗(yàn)證計(jì)算出的散列值與存儲(chǔ)在清單304中的散列值是否相同??梢砸匀我馄渌鞣N使用公鑰密碼學(xué)的熟知方式來執(zhí)行在其上做出數(shù)字簽名的清單304沒有被改變的檢查。也可以 做出有關(guān)包括在清單304中的軟件組件300的出版商的標(biāo)識(shí)符是否與包括在數(shù)字簽名中的出版商標(biāo)識(shí)符是否匹配(比如,相同)的檢查。如果在其上做出數(shù)字簽名的資源文件302和/或清單304從被數(shù)字簽名以來已經(jīng)改變了,那么不會(huì)將軟件組件300的標(biāo)識(shí)符添加到目錄中。再舉個(gè)例子,可以做出有關(guān)產(chǎn)生資源文件302和/或清單304上的數(shù)字簽名的實(shí)體能否被信任的檢查。這個(gè)檢查可以通過訪問證書存儲(chǔ)庫來確定產(chǎn)生該數(shù)字簽名的實(shí)體的數(shù)字證書是否包括在軟件組件300安裝在其上的設(shè)備的證書存儲(chǔ)庫中。作為選擇地,可以建立從該證書存儲(chǔ)庫中的數(shù)字證書到產(chǎn)生該數(shù)字簽名的實(shí)體的數(shù)字證書的證書鏈,而不是被包括在證書存儲(chǔ)庫中。如果這種數(shù)字證書沒有包括在證書存儲(chǔ)庫中(或者沒能建立證書鏈),則不會(huì)將軟件組件300的標(biāo)識(shí)符添加到目錄中。返回到圖1,一旦軟件組件122-128安裝在計(jì)算設(shè)備100上,可以維護(hù)到軟件組件122-128的一個(gè)或多個(gè)資源文件位置的路徑。這些路徑可以保持在目錄106中,或作為選擇,作為元數(shù)據(jù)保持在操作系統(tǒng)102的其他存儲(chǔ)庫中。這些路徑允許特定的文件被檢索和執(zhí)行、加載或否則被使用。例如,可以保持到要作為快捷方式而顯示的圖標(biāo)的路徑,可以保持到可執(zhí)行文件的路徑,可以保持到動(dòng)態(tài)鏈接庫(DLL)的路徑等。通過保持這些路徑,能容易地標(biāo)識(shí)和返回關(guān)于軟件組件的信息。例如,如果要運(yùn)行特定的軟件組件,可以容易地標(biāo)識(shí)到該軟件組件的可執(zhí)行文件的路徑。又例如,如果要顯示代表到軟件組件的快捷方式的圖標(biāo),則可以容易地標(biāo)識(shí)存儲(chǔ)用于該圖標(biāo)的數(shù)據(jù)的文件。再例如,如果要加載DLL,則可以容易地標(biāo)識(shí)到存儲(chǔ)那個(gè)DLL的文件的路徑。軟件組件訪問控制模塊104允許各種其他組件和模塊從目錄106中獲取有關(guān)已安裝的軟件組件的信息。這種其他組件和模塊可以是操作系統(tǒng)102的部分,或作為選擇,可以是一個(gè)或多個(gè)軟件組件122-128。目錄106中維護(hù)的有關(guān)已安裝的軟件組件的信息可以被返回給請(qǐng)求組件或模塊,或作為選擇,可以被控制模塊104使用來產(chǎn)生對(duì)請(qǐng)求的響應(yīng)。因?yàn)槟夸?06維護(hù)安裝在計(jì)算設(shè)備100上的軟件組件的記錄,因此目錄106也能被操作系統(tǒng)102中的其他組件或模塊利用。 在一個(gè)或多個(gè)實(shí)施例中,在訪問目錄106時(shí),控制模塊104支持各種操作。這些操作可以作為應(yīng)用程序編程接口(API)的方法來顯露,或作為選擇,對(duì)這些要執(zhí)行操作的請(qǐng)求可以其他方式向控制模塊104做出。下面的表I描述了在訪問目錄106時(shí)由控制模塊104支持的這些操作的示例。
表I
¥ 乍I描述
目錄返回在操作系統(tǒng)中的目錄列表
M目錄k回用于在執(zhí)行該操作的請(qǐng)求中指定的賬號(hào)的目錄
添加組件_向目錄中添加軟件組件_
組件從目錄中移除軟件組件
組件返回在目錄的全索引和/或有效索引中的軟件組件列表
根據(jù)身份列舉組件返回在請(qǐng)求中指定的、在目錄的全索引和/或有效索引中的軟件組件列表,該列表具有與指定身份相匹配的軟件組件標(biāo)識(shí)符。該指定的身份可以是
_局部或全面的。例如,該指定的身份可以使用通配符來指示組件身份中未指定的屬性或部分。_
根據(jù)路徑獲取組件給定指定的目錄和目錄或文件的路徑,從有效索引和/或全索引中返回軟件組件的標(biāo)識(shí)符。這允許調(diào)用方來確定給定文件是否屬于有效索引和/或_I全索引中的組件。_
如上所述,在一個(gè)或多個(gè)實(shí)施例中,軟件組件的標(biāo)識(shí)符包括標(biāo)識(shí)軟件組件版本號(hào)的組件標(biāo)識(shí)符。在兩個(gè)軟件組件有相同版本號(hào)的情形中,則(假設(shè)這兩個(gè)軟件組件的組件標(biāo)識(shí)符的剩余部分相同)這兩個(gè)軟件組件之一會(huì)被確定為另一個(gè)的新的替換版本。能以各種不同的方式確定被確定為是新的替換版本的這兩個(gè)軟件組件之一,比如有更高的版本號(hào)的一個(gè)??刂颇K104用軟件組件新的替換版本代替軟件組件的舊版本,導(dǎo)致對(duì)該軟件組件的后續(xù)請(qǐng)求返回該新的替換版本。在一個(gè)或多個(gè)實(shí)施例中,控制模塊104將該組件新的替換版本添加到目錄106的有效索引中,并從目錄106的有效索引中移除軟件組件的較舊版本。作為選擇,在其他時(shí)間(比如在對(duì)軟件組件請(qǐng)求做出響應(yīng)時(shí)),控制模塊104可以確定軟件組件的兩個(gè)版本中哪一個(gè)是新的替換版本。另外,每個(gè)軟件組件都有如上所述的清單。在一個(gè)或多個(gè)實(shí)施例中,每個(gè)軟件組件的清單也標(biāo)識(shí)該軟件組件是否依賴于其他軟件組件來操作。例如,軟件組件122可能依賴于也在系統(tǒng)中運(yùn)行的軟件組件124,且軟件組件可能依賴于也在系統(tǒng)中運(yùn)行的軟件組件126。給定該軟件組件清單中的這些信息,控制模塊104能容易地確定特定的軟件組件是否可以在計(jì)算設(shè)備100上運(yùn)行。例如,控制模塊104可以訪問軟件組件122的清單并確定,為了軟件組件122運(yùn)行,軟件組件124 (因此軟件組件126也是)也要運(yùn)行。相應(yīng)地,控制模塊104能對(duì)來自其他組件或模塊(可以是操作系統(tǒng)102的部分,或作為選擇和操作系統(tǒng)102分開的)有關(guān)特定的軟件組件是否能在計(jì)算設(shè)備100上運(yùn)行的查詢做出響應(yīng)。如果該特定的軟件組件所依賴的其他軟件組件在目錄106中,則該特定的軟件組件可以在計(jì)算設(shè)備100中運(yùn)行。然而,如果該特定的軟件組件所依賴的其他軟件組件不在目錄106中,則該特定的軟件組件不能在計(jì)算設(shè)備100中運(yùn)行。類似地,給定該軟件組件清單里的這些信息,控制模塊104可以容易地確定從計(jì)算設(shè)備100中移除特定的軟件組件是否會(huì)阻止其他軟件組件運(yùn)行。例如,控制模塊104可以訪問軟件組件122的清單并確定,為了讓軟件組件122運(yùn)行,軟件組件124 (因此軟件組件126也是)也要運(yùn)行。相應(yīng)地,通過指示不能刪除軟件組件124而不導(dǎo)致至少一個(gè)其他軟件組件可能無法正常運(yùn)行,控制模塊104可以對(duì)來自其他組件或模塊(可以是操作系統(tǒng)102的部分,或作為選擇和操作系統(tǒng)102相分離)的有關(guān)是否可以將軟件組件124從計(jì)算設(shè)備100中移除的查詢做出響應(yīng)。圖4示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的、用于基于目錄的軟件組件管理的示例處理400的流程圖。處理400由設(shè)備上運(yùn)行的操作系統(tǒng)的控制模塊(比如圖I中的軟件組件訪問控制模塊104)執(zhí)行,并可以以軟件、固件、硬件或其組合來實(shí)現(xiàn)。處理400是基于目錄的軟件組件管理的示例處理;通過參考不同的數(shù)據(jù)在此包括其他對(duì)基于目錄的軟件組件管理的另外論述。
在處理400中,軟件組件標(biāo)識(shí)符保持在目錄中(動(dòng)作402)。這些軟件組件標(biāo)識(shí)符使軟件組件區(qū)別于彼此,并能如上所述采取各種不同的形式。如上所述,多個(gè)不同的目錄可以包括在設(shè)備上,每個(gè)都可選性地包括不同的索引。最后,接收有關(guān)軟件組件的請(qǐng)求收(動(dòng)作404)。處理400等待直到接收這種請(qǐng)求為止,并響應(yīng)于該請(qǐng)求而訪問目錄(動(dòng)作406)。要訪問的目錄可以作為請(qǐng)求的部分來標(biāo)識(shí),或作為選擇,可以本來就在該請(qǐng)求中(比如實(shí)現(xiàn)處理400的計(jì)算設(shè)備的當(dāng)前用戶的目錄)。該請(qǐng)求基于目錄中的信息而被響應(yīng)(動(dòng)作408)。如上所述,目錄中這些信息至少包括該組件的標(biāo)識(shí)符。如上所述,可以基于所請(qǐng)求操作的本性而改變?cè)撎囟ǖ捻憫?yīng)。圖5是說明根據(jù)一個(gè)或多個(gè)實(shí)施例 的、用于基于目錄的軟件組件管理的示例處理500的流程圖。指示處理500響應(yīng)軟件組件多個(gè)版本安裝在設(shè)備上何處的請(qǐng)求。處理500由運(yùn)行在設(shè)備上的操作系統(tǒng)的控制模塊(比如圖I中的軟件組件訪問控制模塊104)來執(zhí)行,且可以用軟件、固件、硬件或其組合來實(shí)現(xiàn)。處理500是基于目錄的軟件組件管理的示例處理;通過參考不同的附圖在此包括對(duì)基于目錄的軟件組件管理的附加論述。在處理500中,標(biāo)識(shí)安裝在設(shè)備上的、用戶可訪問的軟件組件的多個(gè)版本(動(dòng)作502)。如上所述,不同的用戶可以訪問不同的軟件組件。進(jìn)行有關(guān)軟件組件的多個(gè)版本中哪個(gè)是活動(dòng)版本的確定(動(dòng)作504)。該確定可以在標(biāo)識(shí)多個(gè)版本時(shí)或其他時(shí)候進(jìn)行,且如上所述,可以維護(hù)活動(dòng)版本的列表(比如,作為有效索引)?;蜃鳛檫x擇,可以響應(yīng)于有關(guān)軟件組件的信息請(qǐng)求而進(jìn)行該確定。響應(yīng)于對(duì)有關(guān)軟件組件的信息的請(qǐng)求,返回關(guān)于該軟件組件的活動(dòng)版本的信息(動(dòng)作506)。這種請(qǐng)求可以是從實(shí)現(xiàn)處理500的操作系統(tǒng)的其他組件或模塊(或作為選擇,如上所述的其他軟件組件)接收的請(qǐng)求。處理500涉及單個(gè)的軟件組件。要理解的是,處理500可以為多個(gè)軟件組件重復(fù)。例如,可以如上所述維護(hù)多個(gè)軟件組件的活動(dòng)版本的有效索引。也應(yīng)該注意的是,動(dòng)作502中執(zhí)行的標(biāo)識(shí)和動(dòng)作504中執(zhí)行的確定可以在各種時(shí)間執(zhí)行。在一個(gè)或多個(gè)實(shí)施例中,每當(dāng)對(duì)計(jì)算設(shè)備100上安裝的軟件組件做出改變時(shí)就執(zhí)行動(dòng)作502和504。,操作系統(tǒng)中的另一個(gè)組件或模塊會(huì)通知實(shí)現(xiàn)處理500的軟件訪問控制模塊何時(shí)做出了這種改變。這種改變的示例包括安裝軟件組件和卸載軟件組件。作為選擇,動(dòng)作502和504可以在其他時(shí)間執(zhí)行,比如對(duì)有關(guān)軟件組件或目錄的信息請(qǐng)求做出響應(yīng)時(shí)、在低活動(dòng)的時(shí)間期間(比如該操作系統(tǒng)不忙于執(zhí)行其他任務(wù)時(shí))等。圖6示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的、可以被配置為實(shí)現(xiàn)基于目錄的軟件組件管理的示例計(jì)算設(shè)備600。計(jì)算設(shè)備600可以是,比如圖I中的計(jì)算設(shè)備100。計(jì)算設(shè)備600包括一個(gè)或多個(gè)處理器或處理單元602、可以包括一個(gè)或多個(gè)存儲(chǔ)器和/或存儲(chǔ)組件606的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)604、一個(gè)或多個(gè)輸入/輸出(I/O)設(shè)備608和允許各種組件和設(shè)備彼此通信的總線610。計(jì)算機(jī)可讀介質(zhì)604和/或一個(gè)或多個(gè)I/O設(shè)備608可以被包括作為計(jì)算設(shè)備600的一部分,或作為選擇可以耦接至計(jì)算設(shè)備??偩€610代表幾種類型總線結(jié)構(gòu)中的一種或多種,包括使用各種不同總線體系結(jié)構(gòu)的存儲(chǔ)器總線或者存儲(chǔ)器控制器、外圍總線、加速圖形端口、處理器或本地總線等??偩€610可以包括有線和/或無線總線。存儲(chǔ)器/存儲(chǔ)組件606代表一個(gè)或多個(gè)計(jì)算存儲(chǔ)介質(zhì)。組件606可以包括易失性介質(zhì)(比如隨機(jī)存取存儲(chǔ)器(RAM))和/或非易失性介質(zhì)(比如只讀存儲(chǔ)器(ROM)、閃存存儲(chǔ)器、光盤、磁盤等)。組件606可以包括固定介質(zhì)(比如RAM、ROM、固定硬盤驅(qū)動(dòng)器等)以及可移動(dòng)介質(zhì)(比如閃存驅(qū)動(dòng)器、可移動(dòng)硬盤驅(qū)動(dòng)器、光盤等)。在此論述的技術(shù)能在軟件中實(shí)現(xiàn),而利用指令由一個(gè)或多個(gè)處理單元602執(zhí)行。要理解的是,不同的指令可以存儲(chǔ)在計(jì)算設(shè)備600的不同組件中,比如處理單元602中、處理單元602的各種高速緩沖存儲(chǔ)器中、設(shè)備600的其他高速緩存存儲(chǔ)器(未顯示)中、其他計(jì)算機(jī)可讀介質(zhì)上等。另外,要理解的是,指令存儲(chǔ)在計(jì)算設(shè)備600中的位置可以隨著時(shí)間改變?!獋€(gè)或多個(gè)輸入/輸出設(shè)備608允許用戶在計(jì)算設(shè)備600中輸入命令和信息,也允許將信息呈現(xiàn)給用戶和/或其他組件或設(shè)備。輸入設(shè)備的示例包括鍵盤、光標(biāo)控制設(shè)備(如鼠標(biāo))、麥克風(fēng)、掃描儀等。輸出設(shè)備的示例包括顯示設(shè)備(如監(jiān)視器或投影儀)、揚(yáng)聲器、打印機(jī)、網(wǎng)卡等。在此各種技術(shù)可以在軟件或程序模塊的一般背景中描述。一般地,軟件包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。這些組件或技術(shù)的實(shí)現(xiàn)可存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或通過計(jì)算機(jī)可讀介質(zhì)的某種形式傳輸。計(jì)算機(jī)可讀介質(zhì)可以是由計(jì)算設(shè)備訪問的任意可用介質(zhì)。舉個(gè)示例但不限于此,計(jì)算機(jī)可讀介質(zhì)可包括“計(jì)算機(jī)存儲(chǔ)介質(zhì)”和“通信介質(zhì)”。“計(jì)算機(jī)存儲(chǔ)介質(zhì)”包括以用于存儲(chǔ)如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)的信息的任意方式或技術(shù)實(shí)現(xiàn)的易失性和非易失性的、可移動(dòng)和不可移動(dòng)的介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括(但不限于)RAM、R0M、EEPR0M、閃存或其他存儲(chǔ)技術(shù)、CD-ROM、數(shù)字多功能光盤(DVD)或光學(xué)存儲(chǔ)設(shè)備、盒式磁帶、磁帶、磁盤存儲(chǔ)設(shè)備或其他磁性存儲(chǔ)設(shè)備,或可以用于存儲(chǔ)想要的信息并可以被計(jì)算機(jī)訪問的任意其他介質(zhì)。“通信介質(zhì)” 一般在調(diào)制數(shù)據(jù)信號(hào)(比如載波或其他傳輸機(jī)制)中包含計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序組件或其他數(shù)據(jù)。傳輸介質(zhì)也包括任何信息遞送介質(zhì)。術(shù)語“調(diào)制數(shù)據(jù)信號(hào)”意指具有一個(gè)或多個(gè)特征以將信息編碼到信號(hào)中的方式來設(shè)置或改變的信號(hào)。舉個(gè)示例但不限于此,通信介質(zhì)包括有線介質(zhì)(比如有線網(wǎng)絡(luò)或直接連線的連接)和無線介質(zhì)(比如聲音、RF、紅外和其他無線介質(zhì))。上述任意的組合也包括在計(jì)算機(jī)可讀介質(zhì)的范圍中。一般地,在此描述的任意功能和技術(shù)都可以用軟件、固件、硬件(如固定邏輯電路)、人工處理或者這些實(shí)現(xiàn)的組合來實(shí)現(xiàn)。在此使用的術(shù)語“模塊”和“組件” 一般代表軟件,盡管作為選擇也能并入固件和/或硬件。在軟件實(shí)現(xiàn)的情形中,模塊或組件代表當(dāng)在處理器(如一個(gè)或多個(gè)CPU)上執(zhí)行時(shí),執(zhí)行指定任務(wù)的程序代碼。該程序代碼可以儲(chǔ)存在一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)設(shè)備中,對(duì)這些的進(jìn)一步描述可以參考圖6找到。在此描述的基于目錄的軟件組件管理的特征是平臺(tái)無關(guān)的,這意味著該技術(shù)可以在有各種處理器的各種商業(yè)計(jì)算平臺(tái)中實(shí)現(xiàn)。雖然該主題已經(jīng)用結(jié)構(gòu)特征和/或方法動(dòng)作特定的語言進(jìn)行了描述,要理解的是,附加的權(quán)利要求書中定義的主題不一定限于以上描述的特定特征和動(dòng)作。相反,以上描述的特定的特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求書的示例形式而公開的。
權(quán)利要求
1.一種計(jì)算設(shè)備(600),包括 處理器(602);以及 一個(gè)或多個(gè)耦接到處理器并其上存儲(chǔ)了操作系統(tǒng)的多個(gè)指令的計(jì)算機(jī)可讀介質(zhì)(604),這些指令當(dāng)由處理器執(zhí)行時(shí),導(dǎo)致處理器 在操作系統(tǒng)的目錄中維護(hù)(402)多個(gè)軟件組件標(biāo)識(shí)符,其中多個(gè)軟件組件安裝在該設(shè)備上,且這多個(gè)軟件組件標(biāo)識(shí)符中的每個(gè)都對(duì)應(yīng)于這多個(gè)軟件組件之一; 響應(yīng)于對(duì)有關(guān)多個(gè)軟件組件之一的請(qǐng)求而訪問(406)該目錄;以及 至少部分基于包括在目錄中的信息來響應(yīng)(408)該請(qǐng)求。
2.如權(quán)利要求I中所述的計(jì)算設(shè)備,其中多個(gè)目錄在該設(shè)備上,其中多個(gè)目錄的每個(gè)都對(duì)應(yīng)于該操作系統(tǒng)中的多個(gè)賬號(hào)中的一個(gè),其中該指令進(jìn)一步導(dǎo)致處理器至少部分基于多個(gè)賬號(hào)中哪個(gè)登錄進(jìn)去,來標(biāo)識(shí)多個(gè)目錄中的一個(gè)。
3.如權(quán)利要求I中所述的計(jì)算設(shè)備,其中該請(qǐng)求是檢查運(yùn)行多個(gè)軟件組件中的一個(gè)是否依賴于目錄中的一個(gè)或多個(gè)軟件組件的請(qǐng)求。
4.如權(quán)利要求I中所述的計(jì)算設(shè)備,其中該目錄包括全索引和有效索引,全索引包括安裝在該設(shè)備中的所有組件,而有效索引包括全索引的子集,其中對(duì)于每個(gè)具有安裝在該設(shè)備上的兩個(gè)或以上版本的多個(gè)軟件組件,所述有效索引還包括該軟件組件的活動(dòng)版本。
5.如權(quán)利要求I中所述的計(jì)算設(shè)備,其中多個(gè)軟件組件標(biāo)識(shí)符中的每個(gè)包括 該軟件組件的出版商的標(biāo)識(shí)符; 該出版商在存儲(chǔ)描述該軟件組件的元數(shù)據(jù)的清單上的數(shù)字簽名;以及 軟件組件的一個(gè)或多個(gè)版本號(hào)。
6.如權(quán)利要求I中所述的計(jì)算設(shè)備,其中該請(qǐng)求是有關(guān)具有多個(gè)安裝在該設(shè)備中的版本的軟件組件的請(qǐng)求,其中對(duì)該請(qǐng)求做出響應(yīng)就是至少部分基于該軟件組件多個(gè)版本中特定的一個(gè)做出響應(yīng)。
7.如權(quán)利要求I中所述的計(jì)算設(shè)備,其中該請(qǐng)求包括對(duì)多個(gè)軟件組件中的一個(gè)的軟件組件標(biāo)識(shí)符的請(qǐng)求,該軟件組件包括具有給定路徑的文件。
8.—種在計(jì)算設(shè)備中的操作系統(tǒng)中實(shí)現(xiàn)的方法,該方法包括 標(biāo)識(shí)(502)安裝在計(jì)算設(shè)備上的軟件組件的兩個(gè)或多個(gè)版本; 確定(504)軟件組件的兩個(gè)或多個(gè)版本中哪一個(gè)是要運(yùn)行的軟件組件的活動(dòng)版本;以及 響應(yīng)于對(duì)有關(guān)軟件組件的信息的請(qǐng)求而返回有關(guān)該軟件組件活動(dòng)版本的信息。
9.如權(quán)利要求8中所述的方法,其中該軟件組件的兩個(gè)或多個(gè)版本的每個(gè)都有只在版本號(hào)上不同的軟件組件標(biāo)識(shí)符。
10.如權(quán)利要求9中所述的方法,進(jìn)一步包括,在目錄中維護(hù)軟件組件的兩個(gè)或多個(gè)版本中每一個(gè)的軟件組件標(biāo)識(shí)符,每個(gè)軟件組件標(biāo)識(shí)符包括 該版本的軟件組件的出版商的標(biāo)識(shí)符; 出版商在存儲(chǔ)描述該軟件組件版本的元數(shù)據(jù)的清單上的數(shù)字簽名;以及 該軟件組件版本的版本號(hào)。
11.如權(quán)利要求8中所述的方法,進(jìn)一步包括 為多個(gè)軟件組件中每一個(gè)重復(fù)標(biāo)識(shí)和確定;產(chǎn)生包括多個(gè)軟件組件的每個(gè)活動(dòng)版本的標(biāo)識(shí)符的有效索引;以及 使用有效索引來隨后標(biāo)識(shí)多個(gè)軟件組件中每一個(gè)的活動(dòng)版本。
12.如權(quán)利要求11中所述的方法,所述確定包括 標(biāo)識(shí)要使用來確定特定的軟件組件的兩個(gè)或多個(gè)版本中哪一個(gè)是該特定軟件組件的活動(dòng)版本的規(guī)則集,該規(guī)則集包括由計(jì)算設(shè)備耦接到的網(wǎng)絡(luò)的管理員設(shè)置的策略規(guī)則;以及 基于該規(guī)則集,選擇為該特定軟件的活動(dòng)版本的兩個(gè)或多個(gè)版本之一。
13.如權(quán)利要求8中所述的方法,進(jìn)一步包括響應(yīng)于軟件組件的新版本安裝在計(jì)算設(shè)備上而重復(fù)所述標(biāo)識(shí)和確定。
14.如權(quán)利要求8中所述的方法,進(jìn)一步包括響應(yīng)于從計(jì)算設(shè)備中卸載軟件組件的兩個(gè)或多個(gè)版本中的一個(gè)來重復(fù)所述標(biāo)識(shí)和確定。
15.如權(quán)利要求8中所述的方法,進(jìn)一步包括維護(hù)多個(gè)目錄,每一個(gè)目錄都為計(jì)算設(shè)備上 的多個(gè)用戶賬戶中不同的一個(gè)標(biāo)識(shí)軟件組件的活動(dòng)版本,且其中該軟件組件的活動(dòng)版本在不同的目錄中是不同的版本。
全文摘要
在設(shè)備上運(yùn)行的操作系統(tǒng)的目錄中維護(hù)多個(gè)軟件組件標(biāo)識(shí)符。這些軟件組件標(biāo)識(shí)符中的每個(gè)對(duì)應(yīng)于安裝在該設(shè)備上的多個(gè)軟件組件之一。響應(yīng)于有關(guān)多個(gè)軟件組件之一的請(qǐng)求而訪問該目錄,并且至少部分地基于目錄中包括的信息來響應(yīng)該請(qǐng)求。另外,可以標(biāo)識(shí)安裝在計(jì)算設(shè)備中的軟件組件的兩個(gè)或者更多版本。確定軟件組件的兩個(gè)或者更多版本中的哪個(gè)是要運(yùn)行的軟件組件的活動(dòng)版本。響應(yīng)于對(duì)有關(guān)軟件組件的信息的請(qǐng)求,返回有關(guān)軟件組件的活動(dòng)版本的信息。
文檔編號(hào)G06F9/30GK102804132SQ201080026685
公開日2012年11月28日 申請(qǐng)日期2010年6月15日 優(yōu)先權(quán)日2009年6月15日
發(fā)明者E.P.特勞特, D.E.哈文斯, J.M.貝爾納伯-奧班, M.R.布朗, R.B.沃德, S.辛哈, T.埃爾多根, A.D.斯特里策爾, A.W.肯特 申請(qǐng)人:微軟公司