两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

標(biāo)記構(gòu)架的制作方法

文檔序號:6427160閱讀:369來源:國知局
專利名稱:標(biāo)記構(gòu)架的制作方法
技術(shù)領(lǐng)域
本發(fā)明的實施例涉及軟件體系結(jié)構(gòu)的領(lǐng)域。特別是,本發(fā)明的實施例涉及關(guān)于軟件產(chǎn)品(包括操作系統(tǒng))的標(biāo)記(branding)構(gòu)架。
背景技術(shù)
隨著軟件產(chǎn)品變得更大、更復(fù)雜,越來越難以根據(jù)現(xiàn)存的軟件產(chǎn)品來創(chuàng)建新產(chǎn)品,并按市場和競爭需求所要求的那樣來維修這些產(chǎn)品。操作系統(tǒng)(OS)是相對較大、較復(fù)雜的軟件產(chǎn)品的例子。
該操作系統(tǒng)管理并調(diào)度其所駐留的計算機(jī)或設(shè)備的各種資源,并提供各種功能模塊和界面,應(yīng)用程序可使用它們來完成各種任務(wù)。常規(guī)計算機(jī)一般在其運(yùn)行時執(zhí)行其操作系統(tǒng),以管理該計算機(jī)的各個方面。例如,該操作系統(tǒng)通常負(fù)責(zé)管理對存儲設(shè)備以及輸入和/或輸出設(shè)備的存取,并負(fù)責(zé)控制一個或多個附加的應(yīng)用程序的執(zhí)行。通常在該計算機(jī)執(zhí)行該操作系統(tǒng)之前進(jìn)行安裝(例如,通過將多個文件從諸如CDROM等分布介質(zhì)拷貝到該計算機(jī)的硬盤)。
常規(guī)操作系統(tǒng)具有關(guān)于指令和/或數(shù)據(jù)的大量文件(例如,數(shù)千個)。當(dāng)被該計算機(jī)執(zhí)行時,這類指令提供該操作系統(tǒng)的功能。通常,標(biāo)記信息出現(xiàn)在該操作系統(tǒng)的許多文件各處,以便為用戶提供協(xié)調(diào)一致的專業(yè)性用戶經(jīng)驗。例如,該操作系統(tǒng)頻繁地呈現(xiàn)其中出現(xiàn)產(chǎn)品名稱、標(biāo)識語、位像或類似物的用戶界面。通常在產(chǎn)品開發(fā)的關(guān)鍵階段進(jìn)行標(biāo)記更改;甚至在發(fā)行諸如操作系統(tǒng)等產(chǎn)品之后,也可繼續(xù)該標(biāo)記更改。這些階段包括內(nèi)部生產(chǎn)周期、β(外部)發(fā)行和最終的零售產(chǎn)品。
貫穿諸如操作系統(tǒng)等大型、復(fù)雜的軟件產(chǎn)品而手動地應(yīng)用始終如一的商標(biāo)標(biāo)識的過程往往既復(fù)雜、耗時,又容易出錯。這至少部分歸因于“發(fā)現(xiàn)并替換該產(chǎn)品中的每一個標(biāo)記區(qū)域”這項困難的任務(wù)。手動標(biāo)記過程特別成問題,因為每次在產(chǎn)品周期內(nèi)進(jìn)行標(biāo)記更改——當(dāng)發(fā)行產(chǎn)品的不同版本時、當(dāng)根據(jù)現(xiàn)存的產(chǎn)品來創(chuàng)建新產(chǎn)品時等,都必須對它進(jìn)行重復(fù)。標(biāo)記需要到處存在,這樣,用于進(jìn)行更改、測試這些更改并修理標(biāo)記故障的常規(guī)過程對于大型軟件產(chǎn)品而言會需要成千上萬個小時。
當(dāng)開發(fā)和更新產(chǎn)品時,很難知道其中出現(xiàn)標(biāo)記信息的所有這些可能的區(qū)域是否正在進(jìn)行適當(dāng)?shù)那鍐?。?biāo)記中有可見的不一致性的產(chǎn)品是極其不合需要的。
相應(yīng)地,需要一種標(biāo)記構(gòu)架,用于處理這些和其他的缺點中的一個或多個缺點,并允許在其他事物之中制造改進(jìn)的操作系統(tǒng)和其他軟件產(chǎn)品。

發(fā)明內(nèi)容
本發(fā)明的實施例通過簡化標(biāo)記元素由此被應(yīng)用于諸如操作系統(tǒng)等軟件產(chǎn)品的過程,來克服原先技術(shù)中的一個或多個不足之處。本發(fā)明在其他事物之中提供了一種全新的方法,用于處理產(chǎn)品標(biāo)記的每個方面。例如,本發(fā)明集中所有的標(biāo)記信息,因而允許通過在一處進(jìn)行一項更改(而不是貫穿任何給定的軟件產(chǎn)品來進(jìn)行無數(shù)的更改),來應(yīng)用標(biāo)記更改。而且,本發(fā)明的各個方面有益于已購買許可權(quán)來用其自己的標(biāo)記定制產(chǎn)品的第三方。
在其至少一個實施例中,本發(fā)明將標(biāo)記信息裝入單一標(biāo)記部件,這使標(biāo)記與核心操作系統(tǒng)代碼分離。本發(fā)明的另外的各個方面利用部件化(componentized)體系結(jié)構(gòu),用于將標(biāo)記元素應(yīng)用于軟件產(chǎn)品。而且,這里所描述的本發(fā)明的各個特點執(zhí)行起來比當(dāng)前可用的技術(shù)更不費(fèi)力、更加容易,并且具有經(jīng)濟(jì)可行性和商業(yè)實用性。
簡而言之,具體表現(xiàn)本發(fā)明的各個方面的計算機(jī)化方法用于給軟件產(chǎn)品打上標(biāo)記的過程中。該方法包括為多個資源文件中的每個資源文件分配名字空間。這些資源文件每個包含一個或多個標(biāo)記資源。該方法也包括根據(jù)這些所分配的名字空間,來為這些資源文件分組;執(zhí)行界面,以調(diào)用一組資源文件,作為所選擇的名字空間的功能。在被調(diào)用的這組資源文件中搜索將要被安裝在該軟件產(chǎn)品內(nèi)的標(biāo)記資源中的一個或多個標(biāo)記資源。
本發(fā)明的另一個實施例涉及包括多個被中央存儲的資源文件和標(biāo)記引擎的計算機(jī)可讀介質(zhì)。這些資源文件每個包含一個或多個標(biāo)記資源,并具有為其分配的名字空間。這些資源文件根據(jù)所分配的名字空間來加以分組。該標(biāo)記引擎調(diào)用一組資源文件,作為所選擇的名字空間的功能;并在被調(diào)用的這組資源文件中搜索將要被安裝在該軟件產(chǎn)品內(nèi)的標(biāo)記資源中的一個或多個標(biāo)記資源。
給軟件產(chǎn)品打上標(biāo)記的另一種方法包括為多個資源文件中的每個資源文件分配名字空間;并在這每一個資源文件中嵌入識別這些資源文件中所包含的標(biāo)記資源的元數(shù)據(jù)。該方法也包括執(zhí)行界面,以調(diào)用這些資源文件中的至少一個資源文件,作為所選擇的名字空間的功能;并且根據(jù)該嵌入式元數(shù)據(jù),在被調(diào)用的資源文件中搜索將要被安裝在該軟件產(chǎn)品內(nèi)的標(biāo)記資源中的一個或多個標(biāo)記資源。
具有用于執(zhí)行各種標(biāo)記方法的計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì)具體表現(xiàn)本發(fā)明的另外的各個方面。
作為選擇,本發(fā)明可以包括各種其他的方法和裝置。
其他特點將部分顯而易見,部分在下文中指出。


圖1是框圖,展示了根據(jù)本發(fā)明的實施例的示范計算機(jī)。
圖2是示范框圖,展示了圖1中的部件和對應(yīng)的清單。
圖3至圖7展示了根據(jù)本發(fā)明的實施例的示范的部件定義模式。
圖8是具體表現(xiàn)本發(fā)明的各個方面的標(biāo)記構(gòu)架的框圖。
圖9是示范流程圖,展示了根據(jù)本發(fā)明的一個實施例的工藝流程。
圖10展示了根據(jù)本發(fā)明的實施例的示范設(shè)計過程,用于選擇將要被包括在軟件產(chǎn)品中的部件。
圖11展示了根據(jù)本發(fā)明的實施例的示范的編程對象模型。
圖12是框圖,展示了用于給軟件產(chǎn)品打上標(biāo)記的示范的部件從屬性。
圖13是框圖,展示了用于圖3-8中的部件定義模式的示范的部件化(componentization)體系結(jié)構(gòu)。
圖14是框圖,展示了圖1使用的計算機(jī)的示范部件。
對應(yīng)的參考字符指出貫穿這些附圖的對應(yīng)的部分。
具體實施例方式
現(xiàn)在參考這些附圖,圖1展示了根據(jù)本發(fā)明的某些實施例的示范計算設(shè)備150。計算設(shè)備150被展示為擁有軟件產(chǎn)品(例如,操作系統(tǒng)152,以及一個或多個應(yīng)用程序154)。操作系統(tǒng)152是用于計算設(shè)備150的基本軟件控制程序,可執(zhí)行各種功能,包括提供用戶界面;管理一個或多個應(yīng)用程序154的執(zhí)行;并控制數(shù)據(jù)從各種輸入/輸出(I/O)設(shè)備的輸入以及數(shù)據(jù)到各種輸入/輸出(I/O)設(shè)備的輸出。
在這個實例中,采取產(chǎn)品名稱、標(biāo)識語、位像或類似物形式的標(biāo)記信息出現(xiàn)在操作系統(tǒng)152的許多文件各處。通常在產(chǎn)品開發(fā)的關(guān)鍵階段進(jìn)行標(biāo)記更改;甚至在發(fā)行諸如操作系統(tǒng)等產(chǎn)品之后,也可繼續(xù)該標(biāo)記更改。這些階段包括內(nèi)部生產(chǎn)周期、β(外部)發(fā)行和最終的零售產(chǎn)品。本發(fā)明的實施例簡化了標(biāo)記元素由此被應(yīng)用于諸如操作系統(tǒng)152等軟件產(chǎn)品的過程。本發(fā)明在其他事物之中提供了一種全新的方法,用于處理產(chǎn)品標(biāo)記的每個方面。例如,本發(fā)明集中所有的標(biāo)記信息,因而允許通過在一處進(jìn)行一項更改(而不是貫穿任何給定的軟件產(chǎn)品來進(jìn)行無數(shù)的更改),來應(yīng)用標(biāo)記更改。而且,本發(fā)明的各個方面有益于已購買許可權(quán)來用其自己的標(biāo)記定制產(chǎn)品的第三方。如以下更詳細(xì)的描述,本發(fā)明的實施例將標(biāo)記信息裝入單一標(biāo)記部件,這使標(biāo)記與核心操作系統(tǒng)代碼分離。本發(fā)明的另外的各個方面利用部件化體系結(jié)構(gòu),用于將標(biāo)記元素應(yīng)用于軟件產(chǎn)品。
除了大量的文件以外,操作系統(tǒng)(例如,操作系統(tǒng)152)通常在文件之中具有大量的從屬性。例如,許多文件可能為將要執(zhí)行的其預(yù)定功能性而要求安裝一個或多個其他的文件。雖然該操作系統(tǒng)的制造商可能知道安裝時的這類從屬性,但是,對于用戶、管理員或其他軟件開發(fā)者而言,會很難了解這些從屬性。這會證明是很麻煩的,因為軟件開發(fā)者可能不知道其他文件中的什么數(shù)據(jù)或指令影響他們所關(guān)心的特定文件。同樣,對不正常工作的計算機(jī)進(jìn)行故障檢修的管理員或用戶在不了解這些從屬性的條件下可能不知道哪些文件適用于該問題。
精通該技術(shù)領(lǐng)域的人熟悉常規(guī)的操作系統(tǒng)——其中,服務(wù)器和客戶機(jī)OS產(chǎn)品從包含所有這些二進(jìn)制文件的巨大的中央文件中構(gòu)造而成。在一般整體式的常規(guī)操作系統(tǒng)的這個例子中,可執(zhí)行的設(shè)置必須規(guī)定哪些文件被包括在這些不同的產(chǎn)品中。這樣,很難理解每個產(chǎn)品的各個部分之間的關(guān)系。這種信息缺乏會妨礙在其生存期內(nèi)維修操作系統(tǒng)的各個部分的能力。換言之,對于開發(fā)者和其他人而言,更難以了解該操作系統(tǒng)的所有這些不同的模塊和文件,以確保隨著該操作系統(tǒng)變得更大、更復(fù)雜,它們將共同地和單獨地進(jìn)行適當(dāng)?shù)倪\(yùn)作。
舉例來講,特定的OS產(chǎn)品可能作為“家庭”版本而被出售,而具有附加特點的高級產(chǎn)品可能作為“專業(yè)”版本而被出售。在這個實例中,該家庭產(chǎn)品和專業(yè)產(chǎn)品將經(jīng)常包括不同的標(biāo)記信息,以及散布在構(gòu)成各自的產(chǎn)品的這許多二進(jìn)制文件各處的其他參考資料。遺憾的是,由于二進(jìn)制文件與這些標(biāo)記參考資料(必須為新產(chǎn)品更改其中的每一項)的存在之間的關(guān)系,產(chǎn)品的創(chuàng)建和維修非常費(fèi)力,并要求廣泛的測試。
可以用眾多不同的方式中的任何方式(例如,通過增加或替換一個或多個特定的二進(jìn)制文件、通過眾多不同的人中的任何人(例如,用戶、管理員、除該操作系統(tǒng)開發(fā)者以外的軟件開發(fā)者等))來修改(例如,更新或維修)該操作系統(tǒng)。當(dāng)進(jìn)行這類修改時,會增加識別存在于該計算機(jī)上的文件之中的從屬性的難度。例如,更改單一文件可能會迫使更改其他的從屬文件。另外,更難以對不正常工作的計算機(jī)進(jìn)行故障檢修或更新該操作系統(tǒng),這是因為該用戶或管理員無法確切、容易地知道什么功能性被安裝在或應(yīng)該被安裝在該計算機(jī)上。
在圖1的所展示的實施例中,應(yīng)用程序154表現(xiàn)了可以在計算設(shè)備150上加以執(zhí)行的眾多不同的軟件應(yīng)用程序中的一個或多個軟件應(yīng)用程序。這類應(yīng)用程序154的例子包括教育程序、引用程序、生產(chǎn)率程序(例如,文字處理器、電子表格、數(shù)據(jù)庫)、娛樂程序、實用程序(例如,通信程序)等。應(yīng)用程序154可以由用戶安裝在計算設(shè)備150上,或者,作為選擇,可以由計算設(shè)備150的制造商和/或銷售者來預(yù)先安裝。
圖1中的操作系統(tǒng)152將其功能性分成多個部件156(例如,所展示的實施例中的部件#1至部件#N(也見圖2和圖3))。每個部件156分別具有對應(yīng)的清單158(例如,清單#1至清單#N)。部件156包括一個或多個文件(或文件標(biāo)識符)的收集。這些文件可能包括諸如可執(zhí)行文件、動態(tài)鏈接庫(DLL)或組件對象模塊(COM)等軟件指令。這些文件也可能包括供部件156中的一個或多個部件使用的數(shù)據(jù)。在一項實施中,與操作系統(tǒng)152的特定功能性相對應(yīng)的這些文件(例如,數(shù)據(jù)和/或指令)被共同分組在相同的部件156中。例如,可能有游戲部件、通信部件和文件系統(tǒng)部件。導(dǎo)致部件化的文件分組可能是靜態(tài)的,或者,作為選擇,可能隨時間的推移而變化。在一個例子中,對操作系統(tǒng)152進(jìn)行更新可能會導(dǎo)致除去從某些部件156中選擇的文件,并將這些文件加入其他部件156。
進(jìn)一步參考圖1,每個清單158包括描述對應(yīng)的部件156的信息。與對應(yīng)的部件156有關(guān)的眾多不同的元數(shù)據(jù)中的任何元數(shù)據(jù)可能被包括在每個清單158內(nèi)。在一項實施中,清單158識別對應(yīng)的部件156的版本,以及對應(yīng)的部件156依靠哪些其他的部件156(如果有的話)。舉例來講,為了使部件156中的一個或多個文件適當(dāng)?shù)貓?zhí)行,來自另一個部件的一個或多個其他的文件(例如,DLL文件)可能需要被安裝在計算設(shè)備150上。在這個例子中,清單158將會指出部件156依靠另一個部件。
由于現(xiàn)存的操作系統(tǒng)的復(fù)雜性和尺寸,越來越難以創(chuàng)建新產(chǎn)品,來滿足市場或競爭的需求。如今的操作系統(tǒng)本質(zhì)上更加整體式,因此,會很難理解各種組成部分之間的關(guān)系。由于缺乏該信息,因此,在該產(chǎn)品的生存期內(nèi)維修操作系統(tǒng)會十分困難。為了克服這些和其他的問題,本發(fā)明的實施例對該操作系統(tǒng)實行部件化。換言之,本發(fā)明允許將軟件產(chǎn)品表現(xiàn)為部件的收集。本發(fā)明的各個方面涉及被用來按部件化方法構(gòu)建操作系統(tǒng)的幾個抽象觀念,以促進(jìn)創(chuàng)建新產(chǎn)品和維修現(xiàn)存的產(chǎn)品??梢詫⑦@些抽象觀念應(yīng)用于包括應(yīng)用程序和任何操作系統(tǒng)的任何軟件產(chǎn)品。
示范的部件定義模式引入幾個抽象觀念,即部件(也被稱作“組合”)、種類、特點、程序包、產(chǎn)品和SKU(庫存單位)。在這個實例中,部件156表現(xiàn)銷售、維修和/或結(jié)合的可再用、可共享的自描述原子單位。描述該部件本身以及按公布方式被用于安裝、維修和/或結(jié)合到必要資源的所有有關(guān)的信息(即元數(shù)據(jù))的是最基本的抽象觀念。
如以下關(guān)于本發(fā)明的實施例的更詳細(xì)的描述,種類對象162(見圖4)表現(xiàn)用于為部件156的共同集合分組的機(jī)制;特點對象164(見圖5)表現(xiàn)部件156和/或特點164的構(gòu)成,并被用作用于創(chuàng)建產(chǎn)品對象166(見圖7)的構(gòu)件塊;并且,程序包對象168(見圖6)表現(xiàn)部件156、特點164、種類162和/或其他程序包168的構(gòu)成。舉例來講,出于管理的目的,使用程序包對象168來為部件156的集合分組。另外,這個實施例中的產(chǎn)品對象166表現(xiàn)特點164和/或部件156的最高級的構(gòu)成,SKU對象170(見圖7)表現(xiàn)關(guān)于產(chǎn)品166的運(yùn)輸機(jī)制(例如,一個SKU 170可能包含多個產(chǎn)品166)。
現(xiàn)在參考圖8,根據(jù)本發(fā)明的這些實施例的客戶機(jī)二進(jìn)制部件174利用標(biāo)記構(gòu)架,用于安裝、更新、修改并/或維修被應(yīng)用于該軟件產(chǎn)品的標(biāo)記資源。該標(biāo)記構(gòu)架將標(biāo)記并入單一位置,因此,包括標(biāo)記信息的所有產(chǎn)品將會受益。在這個實例中,這些標(biāo)記二進(jìn)制被分成兩個部分,即標(biāo)記引擎176和多個標(biāo)記資源文件178。標(biāo)記引擎176對資源文件178中所包含的標(biāo)記資源進(jìn)行存取。換言之,本發(fā)明的該標(biāo)記構(gòu)架利用標(biāo)記引擎176,來貫穿軟件產(chǎn)品而應(yīng)用標(biāo)記更改。該標(biāo)記構(gòu)架也支持將要按產(chǎn)品的需求來加以使用的自定義標(biāo)記部件(即資源)的創(chuàng)建,這些產(chǎn)品除(例如)諸如該OS商標(biāo)等更一般的商標(biāo)以外,還包含唯一的商標(biāo)元素。例如,每個標(biāo)記資源文件是純Win32_資源DLL或一個或多個標(biāo)記資源駐留在其中的其他應(yīng)用編程接口(API)。如上所述,標(biāo)記資源包括表示產(chǎn)品名稱、標(biāo)識語、位像和類似物的字符串和圖像。標(biāo)記資源文件178被分成各個名字空間,這些名字空間又被分類成各個部件。在本發(fā)明的一個實施例中,標(biāo)記引擎176的二進(jìn)制包含API,用于調(diào)用一組資源文件178(即部件),作為所選擇的名字空間的功能。根據(jù)所規(guī)定的名字空間,標(biāo)記引擎176在DLL中搜索所請求的標(biāo)記資源。有利的是,不需要安裝所有的標(biāo)記資源文件178。相反,本發(fā)明的這個實施例只安裝由被安裝的部件156要求的這些標(biāo)記部件。
對于發(fā)行的每個不同的SKU 170(例如,高級版本、家庭版本等)而言,也可能要求發(fā)行后的標(biāo)記更改。從長期來看,當(dāng)不需要改變該商標(biāo)時,本發(fā)明的該標(biāo)記構(gòu)架允許利用相同的二進(jìn)制文件來維修所有的SKU 170。也可理解維修包、QFE發(fā)行和類似物是商標(biāo)不可知論的。
進(jìn)一步參考包含該API接口的二進(jìn)制,標(biāo)記引擎176知道在哪個DLL中尋找使用所規(guī)定的名字空間的請求資源。以下是標(biāo)記引擎176的未管理的API的例子INT BrandLoadString(LPCTSTR NameSpace,//包含所請求的資源
INT Id,LPTSTR緩沖器,INT尺寸的該標(biāo)記(子)部件的名字空間);與Win32 SDK API LoadingString相同的行為。
HANDLE BrandLoadImage(LPCTSTR NameSpace,//包含所請求的資源LPCTSTRIpszName,//將要裝載的圖像UINTuType,//圖像類型,因為現(xiàn)在將只支持IMAGE_BITMAPintcxDesired,//所需寬度int intcvDesired,//所需高度int UINTfuLoad//裝載選項的該標(biāo)記(子)部件的名字空間);與Win32 SDK API LoadImage相同的行為。該調(diào)用者必須破壞被返回的對象(與利用LoadImage相同)。
HBITMAP BrandingLoadBitmap(LPCTSTR NameSpace,LPCTSTRIpszName)與Win32 SDK API LoadBitmap相同的行為。該調(diào)用者必須破壞被返回的對象(與利用LoadBitmap相同)。
HCURSOR WINAPI BrandingLoadCursor(LPCTSTR NameSpace,LPCTSTRIpszName)與Win32 SDK API LoadCursor相同的行為。該調(diào)用者必須破壞被返回的對象(與利用LoadCursor相同)。
HICON WINAPI BrandingLoadIcon(LPCTSTR NameSpace,LPCTSTRIpszName)與Win32 SDK API LoadIcon相同的行為。該調(diào)用者必須破壞被返回的對象(與利用LoadIcon相同)。
標(biāo)記引擎176使用這個實施例中的NameSpace參數(shù)來發(fā)現(xiàn)該標(biāo)記部件(即資源DLL 178)。例如,見以下的該標(biāo)記資源。
“助手API,”LPTSTR BrandingFormatString(LPCTSTR inString)表現(xiàn)示范的標(biāo)記資源文件178。該助手API被用于包含產(chǎn)品名稱的消息。該調(diào)用者所傳入的那個字符串可能包含關(guān)于這些產(chǎn)品名稱的可代替的參數(shù)。以下是示范的產(chǎn)品名稱參數(shù)關(guān)于類屬產(chǎn)品名稱的%WINDOWS_GENERIC%(IDS_WINDOWS_GENERIC);關(guān)于簡短的產(chǎn)品名稱的%WINDOWS_SHORT%
(IDS_WINDOWS_SHORT,例如Windows XP_操作系統(tǒng));關(guān)于長的產(chǎn)品名稱的%WINDOWS_LONG%(IDS_WINDWOS_LONG,例如Windows XP_家庭版本操作系統(tǒng));關(guān)于SKU名稱的%WINDOWS_PRODUCT%(IDS_WINDOWS_PRODUCT,例如專業(yè)的);關(guān)于版權(quán)字符串的%WINDOWS_COPYRIGHT%(IDS_WINDOWS_COPYRIGHT,例如版權(quán)_1983-2003微軟公司);關(guān)于微軟公司名稱的%MICROSOFT_COMPANYNAME%(IDS_MICROSOFT_COMPANY,例如微軟);關(guān)于版本年份的%WINDOWS_VERSION%(IDS_WINDOWS_VERSION,例如版本2003)。
這個例子中的該功能用該對應(yīng)的產(chǎn)品字符串來替換這些參數(shù),并返回這個新的字符串。例如,在該字符串上執(zhí)行GlobalAlloc功能。該調(diào)用者使用GlobalFree來釋放該字符串。沒有觸及該輸入串。任何其他可代替的參數(shù)(例如,%Id(關(guān)于sprintf)或%1!Id!(關(guān)于FormatMessage))保持“按現(xiàn)狀”。在調(diào)入BrandingFormatString之前或之后,該調(diào)用者可以調(diào)用他/她喜歡的功能來替換那些。作為選擇,該調(diào)用者可以調(diào)用BrandingLoadString來獲得這些產(chǎn)品字符串,然后將它們傳遞到他/她喜歡的功能。BrandingFormatString只是為方便標(biāo)記引擎176的用戶而提供的助手API。
以下是輸入串的例子“%WINDOWS_LONG%是最佳產(chǎn)品”。如果該計算機(jī)正在運(yùn)行Windows XP_家庭版本操作系統(tǒng),則該輸出將會是“WindowsXP_家庭版本是最佳產(chǎn)品”。
現(xiàn)在參考圖9,本發(fā)明的一個方面涉及諸如原始設(shè)備制造商(OEM)等第三方所實行的定制的標(biāo)記。標(biāo)記引擎176支持OEM自定義標(biāo)記,這由標(biāo)記資源DLL 178中所包含的可擴(kuò)展標(biāo)記語言(XML)文件來實現(xiàn)。該XML文件(也被稱作“標(biāo)記清單”)描述關(guān)聯(lián)的標(biāo)記資源DLL 178中所包含的這些資源。當(dāng)資源被加入該標(biāo)記資源DLL(即資源文件178)時,為這個(這些)新資源更新關(guān)于該DLL的XML數(shù)據(jù)。
在一個實施例中,該XML文件中的數(shù)據(jù)區(qū)之一指出OEM或其他的第三方是否會提供/重寫將要被安裝在該軟件產(chǎn)品內(nèi)的特定的標(biāo)記資源。舉例來講,該數(shù)據(jù)包含以下信息ResourceType、ResourceID和Overwrite。ResourceType通過類型來描述、識別該標(biāo)記資源(例如,字符串=6,位圖=2),而ResourceID提供標(biāo)識符。Overwrite(具有NO(“否”)的缺設(shè)值)指出是否允許第三方提供關(guān)于被識別的標(biāo)記信息的資源。此外,該清單也可以包括描述該資源的其他特征(例如,尺寸、長度、顏色、格式等)的嵌入式元數(shù)據(jù)。
在182處開始,圖9描述獲得第三方資源的過程。二進(jìn)制文件或其他文件(例如,部件156)首先請求標(biāo)記資源。有利的是,將標(biāo)記規(guī)則保持在這些資源本身內(nèi)可防止資源敗壞。該部件在184處調(diào)入標(biāo)記引擎176的標(biāo)記API。在這個例子中,使該標(biāo)記API(對于不同類型的資源而言可能是不同的)模仿Win32_未管理的API。將會理解該界面也會得到管理(例如,諸如利用.NET構(gòu)架)。
在186處,標(biāo)記引擎176根據(jù)(例如)名字空間和資源ID來核對標(biāo)記清單。所規(guī)定的名字空間映射到這個例子中的特殊的DLL。這時,標(biāo)記引擎176嘗試將該DLL定位在其集中的位置,并嘗試確定該DLL是否知道關(guān)于該請求資源的ID。在188處,標(biāo)記引擎176進(jìn)一步為取代指令而檢查該清單。隨著取代設(shè)置為NO(“否”)值,在190處返回該正規(guī)資源。另一方面,如果取代被設(shè)置為YES(“是”)值,則將允許第三方改變該軟件產(chǎn)品的可見外觀的某個方面。
進(jìn)行到192,標(biāo)記引擎176核對第三方取代DLL的存在。如以前,標(biāo)記引擎176根據(jù)關(guān)于該取代DLL的規(guī)定的名字空間,來搜索已知位置。如果該取代DLL不存在或沒有規(guī)定它想要取代該正規(guī)資源,則操作返回到190。如果該取代DLL可用,則在194處返回該第三方資源。
以下是該數(shù)據(jù)文件(即該標(biāo)記清單)的例子<標(biāo)記>
<資源ResourceType=”2”ResourceID=”100”重寫=”否”/>
<資源ResourceType=”2”ResourceID=”101”重寫=”否”/>
<資源ResourceType=”2”ResourceID=”110”重寫=”否”/>
<資源ResourceType=”2”ResourceID=”111”重寫=”否”/>
<資源ResourceType=”6”ResourceID=”10”重寫=”是”/>
<資源ResourceType=”6”ResourceID=”11”重寫=”是”/>
<資源ResourceType=”6”ResourceID=”12”重寫=”是”/>
<資源ResourceType=”6”ResourceID=”13”重寫=”是”/>
</標(biāo)記>
如果第一個實例中的該標(biāo)記資源DLL內(nèi)沒有提供資源,則要求以上數(shù)據(jù)文件內(nèi)的項目。但是,該資源可能由第三方提供,而不是在該標(biāo)記資源DLL中提供。例如,使用該數(shù)據(jù)文件中的項目來指出OEM/第三方可以重寫特定的資源(例如,Windows XP_操作系統(tǒng)的系統(tǒng)屬性頁上的OEM標(biāo)識語)。在這個例子中,如果該OEM選擇不提供該標(biāo)記資源,則該標(biāo)記資源DLL不需要具有默認(rèn)值。
也可以使用這里所描述的部件定義來概括地描述應(yīng)用部件,而不是明確地描述操作系統(tǒng)部件。換言之,可以使用這種部件定義來描述任何應(yīng)用程序。相應(yīng)地,可以將該標(biāo)記構(gòu)架應(yīng)用于任何操作系統(tǒng)、應(yīng)用程序或其他軟件產(chǎn)品。
這里所描述的部件化體系結(jié)構(gòu)定義用于在設(shè)計時間和運(yùn)行時間期間管理部件的這些概念、部件庫和編程模型。有幾個部件化的戰(zhàn)略好處敏捷、速度、承載能力和增加的收入機(jī)會。甚至跨越客戶機(jī)和服務(wù)器線路,創(chuàng)建新的軟件產(chǎn)品(由產(chǎn)品或SKU對象來表現(xiàn))也變得更加容易。這是一項相對較簡單的任務(wù)選擇正確的部件,并提供某種額外的配置,以制造新產(chǎn)品。若在相對較短的時間內(nèi)創(chuàng)建新產(chǎn)品具備敏捷靈活性,則能夠展開有效率的競爭,并可避免錯過市場機(jī)會。例如,可以提供額外的部件供以后加入當(dāng)前的產(chǎn)品,這允許客戶升級到高級產(chǎn)品,這增加了許可證的總數(shù),等等。所有這些額外的活動可能會帶來關(guān)于這些產(chǎn)品的額外收入。
部件化也促進(jìn)減少原始設(shè)備制造商(OEM)或公司必須保持的產(chǎn)品圖像數(shù)量,這可以節(jié)省大量的成本。根據(jù)本發(fā)明的至少一個實施例,大部分的該部件信息是公布性質(zhì)的,以便可以用離線的方式來安裝部件。這減少了將整個產(chǎn)品安裝到目標(biāo)設(shè)備上所花費(fèi)的時間,并可以為OEM、公司、最終用戶和類似方大大降低成本,提高客戶的滿意程度。
精通該技術(shù)領(lǐng)域的人認(rèn)識到作為該產(chǎn)品周期的一部分的服務(wù)的重要性。根據(jù)本發(fā)明的實施例來維修部件化產(chǎn)品相對較簡單,這是因為容易根據(jù)每個部件所提供的公布信息來評估這些變化的影響。也可以更容易地測試更加隔離的環(huán)境中的這些部件,以提高測試效率。這又降低了該軟件產(chǎn)品的總體脆性。
這里所描述的部件定義模式包括部件156描述的信息,以便安裝、升級服務(wù)并結(jié)合到合適的資源。在這點上,圖2展示了根據(jù)本發(fā)明的某些實施例的示范的部件156和對應(yīng)的清單158。根據(jù)本發(fā)明的實施例,每個部件156由對應(yīng)的清單158來表現(xiàn)。部件156包括至少一個文件174,并可能隨意地包括一個以上(n)的文件。雖然在圖2中被展示為文件,但是,作為選擇,部件156可能包括文件174(而不是實際文件)中的一個或多個文件的指針或其他標(biāo)識符。
部件156對應(yīng)于清單158。在所展示的例子中,清單158包括識別部件156(例如,通過名稱或某個其他的唯一標(biāo)識符)的部件標(biāo)識符。作為選擇,這種一致性可以用不同的方式(例如,將清單158的標(biāo)識符(未示出)包括在部件156中;將部件156和清單158(或其標(biāo)識符)存儲在數(shù)據(jù)結(jié)構(gòu)中,該數(shù)據(jù)結(jié)構(gòu)保持部件156與清單158之間的固有的一致性;等等)來保持。清單158可能是可擴(kuò)展標(biāo)記語言(XML)文檔。
如圖2中的示范清單所示,清單158也包括從屬部件清單,該從屬部件清單識別部件156所依靠的零個或多個部件。被識別的從屬部件是也需要作為該操作系統(tǒng)圖像的一部分來加以安裝以便使部件156適當(dāng)?shù)剡\(yùn)作的那些部件。在所展示的例子中,這些標(biāo)識符識別部件156適當(dāng)?shù)剡\(yùn)作所必要的部件,但作為選擇,這些標(biāo)識符可能包括應(yīng)該被包括在內(nèi)的部件(即,部件156喜歡擁有的、作為該操作系統(tǒng)的一部分但卻不是必要的部件)。除了本體和從屬性以外,這個例子中的清單156也描述部件156的許多其他的細(xì)節(jié),即通用信息(包括所有者、測試者、開發(fā)者、說明等)、文件、登記信息、設(shè)置(配置)、從屬關(guān)系和其他信息。
選擇性實施例中的清單158也可能包括優(yōu)先順序和版本指示器,以協(xié)助安裝和/或升級。
作為選擇,清單158中所保存的部分或全部的該信息可以被保存在不同的位置中。舉例來講,部分或全部的該信息可以被并入圖1中的部件156。
“附錄A”的例子進(jìn)一步展示了關(guān)于清單158的、本發(fā)明的各個方面。
下文進(jìn)一步提供了關(guān)于例示本發(fā)明的各個方面的部件化體系結(jié)構(gòu)中所使用的主要抽象觀念的細(xì)節(jié)。
如上所述,被稱作“部件156(或組合)”的對象表現(xiàn)銷售、維修和結(jié)合的可再用的或可共享的自描述原子單位。在圖3的實施例中,部件156可能依靠其他的部件156和/或特點164來運(yùn)行,即,它們展示出相對于這些其他的對象的從屬性。部件156也可能是不同的開放組(即種類162)的成員。在這個實例中,被稱作“本體”的開發(fā)者友好的、可擴(kuò)展的多部分屬性“bag”識別每個部件156。該部件本體具有以下特質(zhì),例如名稱、版本、處理器體系結(jié)構(gòu)、語言(例如,“us-eng”或“jpn”)、制造類型(例如,釋放或調(diào)試)和創(chuàng)辦者的標(biāo)識。該名稱特質(zhì)采取場所獨立字符串的形式,該場所獨立字符串描述一個實施例中的特定部件156。四部分版本號(一般遵循(例如)“major.minor.build.revision”格式)由該本體的版本特質(zhì)來提供。在該本體的創(chuàng)辦者的ID特質(zhì)中發(fā)現(xiàn)允許該部件本體安全的采用密碼方式的安全信息。
如上所示,每個部件156由一個或多個文件以及關(guān)聯(lián)的清單158構(gòu)成。如圖3所示,清單158描述部件156的細(xì)節(jié)。在圖3的實施例中,被稱作“部件”或“組合”的對象可能具有關(guān)于另一個部件156、種類162和/或特點164的從屬性。特別是,圖3表現(xiàn)了部件156可能依靠在零個或多個種類162、零個或多個特點164和/或零個或多個其他的部件156中發(fā)現(xiàn)的二進(jìn)制文件中的一個或多個二進(jìn)制文件。此外,部件156可能會宣布種類162中的從屬關(guān)系。
圖4所示的種類對象162定義開放組,在該開放組中,從屬關(guān)系信息的存在與該種類的成員有關(guān),而不是存在于種類清單中。例如,可以建立一個種類162,來為與文本編輯器(例如,Notepad和Wordpad)有關(guān)的一個或多個部件156分組。也使用與部件156的本體機(jī)制相類似的本體機(jī)制來識別種類162。在一個實施例中,種類162具有諸如本體、通用信息和其他信息等細(xì)節(jié)。
在圖4的示范的從屬關(guān)系圖表中,可以使用種類162來為零個或多個特點164、零個或多個部件156以及/或者零個或多個程序包168分組。如上所述,種類對象162表現(xiàn)了其他對象宣布其進(jìn)入其中的從屬關(guān)系的開放組。
現(xiàn)在參考圖5,特點對象164表現(xiàn)部件156和/或其他特點164的構(gòu)成。特點164被用作軟件產(chǎn)品構(gòu)件塊,并可以從安裝中被加入或除去。特點164具有關(guān)于部件156、其他特點164和種類162的包含的從屬關(guān)系,而不是依靠其他對象。換言之,特點164沒有根據(jù)這個實施例的從屬性。舉例來講,一個特點對象164表現(xiàn)合并的Web瀏覽器特點,另一個特點對象164表現(xiàn)媒體播放器應(yīng)用程序,這兩者都利用操作系統(tǒng)來加以運(yùn)輸。特點164包括本體、通用信息(例如,所有者、測試者、開發(fā)者、說明等)、從屬關(guān)系、構(gòu)成和其他信息。在本發(fā)明的一個實施例中,該特點本體類似于結(jié)構(gòu)中的部件本體,并被用來識別每個特點164。特點164可能是多個不同的種類162的成員(見圖4)。
圖5進(jìn)一步展示了特點164包括零個或多個其他的特點164和/或部件156;特點164可能會宣布種類162中的零個或多個種類內(nèi)的從屬關(guān)系。
圖6用圖解法展示了程序包對象168。如所示,程序包168是部件156、特點164、種類162和其他程序包168的合成物。與種類162對比,程序包168是封閉組。程序包168主要用于管理的目的。例如,OS的家庭版本可能利用“cab1”、“cab2”、“cab3”和“cab4”所指出的四個不同的程序包168來加以運(yùn)輸。這個例子中的程序包對象168是出于設(shè)置目的而形成的組。程序包168只規(guī)定圖6的實施例中的其他程序包168上的從屬性。根據(jù)這里所描述的部件化定義的每個程序包168包括諸如本體、通用信息、從屬關(guān)系、構(gòu)成、從屬性和其他信息等細(xì)節(jié)。
進(jìn)一步參考圖6,程序包168表現(xiàn)零個或多個其他的程序包168、種類162、特點164和/或部件156的分組。在這個實例中,程序包168可能屬于諸如種類162的開放組,也可能依靠諸如另一個程序包168的封閉組。
圖7中的產(chǎn)品對象166表現(xiàn)特點164和/或部件156的最高級的構(gòu)成。它也具有被用來配置組成的特點164和部件156的屬性。根據(jù)本發(fā)明的實施例,產(chǎn)品設(shè)計者為產(chǎn)品166選擇一個或多個特點164(見圖13)。產(chǎn)品對象166包含關(guān)于本體、通用信息、構(gòu)成和其他信息的細(xì)節(jié)。SKU對象170表現(xiàn)關(guān)于產(chǎn)品166的運(yùn)輸介質(zhì)(即,什么產(chǎn)品被包括在圓盤上供運(yùn)輸)。合適的運(yùn)輸介質(zhì)包括軟盤或光盤以及web下載柜文件。SKU 170也可能包括一個以上的產(chǎn)品164(見圖13)。本發(fā)明的至少一個實施例使用SKU設(shè)計者工具來生成SKU清單。與以上所描述的其他抽象觀念相類似的是,SKU 170包含本體、通用信息、產(chǎn)品和其他信息。
圖10提供了“為OS二進(jìn)制文件的各種部件156分組,以定義特點164”的例子。然后,為特點164分組,來定義產(chǎn)品166,它們又被包括在內(nèi),供利用SKU 170來運(yùn)輸。不同的計算機(jī)可能具有基于相同的操作系統(tǒng)的不同的操作系統(tǒng)圖像。例如,不同的OEM可能會用不同的方法來定制相同的操作系統(tǒng)(例如,以便該操作系統(tǒng)利用識別該OEM的初始屏幕來進(jìn)行引導(dǎo)、可能使用不同的默認(rèn)設(shè)置等)。不同的功能性也可能被包括在內(nèi)(例如,屏幕保護(hù)程序、背景或主題、諸如通信程序、游戲等軟件應(yīng)用程序)。這個附加的功能性可以由該OEM、或作為選擇由其他的制造商或銷售者來提供。這樣,許多不同的部件可能成為該操作系統(tǒng)的一部分,只有該操作系統(tǒng)的子集實際上被安裝在特定的計算機(jī)上,作為操作系統(tǒng)圖像。另一方面,OEM特定部件和清單集包括可以由該OEM作為該操作系統(tǒng)圖像的一部分來加以安裝的附加部件。
可以出于任何眾多不同的原因,來更新該操作系統(tǒng)。舉例來講,對某些部件的某些文件的故障修理可能可用,部件中的新的功能性(例如,替換或附加的文件)可能可用,新部件可能可用,等等。
此外,新部件可以與先前的部件一起作為該操作系統(tǒng)的一部分來加以安裝,而不是替換該先前的部件。這允許不同的應(yīng)用程序使用它們所喜歡的(或者被編程來使用的)該部件的任何一個版本。
舉例來講,OEM可以提供對應(yīng)于家庭運(yùn)用、商業(yè)運(yùn)用、服務(wù)器運(yùn)用等的各種基本的計算機(jī)配置。這個例子中的這些配置中的每一個配置都基于相同的操作系統(tǒng),但包括不同的功能性。附加的聯(lián)網(wǎng)和通信功能性可能被包括在服務(wù)器配置內(nèi),這是家庭或商業(yè)配置中所不包括的;并且,附加的游戲或音頻重放功能性可能被包括在家庭配置內(nèi),這是商業(yè)或服務(wù)器配置中所不包括的。圖10表現(xiàn)了包括基本家庭產(chǎn)品的示范的高級產(chǎn)品。
圖11表現(xiàn)了根據(jù)本發(fā)明的實施例的編程模型的第一層次抽象觀念。特別是,該示范圖表使用(例如)“統(tǒng)一模型建立語言”(UML)來展示不同的第一層次對象(或類)。在這個例子中,使用UML來向程序設(shè)計員揭露這些對象。這些界面中的每個界面直接映射到部件化的第一層次概念。
通過該操作系統(tǒng)的部件化,大大簡化了該操作系統(tǒng)安裝過程。通過包括這個合適的部件和對應(yīng)的清單,可以將OEM特定功能性容易地加入計算機(jī)。另外,通過只替換這些對應(yīng)的部件,為改善功能性而對該操作系統(tǒng)進(jìn)行更新、故障修理和類似的操作可以被容易地并入該安裝過程。作為選擇,包括這類更新的操作系統(tǒng)安裝站可能具備附加的更新部件和清單集。
現(xiàn)在參考本發(fā)明的該標(biāo)記構(gòu)架的另外的各個方面,在至少一個實施例中,內(nèi)部標(biāo)記情況一般基于手動過程。舉例來講,部件156可能被創(chuàng)造成包括產(chǎn)品標(biāo)記。這包括在其UI中清單產(chǎn)品標(biāo)記的部件156,以及除現(xiàn)存的類屬產(chǎn)品標(biāo)記元素以外沒有唯一的標(biāo)記UI的部件156。在這個實例中,該部件創(chuàng)造者允許部件156在該部件化過程期間的各個時刻(例如,規(guī)劃和實施)清單標(biāo)記。
例如,在規(guī)劃階段,部件156的創(chuàng)造者可以為標(biāo)記元素而檢驗其UI,并找到類屬產(chǎn)品標(biāo)記元素的幾個實例。如果該創(chuàng)造者沒有找到對于該特定部件而言是唯一的任何標(biāo)記,則他或她可以推斷出部件156可以使用標(biāo)記種類162中的現(xiàn)存的類屬產(chǎn)品標(biāo)記元素。在這個實例中,該創(chuàng)造者特別提到部件156將需要表達(dá)關(guān)于標(biāo)記引擎178 APIs的從屬性。
例如,在實施階段,該創(chuàng)造者發(fā)現(xiàn)標(biāo)記種類162內(nèi)的各種標(biāo)記資源,標(biāo)記種類162列出由標(biāo)記資源部件(DLLs)劃分的所有這些資源文件178。在替換方案中,該創(chuàng)造者可能可獲得所有標(biāo)記二進(jìn)制的根。在實施期間,該創(chuàng)造者從標(biāo)記種類162中選擇這些標(biāo)記資源部件,并為部件156而對該UI進(jìn)行編碼。這時,該創(chuàng)造者將從屬性從部件156加入該標(biāo)記API。在制造時間,所規(guī)定的標(biāo)記元素被顯示在該UI中。
在另一個實施例中,部件創(chuàng)造者可能要求唯一的或自定義的標(biāo)記元素,而不是要求類屬標(biāo)記(例如,關(guān)于高級產(chǎn)品)?,F(xiàn)在參考圖12,具體表現(xiàn)本發(fā)明的各個方面的該標(biāo)記構(gòu)架允許部件創(chuàng)造者規(guī)定對標(biāo)記引擎176的從屬性,用于創(chuàng)建具有自定義標(biāo)記元素的軟件產(chǎn)品。
圖13展示了用于本發(fā)明的示范的部件化體系結(jié)構(gòu)。圖13中所示的可擴(kuò)展體系結(jié)構(gòu)允許建立OS安裝(包括安裝和卸載部件),并啟用產(chǎn)品/SKU敏捷靈活性。而且,該體系結(jié)構(gòu)提供用于維修運(yùn)行的OS和OS圖像的基礎(chǔ)結(jié)構(gòu),提供OS部件目錄;并且依靠該被安裝的系統(tǒng)。該部件化體系結(jié)構(gòu)提供關(guān)于部件的創(chuàng)建和管理的概括的構(gòu)架。它也考慮到按類屬的方式從配置中建立運(yùn)行時間圖像。部件管理界面(CMI)是編程模型界面,它可以被不同的消費(fèi)者用來訪問該部件化體系結(jié)構(gòu)所揭露的功能性。這些工具一般可以被分成以下各個類設(shè)計時間工具;運(yùn)行時間工具;以及制造時間工具。設(shè)計時間工具是在設(shè)計時間被使用的工具(例如,設(shè)計或創(chuàng)建部件的部件設(shè)計者,以及設(shè)計或創(chuàng)建配置的目標(biāo)設(shè)計者)。運(yùn)行時間工具被用來管理運(yùn)行時間圖像上的現(xiàn)存的部件(安裝)。這可能包括諸如選項部件管理器(OCM)的功能性,它管理被安裝在系統(tǒng)上的這些部件。運(yùn)行時間工具的另一個例子可以是維修客戶機(jī),該維修客戶機(jī)與遠(yuǎn)程服務(wù)器對話來獲得部件更新,并更新被安裝在裝置上的這些部件。制造時間工具被用于制造實驗室中。它們主要被用來從配置中創(chuàng)建運(yùn)行時間圖像。
如圖13所示,CMI具有核心層和實用層。該CMI核心層包括一般被揭示為和用作眾所周知的界面的不同的功能塊。該層包括核心CMI對象模型、倉庫和文件庫、以及串行化器/解串器。為了方便編程,該核心CMI對象模型塊向CMI客戶機(jī)揭露作為界面的多個不同的第一類抽象觀念。它們一般用相對較容易使用的格式來反映部件化抽象觀念。例如,Iassembly使“部件”概念抽象化。這個實施例中的這些抽象觀念不具備與它們關(guān)聯(lián)的任何功能性。它們是可以通過這些抽象觀念上所揭露的各種方法來加以檢索和設(shè)置的特質(zhì)收集。以下的清單包括通過該核心CMI對象模型中的界面來加以揭露的部分抽象觀念I(lǐng)Assembly;IFeature;ICategory;IPackage;IProduct;ISku;IConfiguration;IRepository。
圖13的例子中的部件庫被用于管理存在于這些倉庫之一內(nèi)的部件。如上所述,每個部件具有元數(shù)據(jù)(即關(guān)于該數(shù)據(jù)的信息)和實際數(shù)據(jù)(即部件的文件)。元數(shù)據(jù)可通過元數(shù)據(jù)庫界面(IRepository)來存取,而數(shù)據(jù)可通過文件庫界面(IfileRepository)來存取。在一個實施例中,使用關(guān)系數(shù)據(jù)庫來執(zhí)行該元數(shù)據(jù)庫界面,以便存儲部件的元數(shù)據(jù)并將其編入索引中。該文件庫界面允許客戶機(jī)用一致的方法來接觸到該部件數(shù)據(jù)(文件)。
該部件元數(shù)據(jù)和數(shù)據(jù)界面在圖13中的部件庫界面下被分開,以慮及基于不同情況的不同的可插元數(shù)據(jù)庫實施。例如,在設(shè)計機(jī)器上可使用SQL元數(shù)據(jù)庫,因為可用的貯藏器和存儲器可能沒有受到約束,但在運(yùn)行時間系統(tǒng)上,元數(shù)據(jù)庫可能得到小型足跡數(shù)據(jù)庫(例如,登記處)的支持,以照顧到嚴(yán)厲的存儲要求。
串行化器和解串器界面允許CMI中的第一類對象被串行化為文本文件并從文本文件中被解串。例如,XML串行化器和解串器讀、寫XML文件。如以下所述,該串行化器和解串器一般讀出并寫出載體和配置。
用串行化格式攜帶任何第一類抽象觀念的這些文件被稱作“載體”或“清單”。這些載體提供填充該部件庫數(shù)據(jù)的方法,即,工具創(chuàng)建或編輯載體文件中的部件的串行化實例,并且,該部件庫界面考慮到該載體輸入該部件庫。
為信息交換而使用載體的主要優(yōu)點是它允許使這些工具與該部件庫分離。另一個優(yōu)點是在輸入載體信息的同時,可以用更一致的(或完整的)格式將該數(shù)據(jù)輸入該部件庫。該串行化器和解串器界面隔離也慮及將要被執(zhí)行的其他種類的載體(例如,INF)。
配置是該CMI的IConfiguration對象的串行化表示,它表現(xiàn)被用來建立運(yùn)行時間圖像的部件和設(shè)置的收集。在單獨的文件中而不是在載體文件中對配置實行串行化,這是因為無法將配置輸入該數(shù)據(jù)庫。
該CMI實用層包括頻繁變化的功能塊。在圖13的實施例中,這些功能塊被揭示為并被用作眾所周知的界面。該實用層包括關(guān)于安裝者、升級者、從屬性分解器、該CMI對象模型和客戶機(jī)的各個塊。安裝者塊具有用于安裝(或制造)和除去該核心層所揭露的特定的部件化抽象觀念的邏輯。例如,用在線或離線的方式從該OS安裝中安裝并除去IAssembly。安裝和除去組合的邏輯存在于這個塊中。使用“IInstallable”界面來安裝和除去所有這些核心抽象觀念。這些方法的實施為每個核心抽象觀念而改變。例如,關(guān)于組合,將會有被稱作“IAssemblyInstaller”的安裝者抽象觀念。IAssemblyInstaller聚集“IAssembly”界面,并執(zhí)行“IInstallable”,以安裝和卸載組合實例。
與核心抽象觀念結(jié)合的這種類型的特定功能性允許按需要來改變組合安裝邏輯的實施,而不會影響核心IAssembly界面。對于其他的核心抽象觀念而言,也是如此。
升級者塊具有用于使關(guān)于窗口安裝的特定核心抽象觀念升級和降級的邏輯。例如,按在線或離線的方式從該OS安裝中升級或降級IAssembly。使組合升級和降級的邏輯存在于這個塊中。使用“IUpgradable”界面來升級和降級所有這些核心抽象觀念。
對于每個核心抽象觀念,可分開執(zhí)行這些方法。由于在升級過程期間需要安裝和卸載功能性,因此,“IUpgradable”繼承“IInstallable”,以再使用現(xiàn)存的安裝和卸載功能性。例如,該組合具有被稱作“IAssemblyUpgrader”的升級者抽象觀念。IAssemblyUpgrader聚集“IAssembly”、“IAssemblyInstaller”,并執(zhí)行“IUpgradable”,以便使窗口安裝上的組合實例升級和降級。這種結(jié)合再次允許按需要來改變組合升級邏輯的實施,而不會影響該核心IAssembly界面和安裝或卸載邏輯。對于其他核心抽象觀念的升級功能性而言,也是如此。
從屬性分解器塊為特定的核心抽象觀念執(zhí)行從屬性分解邏輯。在這個實例中,關(guān)于每個核心抽象觀念,這個塊以自動化方式或手動方式而具有從屬性分解方面的邏輯。該從屬性分解器對于這些客戶程序而言是可擴(kuò)展的,以便按特定的客戶機(jī)上下文中的需要來擴(kuò)展默認(rèn)的從屬性分解功能性。這個塊的功能性通過“IDependencyResolver”界面來加以揭露。分解從屬性的這個方法根據(jù)它正被用于其中的情況來返回CMI對象或?qū)嵗龑ο蟮臉洹R话惆凑崭鶕?jù)本發(fā)明的至少一個實施例的配置或倉庫來完成從屬性分解。該倉庫可以是可安裝的或被安裝的倉庫。
通常,在運(yùn)行時間系統(tǒng)上,依照被安裝的倉庫和現(xiàn)存的配置來進(jìn)行從屬性分解;而在設(shè)計時間情況中,依照可安裝的倉庫和正在被編輯的當(dāng)前配置來進(jìn)行該從屬性分解。
該CMI對象模型是CMI核心對象模型和實用層中所揭露的不同的功能段的聚集形式。該核心CMI對象模型也被揭露出來,供創(chuàng)造工具直接處理這些抽象觀念,同時對這些載體(或清單)實行串行化和解串。
在以上的體系結(jié)構(gòu)中要注意的關(guān)鍵事物之一是為設(shè)計時間、運(yùn)行時間和制造時間情況有利地揭露相同的編程模型。這有助于使該對象模型在不同的要求方面保持一致,并有助于提高程序設(shè)計員的生產(chǎn)率。這也有助于再使用將要被用于不同情況(例如,設(shè)計和運(yùn)行時間)的CMI的單一實施,所以,與關(guān)于設(shè)計時間和運(yùn)行時間情況的不同實施相比較,更可維持。
圖14表現(xiàn)了采取計算機(jī)70形式的通用計算設(shè)備的一個例子。在本發(fā)明的一個實施例中,諸如計算機(jī)70的計算機(jī)適合用作計算機(jī)150。在所展示的實施例中,計算機(jī)70具有一個或多個處理器或處理單元72,以及系統(tǒng)存儲器74。在這個所展示的實施例中,系統(tǒng)總線76將包括系統(tǒng)存儲器74的各種系統(tǒng)部件耦合到處理器72??偩€76表現(xiàn)任何幾種類型的總線結(jié)構(gòu)(包括存儲總線或存儲控制器、外圍總線、加速圖形端口和使用各種總線構(gòu)造中的任何總線構(gòu)造的處理器或局域總線)中的一種或多種總線結(jié)構(gòu)。舉例來講(不作限制),這類結(jié)構(gòu)包括“工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)”(ISA)總線、“微通道結(jié)構(gòu)”(MCA)總線、“增強(qiáng)型ISA”(EISA)總線、“視頻電子標(biāo)準(zhǔn)協(xié)會”(VESA)局域總線和也被稱作“夾層(Mezzanine)總線”的“外圍部件互連”(PCI)總線。
計算機(jī)70通常至少具有某種形式的計算機(jī)可讀介質(zhì)。計算機(jī)可讀介質(zhì)(包括易失和非易失介質(zhì)、可移動和不可移動的介質(zhì))可能是可以由計算機(jī)70存取的任何可用介質(zhì)。舉例來講(不作限制),計算機(jī)可讀介質(zhì)包括計算機(jī)存儲介質(zhì)和通信介質(zhì)。計算機(jī)存儲介質(zhì)包括易失和非易失的可移動和不可移動的介質(zhì),該介質(zhì)用關(guān)于信息(例如,計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù))存儲的任何方法或技術(shù)來加以執(zhí)行。例如,計算機(jī)存儲介質(zhì)包括RAM、ROM、EEPROM、快閃存儲器或其他存儲技術(shù)、CD-ROM、數(shù)字通用光盤(DVD)或其他光盤存儲器、盒式磁帶、磁帶、磁盤存儲器或其他磁性存儲設(shè)備、或可以被用來存儲所需信息并可以由計算機(jī)70來存取的任何其他的介質(zhì)。通信介質(zhì)通常具體表現(xiàn)計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或調(diào)制數(shù)據(jù)信號(例如,載波或其他傳送機(jī)制)中的其他數(shù)據(jù),它包括任何信息傳遞介質(zhì)。精通該技術(shù)領(lǐng)域的人熟悉該調(diào)制數(shù)據(jù)信號,該調(diào)制數(shù)據(jù)信號的一個或多個特征按為該信號中的信息編碼這樣一種方式來加以設(shè)置或更改。有線介質(zhì)(例如,有線網(wǎng)絡(luò)或直線連接)和無線介質(zhì)(例如,聲音、RF、紅外線和其他無線介質(zhì))是通信介質(zhì)的例子。以上任何內(nèi)容的組合也被包括在計算機(jī)可讀介質(zhì)的范圍以內(nèi)。
系統(tǒng)存儲器74包括采取可移動和/或不可移動的易失和/或非易失存儲器形式的計算機(jī)存儲介質(zhì)。在所展示的實施例中,系統(tǒng)存儲器74包括只讀存儲器(ROM)78和隨機(jī)存取存儲器(RAM)80。基本輸入/輸出系統(tǒng)82(BIOS)通常被存儲在ROM 78中,該基本輸入/輸出系統(tǒng)包含有助于在計算機(jī)70內(nèi)的各個元件之間傳送信息(例如,在啟動期間)的這些基本例行程序。RAM 80通常包含可由處理單元72立即存取并且/或者目前正由處理單元72進(jìn)行操作的數(shù)據(jù)和/或程序模塊。舉例來講(不作限制),圖16展示了操作系統(tǒng)84、應(yīng)用程序86、其他程序模塊88和程序數(shù)據(jù)90。
計算機(jī)70也可能包括其他可移動/不可移動的易失/非易失計算機(jī)存儲介質(zhì)。例如,圖14展示了從不可移動的非易失磁性介質(zhì)讀取或?qū)ζ鋵懭氲挠脖P驅(qū)動器94。圖14也表現(xiàn)了從可移動的非易失磁盤98讀取或?qū)ζ鋵懭氲拇疟P驅(qū)動器96,以及從可移動的非易失光盤102(例如,CD-ROM或其他光學(xué)介質(zhì))讀取或?qū)ζ鋵懭氲墓獗P驅(qū)動器100??梢员挥糜谑痉恫僮鳝h(huán)境中的其他可移動/不可移動的易失/非易失計算機(jī)存儲介質(zhì)包括(但不局限于)卡型盒式磁帶機(jī)、快閃存儲卡、數(shù)字通用光盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM和類似的存儲介質(zhì)。硬盤驅(qū)動器84、磁盤驅(qū)動器96和光盤驅(qū)動器100通常由非易失存儲接口(例如,接口106)連接到系統(tǒng)總線76。
以上所討論的和圖14中所展示的這些驅(qū)動器或其他海量存儲設(shè)備及其關(guān)聯(lián)的計算機(jī)存儲介質(zhì)為計算機(jī)70提供了計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的存儲。在圖14中,例如,硬盤驅(qū)動器94被展示為存儲操作系統(tǒng)110、應(yīng)用程序112、其他程序模塊114和程序數(shù)據(jù)116。注意,這些部件可以等同于或不同于操作系統(tǒng)84、應(yīng)用程序86、其他程序模塊88和程序數(shù)據(jù)90。這里為操作系統(tǒng)110、應(yīng)用程序112、其他程序模塊114和程序數(shù)據(jù)116提供不同的號碼,以展示它們至少是不同的副本。
用戶可以通過輸入設(shè)備或用戶界面選擇設(shè)備(例如,鍵盤120和定點設(shè)備122(例如,鼠標(biāo)、跟蹤球、筆或觸墊)),來將命令和信息輸入計算機(jī)70。其他輸入設(shè)備(未示出)可能包括話筒、操縱桿、游戲墊、圓盤式衛(wèi)星電視天線、掃描儀或類似的輸入設(shè)備。這些和其他的輸入設(shè)備通過被耦合到系統(tǒng)總線76的用戶輸入接口124而與處理單元72連接,但也可以由其他的接口和總線結(jié)構(gòu)(例如,并行端口、游戲端口或通用串行總線(USB))來加以連接。監(jiān)視器128或其他類型的顯示設(shè)備也經(jīng)由接口(例如,視頻接口130)而連接到系統(tǒng)總線76。除監(jiān)視器128以外,計算機(jī)還經(jīng)常包括諸如打印機(jī)和揚(yáng)聲器等其他的外圍輸出設(shè)備(未示出),這些外圍輸出設(shè)備可以通過輸出外圍接口(未示出)來加以連接。
計算機(jī)70可以在使用與一臺或多臺遠(yuǎn)程計算機(jī)(例如,遠(yuǎn)程計算機(jī)134)的邏輯連接的聯(lián)網(wǎng)環(huán)境中進(jìn)行操作。遠(yuǎn)程計算機(jī)134可能是個人計算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他共同的網(wǎng)絡(luò)節(jié)點,它通常包括以上相對于計算機(jī)70而描述的許多或全部元件。圖16中所描繪的這些邏輯連接包括局域網(wǎng)(LAN)136和廣域網(wǎng)(WAN)138,但也可能包括其他網(wǎng)絡(luò)。LAN136和/或WAN 138可以是有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)、其組合等。這類聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍的計算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和全球計算機(jī)網(wǎng)絡(luò)(例如,因特網(wǎng))中很普遍。
當(dāng)被用于局域網(wǎng)環(huán)境中時,計算機(jī)70通過網(wǎng)絡(luò)接口或適配器140而連接到LAN 136。當(dāng)被用于廣域網(wǎng)環(huán)境中時,計算機(jī)70通常包括調(diào)制解調(diào)器142或用于在WAN 138(例如,因特網(wǎng))上建立通信的其他裝置。調(diào)制解調(diào)器142(可能是內(nèi)置的,也可能是外置的)經(jīng)由用戶輸入接口134或其他合適的機(jī)制而連接到系統(tǒng)總線76。在聯(lián)網(wǎng)環(huán)境中,相對于計算機(jī)70而描繪的程序模塊或其各個部分可以被存儲在遠(yuǎn)程記憶存儲設(shè)備(未示出)中。舉例來講(不作限制),圖14將遠(yuǎn)程應(yīng)用程序144展示為駐留在該存儲設(shè)備上。將會理解所示的這些網(wǎng)絡(luò)連接是起示范的作用,可以使用在這些計算機(jī)之間建立通信鏈路的其他方法。
通常,利用于不同的時間被存儲在計算機(jī)70的各種計算機(jī)可讀存儲介質(zhì)內(nèi)的指令,來對該計算機(jī)的這些數(shù)據(jù)處理器進(jìn)行編程。程序和操作系統(tǒng)通常被分布在(例如)軟盤或CD-ROM上。它們從那里被安裝入或載入計算機(jī)的輔助存儲器。在執(zhí)行時,它們至少被部分地載入該計算機(jī)的主電子存儲器。當(dāng)這類介質(zhì)包含用于結(jié)合微處理器或其他數(shù)據(jù)處理器來執(zhí)行這里所描述的步驟的指令或程序時,這里所描述的本發(fā)明包括這些和其他各種類型的計算機(jī)可讀存儲介質(zhì)。當(dāng)根據(jù)這里所描述的這些方法和技術(shù)來加以編程時,本發(fā)明也包括該計算機(jī)本身。
出于舉例說明的目的,程序和其他可執(zhí)行程序部件(例如,該操作系統(tǒng))在這里被展示為離散塊。但是,可認(rèn)識到這類程序和部件在各個不同的時間駐留在該計算機(jī)的不同的存儲部件中,并由該計算機(jī)的這個(這些)數(shù)據(jù)處理器來執(zhí)行。
雖然連同示范的計算機(jī)系統(tǒng)環(huán)境(包括計算機(jī)70)來加以描述,但是,本發(fā)明可用于眾多其他的通用或?qū)S糜嬎銠C(jī)系統(tǒng)環(huán)境或配置。該計算機(jī)系統(tǒng)環(huán)境并不意在對本發(fā)明的使用或功能性的范圍提出任何限制。而且,該計算機(jī)系統(tǒng)環(huán)境不應(yīng)該被解釋為具有涉及該示范操作環(huán)境中所展示的任何一個部件或部件組合的任何從屬性或要求。可能適用于本發(fā)明的眾所周知的計算機(jī)系統(tǒng)、環(huán)境和/或配置的例子包括(但不局限于)個人計算機(jī)、服務(wù)器計算機(jī)、手持設(shè)備或便攜式設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、包括移動電話的可編程消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機(jī)、大型計算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計算環(huán)境、以及類似物。
可以在由一臺或多臺計算機(jī)或其他設(shè)備執(zhí)行的計算機(jī)可執(zhí)行指令(例如,程序模塊)的一般上下文中描述本發(fā)明的實施例。通常,程序模塊包括(但不局限于)執(zhí)行特殊任務(wù)或?qū)嵤┨厥獾某橄髷?shù)據(jù)類型的例行程序、程序、對象、部件和數(shù)據(jù)結(jié)構(gòu)。本發(fā)明也可以在分布式計算環(huán)境中加以實踐,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括記憶存儲設(shè)備的本地計算機(jī)存儲介質(zhì)和遠(yuǎn)程計算機(jī)存儲介質(zhì)中。
在操作中,計算機(jī)70執(zhí)行計算機(jī)可執(zhí)行指令(例如,這里所描述的計算機(jī)可執(zhí)行指令),以便為資源文件178中的每個資源文件分配名字空間,并根據(jù)所分配的名字空間來對它們進(jìn)行分組。計算機(jī)70進(jìn)一步執(zhí)行界面,以調(diào)用一組資源文件,作為所選擇的名字空間的功能;并且在所調(diào)用的這個組中搜索將要被安裝在該軟件產(chǎn)品內(nèi)的這些標(biāo)記資源中的一個或多個標(biāo)記資源。在另一個實施例中,計算機(jī)70執(zhí)行計算機(jī)可執(zhí)行指令(例如,這里所描述的計算機(jī)可執(zhí)行指令),它們用于在資源文件178中的每個資源文件內(nèi)嵌入識別這些資源文件中所包含的標(biāo)記資源的元數(shù)據(jù)。在這個實例中,計算機(jī)70根據(jù)該嵌入式元數(shù)據(jù),在被調(diào)用的資源文件中搜索將要被安裝在該軟件產(chǎn)品內(nèi)的這些標(biāo)記資源中的一個或多個標(biāo)記資源。
精通該技術(shù)領(lǐng)域的人將會注意到除非另有規(guī)定,這里所展示和描述的這些方法的執(zhí)行或?qū)嵭许樞虿⒉恢匾R簿褪钦f,這些發(fā)明者預(yù)期除非另有規(guī)定,可以按任何順序來執(zhí)行這些方法的元素;并且,這些方法可能包括比這里所揭示的元素更多或更少的元素。
這個文檔中的信息(包括統(tǒng)一資源定位器和其他因特網(wǎng)web站點參考資料)在不預(yù)先通知的條件下經(jīng)歷變化。除非另外指出,這里所描繪的范例公司、組織、產(chǎn)品、域名、電子郵件地址、標(biāo)識語、人物、地點和事件都是虛構(gòu)的,沒有意指、也不應(yīng)該推斷與任何真實的公司、組織、產(chǎn)品、域名、電子郵件地址、標(biāo)識語、人物、地點或事件的關(guān)聯(lián)。
當(dāng)介紹本發(fā)明的元素或其各個實施例時,冠詞“a”、“an”、“the”和“said(所述)”意在意味著有這些元素中的一個或多個元素。術(shù)語“comprising(包括)”、“including(包括)”和“having(具有)”意在包含,并意味著可能有除所列出的元素以外的附加元素。
鑒于以上說明,將會看到本發(fā)明的幾個目的被實現(xiàn),并達(dá)到其他有利的結(jié)果。
由于在不脫離本發(fā)明的范圍的前提下可以在以上的構(gòu)造和方法中進(jìn)行各種更改,因此,上文所包含的和附圖所示的所有內(nèi)容將意在被解釋為起說明的作用,而不進(jìn)行限制。
附錄A數(shù)據(jù)存儲和格式創(chuàng)造工具創(chuàng)建該部件、特點、種類、程序包、產(chǎn)品和SKU。在這個例子中,它們在XML文件(被稱作“載體”或“清單”)中得到表現(xiàn)。每個載體只包含特點或種類或程序包或產(chǎn)品或SKU的一個實例。以下是記事本清單的例子<?xml版本=”1.0”編碼=”UTF-16”?>
<!--由vijayj(ms)利用XMLSPY v5 U(http//www.xmlspy.com)來編輯-->
<!--由Vijay Jayaseelan(ms)利用XML Spy v4.4 U(http//www.xmlspy.com)來編輯-->
<組合manifestVersion=”1.0”創(chuàng)造者=”vijayj”公司=”微軟”版權(quán)=”微軟”displayName=”記事本”lastUpdateTimeStamp=”2002-07-31T09:23:00”所有者=”無”發(fā)行=”假”測試者=”無”supportInformation=”http//www.microsoft.com”說明=”單一代碼和非單一代碼文本文件編輯器.”xmlns=”urnschemas-microsoft.comasm.v2”>
<assemblyIdentity名稱=”記事本”版本=”1.0.0.0”processorArchitecture=”x86”語言=”中立”buildType=”發(fā)行”/>
<從屬性>
<DependentCategory名稱=”記事本語言種類”版本=”1.0.0.0”processorArchitecture=”x86”語言=”*”buildType=”發(fā)行”選擇=”一”/>
</從屬性>
<從屬性>
<dependentAssembly>
<assemblyIdentity名稱=”Windows Shell”版本=”1.0.0.0”processorArchitecture=”x86”語言=”*”buildType=”發(fā)行”/>
</dependentAssembly>
</從屬性>
<文件名=”notepad.exe”sourcePath=”%NTTREE%\”/>
<從屬關(guān)系>
<categoryMembership名稱=”文本編輯器”版本=”1.0.0.0”processorArchitecture=”x86”語言=”*”buildType=”發(fā)行”/>
</從屬關(guān)系>
<registryKeys>
<registryKey keyName=”HKCU\記事本\設(shè)置\”/>
<registryKey keyName=”HKCU\記事本\設(shè)置\字體\”>
<registryValue名稱=”名稱”valueType=”REG_SZ”值=”Arial”/>
<registryValue名稱=”尺寸”valueType=”REG_DWORD”值=”10”/>
</registryKey>
</registryKeys>
<propertyTypes>
<propertyType名稱=”DefaultFont”valueType=”字符串”存?。健惫谩眗eadOnly=”假”值=”Arial”regularExpression=”(Arial)|(LucidaConsole)|(Courier)”>
<registryLocation keyName=”HKCU\記事本\設(shè)置\字體\”>
<registryValue名稱=”名稱”valueType=”REG_SZ”值=”Arial”/>
</registryLocation>
</propertyType></propertyTypes></組合>
權(quán)利要求
1.一種給軟件產(chǎn)品打上標(biāo)記的計算機(jī)化方法,其特征在于包括為多個資源文件中的每個資源文件分配名字空間,所述資源文件每個包含一個或多個標(biāo)記資源;根據(jù)所分配的名字空間來為這些資源文件分組;執(zhí)行界面,以調(diào)用一組資源文件,作為所選擇的名字空間的功能;以及,在被調(diào)用的這組資源文件中搜索將要被安裝在該軟件產(chǎn)品內(nèi)的這些標(biāo)記資源中的一個或多個標(biāo)記資源。
2.權(quán)利要求1的計算機(jī)化方法,其特征在于,分配這些名字空間包括識別這些資源文件內(nèi)所包含的標(biāo)記資源中的哪些標(biāo)記資源對應(yīng)于特殊的商標(biāo)。
3.權(quán)利要求1的計算機(jī)化方法,其特征在于,這些標(biāo)記資源中的至少一個標(biāo)記資源包括與該軟件產(chǎn)品關(guān)聯(lián)的圖像。
4.權(quán)利要求1的計算機(jī)化方法,其特征在于進(jìn)一步包括在這些資源文件中的每個資源文件內(nèi)嵌入識別那里所包含的這些標(biāo)記資源的元數(shù)據(jù);并且,其中,根據(jù)該嵌入式元數(shù)據(jù),在被調(diào)用的這組資源文件中搜索將要被安裝在該軟件產(chǎn)品內(nèi)的標(biāo)記資源。
5.權(quán)利要求1的計算機(jī)化方法,其特征在于,這些資源文件中的每個資源文件具有與之關(guān)聯(lián)的標(biāo)記清單;并且,進(jìn)一步包括利用該關(guān)聯(lián)的標(biāo)記清單來識別這些資源文件中的每個資源文件內(nèi)所包含的標(biāo)記資源。
6.權(quán)利要求5的計算機(jī)化方法,其特征在于,識別這些標(biāo)記資源包括利用該關(guān)聯(lián)的標(biāo)記清單,來為該資源文件內(nèi)所包含的這些標(biāo)記資源中的每個標(biāo)記資源指出資源類型。
7.權(quán)利要求5的計算機(jī)化方法,其特征在于進(jìn)一步包括將一個或多個標(biāo)記資源加入這些資源文件中的至少一個資源文件,并更新與之關(guān)聯(lián)的標(biāo)記清單。
8.權(quán)利要求1的計算機(jī)化方法,其特征在于,該接口是應(yīng)用編程接口。
9.權(quán)利要求1的計算機(jī)化方法,其特征在于,該軟件產(chǎn)品包括被組織到部件中的多個二進(jìn)制文件,所述部件中的每個部件具有與之關(guān)聯(lián)的部件清單,用于識別該部件并規(guī)定該部件的一個或多個從屬性,并且進(jìn)一步包括規(guī)定從至少一個所選擇的部件到該接口的從屬性,用于存取將要連同該所選擇的部件來加以安裝的這些標(biāo)記資源。
10.權(quán)利要求9的計算機(jī)化方法,其特征在于,規(guī)定從該所選擇的部件到該接口的這個從屬性包括規(guī)定該所選擇的名字空間,所述選擇的名字空間對應(yīng)于特殊的商標(biāo)。
11.權(quán)利要求10的計算機(jī)化方法其特征在于,規(guī)定該所選擇的名字空間包括規(guī)定與不同的特殊商標(biāo)相對應(yīng)的另一個名字空間,以修改該軟件產(chǎn)品的標(biāo)記。
12.權(quán)利要求1的計算機(jī)化方法,其特征在于,一個或多個計算機(jī)可讀介質(zhì)具有用于執(zhí)行權(quán)利要求1的計算機(jī)化方法的計算機(jī)可執(zhí)行指令。
13.一個或多個計算機(jī)可讀介質(zhì),其特征在于包括多個被中央存儲的資源文件,所述資源文件每個包含一個或多個標(biāo)記資源并具有為其分配的名字空間,所述資源文件進(jìn)一步根據(jù)所分配的名字空間來加以分組;以及,標(biāo)記引擎,用于調(diào)用一組資源文件,作為所選擇的名字空間的功能,并用于在被調(diào)用的這組資源文件中搜索將要被安裝在該軟件產(chǎn)品內(nèi)的這些標(biāo)記資源中的一個或多個標(biāo)記資源。
14.權(quán)利要求13的計算機(jī)可讀介質(zhì),其特征在于,這些標(biāo)記資源中的至少一個標(biāo)記資源包括與該軟件產(chǎn)品關(guān)聯(lián)的圖像。
15.權(quán)利要求13的計算機(jī)可讀介質(zhì),其特征在于,這些標(biāo)記資源中的至少一個標(biāo)記資源包括識別該軟件產(chǎn)品的字符串。
16.權(quán)利要求13的計算機(jī)可讀介質(zhì),其特征在于,這些資源文件中的每個資源文件包括識別那里所包含的這些標(biāo)記資源的嵌入式元數(shù)據(jù);并且,其中,該標(biāo)記引擎根據(jù)該嵌入式元數(shù)據(jù),在被調(diào)用的這組資源文件中搜索將要被安裝在該軟件產(chǎn)品內(nèi)的這些標(biāo)記資源。
17.權(quán)利要求16的計算機(jī)可讀介質(zhì),其特征在于,這些資源文件中的每個資源文件具有與之關(guān)聯(lián)的標(biāo)記清單,用于識別那里所包含的這些標(biāo)記資源。
18.權(quán)利要求16的計算機(jī)可讀介質(zhì),其特征在于,該標(biāo)記清單包括數(shù)據(jù)區(qū),用于為該資源文件內(nèi)所包含的這些標(biāo)記資源中的每個標(biāo)記資源指出資源類型。
19.權(quán)利要求13的計算機(jī)可讀介質(zhì),其特征在于,該標(biāo)記引擎包括應(yīng)用編程接口。
20.權(quán)利要求13的計算機(jī)可讀介質(zhì),其特征在于,這些資源文件中的每個資源文件包括動態(tài)鏈接庫。
全文摘要
一種標(biāo)記構(gòu)架,用于有效率地定位標(biāo)記資源,并將它們應(yīng)用于整個軟件產(chǎn)品中。被中央存儲的資源文件包含標(biāo)記資源,并具有為它們分配的名字空間。該構(gòu)架的標(biāo)記引擎調(diào)用一組資源文件,作為所選擇的名字空間的功能;并在被調(diào)用的這個組中搜索將要被安裝在該軟件產(chǎn)品內(nèi)的標(biāo)記資源。在一個實施例中,該標(biāo)記引擎根據(jù)被嵌入這些資源文件的該元數(shù)據(jù),來搜索這些被調(diào)用的資源文件。
文檔編號G06F9/44GK1607501SQ20041007692
公開日2005年4月20日 申請日期2004年9月2日 優(yōu)先權(quán)日2003年9月2日
發(fā)明者P·瓦斯曼, 宋亞, 信田有紀(jì), N·R·萊基特 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
神池县| 双鸭山市| 延津县| 石狮市| 凤山市| 搜索| 怀远县| 高州市| 舟曲县| 怀安县| 福鼎市| 柞水县| 永丰县| 贵阳市| 武山县| 洪泽县| 五常市| 崇义县| 聂拉木县| 民县| 贵港市| 平昌县| 萨迦县| 福贡县| 澄城县| 曲靖市| 青川县| 铜梁县| 中江县| 台山市| 家居| 新泰市| 芜湖市| 安宁市| 云南省| 四川省| 芷江| 敦化市| 台东市| 临武县| 绥芬河市|