CN100429619C - 用于给软件产品打上标记的方法和系统 - Google Patents

用于给软件产品打上标记的方法和系统 Download PDF

Info

Publication number
CN100429619C
CN100429619C CNB2004100769227A CN200410076922A CN100429619C CN 100429619 C CN100429619 C CN 100429619C CN B2004100769227 A CNB2004100769227 A CN B2004100769227A CN 200410076922 A CN200410076922 A CN 200410076922A CN 100429619 C CN100429619 C CN 100429619C
Authority
CN
China
Prior art keywords
parts
resource file
resource
markup resources
resources
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2004100769227A
Other languages
English (en)
Other versions
CN1607501A (zh
Inventor
P·瓦斯曼
宋亚
信田有纪
N·R·莱基特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1607501A publication Critical patent/CN1607501A/zh
Application granted granted Critical
Publication of CN100429619C publication Critical patent/CN100429619C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

一种标记构架,用于有效率地定位标记资源,并将它们应用于整个软件产品中。被中央存储的资源文件包含标记资源,并具有为它们分配的名字空间。该构架的标记引擎调用一组资源文件,作为所选择的名字空间的功能;并在被调用的这个组中搜索将要被安装在该软件产品内的标记资源。在一个实施例中,该标记引擎根据被嵌入这些资源文件的该元数据,来搜索这些被调用的资源文件。

Description

用于给软件产品打上标记的方法和系统
技术领域
本发明的实施例涉及软件体系结构的领域。特别是,本发明的实施例涉及关于软件产品(包括操作系统)的标记(branding)构架。
背景技术
随着软件产品变得更大、更复杂,越来越难以根据现存的软件产品来创建新产品,并按市场和竞争需求所要求的那样来维修这些产品。操作系统(OS)是相对较大、较复杂的软件产品的例子。
该操作系统管理并调度其所驻留的计算机或设备的各种资源,并提供各种功能模块和界面,应用程序可使用它们来完成各种任务。常规计算机一般在其运行时执行其操作系统,以管理该计算机的各个方面。例如,该操作系统通常负责管理对存储设备以及输入和/或输出设备的存取,并负责控制一个或多个附加的应用程序的执行。通常在该计算机执行该操作系统之前进行安装(例如,通过将多个文件从诸如CDROM等分布介质拷贝到该计算机的硬盘)。
常规操作系统具有关于指令和/或数据的大量文件(例如,数千个)。当被该计算机执行时,这类指令提供该操作系统的功能。通常,标记信息出现在该操作系统的许多文件各处,以便为用户提供协调一致的专业性用户经验。例如,该操作系统频繁地呈现其中出现产品名称、标识语、位图图像或类似物的用户界面。通常在产品开发的关键阶段进行标记更改;甚至在发行诸如操作系统等产品之后,也可继续该标记更改。这些阶段包括内部生产周期、β(外部)发行和最终的零售产品。
贯穿诸如操作系统等大型、复杂的软件产品而手动地应用始终如一的商标标识的过程往往既复杂、耗时,又容易出错。这至少部分归因于“发现并替换该产品中的每一个标记区域”这项困难的任务。手动标记过程特别成问题,因为:每次在产品周期内进行标记更改——当发行产品的不同版本时、当根据现存的产品来创建新产品时等,都必须对它进行重复。标记需要到处存在,这样,用于进行更改、测试这些更改并修理标记故障的常规过程对于大型软件产品而言会需要成千上万个小时。
当开发和更新产品时,很难知道其中出现标记信息的所有这些可能的区域是否正在进行适当的清单。标记中有可见的不一致性的产品是极其不合需要的。
相应地,需要一种标记构架,用于处理这些和其他的缺点中的一个或多个缺点,并允许在其他事物之中制造改进的操作系统和其他软件产品。
发明内容
本发明的实施例通过简化标记元素由此被应用于诸如操作系统等软件产品的过程,来克服原先技术中的一个或多个不足之处。本发明在其他事物之中提供了一种全新的方法,用于处理产品标记的每个方面。例如,本发明集中所有的标记信息,因而允许通过在一处进行一项更改(而不是贯穿任何给定的软件产品来进行无数的更改),来应用标记更改。而且,本发明的各个方面有益于已购买许可权来用其自己的标记定制产品的第三方。
在其至少一个实施例中,本发明将标记信息装入单一标记部件,这使标记与核心操作系统代码分离。本发明的另外的各个方面利用部件化(componentized)体系结构,用于将标记元素应用于软件产品。而且,这里所描述的本发明的各个特点执行起来比当前可用的技术更不费力、更加容易,并且具有经济可行性和商业实用性。
简而言之,具体表现本发明的各个方面的计算机化方法用于给软件产品打上标记的过程中。该方法包括:为多个资源文件中的每个资源文件分配名字空间。这些资源文件每个包含一个或多个标记资源。该方法也包括:根据这些所分配的名字空间,来为这些资源文件分组;执行界面,以调用一组资源文件,作为所选择的名字空间的功能。在被调用的这组资源文件中搜索将要被安装在该软件产品内的标记资源中的一个或多个标记资源。
本发明的另一个实施例涉及包括多个被中央存储的资源文件和标记引擎的计算机可读介质。这些资源文件每个包含一个或多个标记资源,并具有为其分配的名字空间。这些资源文件根据所分配的名字空间来加以分组。该标记引擎调用一组资源文件,作为所选择的名字空间的功能;并在被调用的这组资源文件中搜索将要被安装在该软件产品内的标记资源中的一个或多个标记资源。
给软件产品打上标记的另一种方法包括:为多个资源文件中的每个资源文件分配名字空间;并在这每一个资源文件中嵌入识别这些资源文件中所包含的标记资源的元数据。该方法也包括:执行界面,以调用这些资源文件中的至少一个资源文件,作为所选择的名字空间的功能;并且根据该嵌入式元数据,在被调用的资源文件中搜索将要被安装在该软件产品内的标记资源中的一个或多个标记资源。
具有用于执行各种标记方法的计算机可执行指令的计算机可读介质具体表现本发明的另外的各个方面。
作为选择,本发明可以包括各种其他的方法和装置。
其他特点将部分显而易见,部分在下文中指出。
附图说明
图1是框图,展示了根据本发明的实施例的示范计算机。
图2是示范框图,展示了图1中的部件和对应的清单。
图3至图7展示了根据本发明的实施例的示范的部件定义模式。
图8是具体表现本发明的各个方面的标记构架的框图。
图9是示范流程图,展示了根据本发明的一个实施例的工艺流程。
图10展示了根据本发明的实施例的示范设计过程,用于选择将要被包括在软件产品中的部件。
图11展示了根据本发明的实施例的示范的编程对象模型。
图12是框图,展示了用于给软件产品打上标记的示范的部件从属性。
图13是框图,展示了用于图3-8中的部件定义模式的示范的部件化(componentization)体系结构。
图14是框图,展示了图1使用的计算机的示范部件。
对应的参考字符指出贯穿这些附图的对应的部分。
具体实施方式
现在参考这些附图,图1展示了根据本发明的某些实施例的示范计算设备150。计算设备150被展示为拥有软件产品(例如,操作系统152,以及一个或多个应用程序154)。操作系统152是用于计算设备150的基本软件控制程序,可执行各种功能,包括:提供用户界面;管理一个或多个应用程序154的执行;并控制数据从各种输入/输出(I/O)设备的输入以及数据到各种输入/输出(I/O)设备的输出。
在这个实例中,采取产品名称、标识语、位图图像或类似物形式的标记信息出现在操作系统152的许多文件各处。通常在产品开发的关键阶段进行标记更改;甚至在发行诸如操作系统等产品之后,也可继续该标记更改。这些阶段包括内部生产周期、β(外部)发行和最终的零售产品。本发明的实施例简化了标记元素由此被应用于诸如操作系统152等软件产品的过程。本发明在其他事物之中提供了一种全新的方法,用于处理产品标记的每个方面。例如,本发明集中所有的标记信息,因而允许通过在一处进行一项更改(而不是贯穿任何给定的软件产品来进行无数的更改),来应用标记更改。而且,本发明的各个方面有益于已购买许可权来用其自己的标记定制产品的第三方。如以下更详细的描述,本发明的实施例将标记信息装入单一标记部件,这使标记与核心操作系统代码分离。本发明的另外的各个方面利用部件化体系结构,用于将标记元素应用于软件产品。
除了大量的文件以外,操作系统(例如,操作系统152)通常在文件之中具有大量的从属性。例如,许多文件可能为将要执行的其预定功能性而要求安装一个或多个其他的文件。虽然该操作系统的制造商可能知道安装时的这类从属性,但是,对于用户、管理员或其他软件开发者而言,会很难了解这些从属性。这会证明是很麻烦的,因为软件开发者可能不知道其他文件中的什么数据或指令影响他们所关心的特定文件。同样,对不正常工作的计算机进行故障检修的管理员或用户在不了解这些从属性的条件下可能不知道哪些文件适用于该问题。
精通该技术领域的人熟悉常规的操作系统——其中,服务器和客户机OS产品从包含所有这些二进制文件的巨大的中央文件中构造而成。在一般整体式的常规操作系统的这个例子中,可执行的设置必须规定哪些文件被包括在这些不同的产品中。这样,很难理解每个产品的各个部分之间的关系。这种信息缺乏会妨碍在其生存期内维修操作系统的各个部分的能力。换言之,对于开发者和其他人而言,更难以了解该操作系统的所有这些不同的模块和文件,以确保:随着该操作系统变得更大、更复杂,它们将共同地和单独地进行适当的运作。
举例来讲,特定的OS产品可能作为“家庭”版本而被出售,而具有附加特点的高级产品可能作为“专业”版本而被出售。在这个实例中,该家庭产品和专业产品将经常包括不同的标记信息,以及散布在构成各自的产品的这许多二进制文件各处的其他参考资料。遗憾的是,由于二进制文件与这些标记参考资料(必须为新产品更改其中的每一项)的存在之间的关系,产品的创建和维修非常费力,并要求广泛的测试。
可以用众多不同的方式中的任何方式(例如,通过增加或替换一个或多个特定的二进制文件、通过众多不同的人中的任何人(例如,用户、管理员、除该操作系统开发者以外的软件开发者等))来修改(例如,更新或维修)该操作系统。当进行这类修改时,会增加识别存在于该计算机上的文件之中的从属性的难度。例如,更改单一文件可能会迫使更改其他的从属文件。另外,更难以对不正常工作的计算机进行故障检修或更新该操作系统,这是因为该用户或管理员无法确切、容易地知道什么功能性被安装在或应该被安装在该计算机上。
在图1的所展示的实施例中,应用程序154表现了可以在计算设备150上加以执行的众多不同的软件应用程序中的一个或多个软件应用程序。这类应用程序154的例子包括教育程序、引用程序、生产率程序(例如,文字处理器、电子表格、数据库)、娱乐程序、实用程序(例如,通信程序)等。应用程序154可以由用户安装在计算设备150上,或者,作为选择,可以由计算设备150的制造商和/或销售者来预先安装。
图1中的操作系统152将其功能性分成多个部件156(例如,所展示的实施例中的部件#1至部件#N(也见图2和图3))。每个部件156分别具有对应的清单158(例如,清单#1至清单#N)。部件156包括一个或多个文件(或文件标识符)的收集。这些文件可能包括诸如可执行文件、动态链接库(DLL)或组件对象模块(COM)等软件指令。这些文件也可能包括供部件156中的一个或多个部件使用的数据。在一项实施中,与操作系统152的特定功能性相对应的这些文件(例如,数据和/或指令)被共同分组在相同的部件156中。例如,可能有游戏部件、通信部件和文件系统部件。导致部件化的文件分组可能是静态的,或者,作为选择,可能随时间的推移而变化。在一个例子中,对操作系统152进行更新可能会导致:除去从某些部件156中选择的文件,并将这些文件加入其他部件156。
进一步参考图1,每个清单158包括描述对应的部件156的信息。与对应的部件156有关的众多不同的元数据中的任何元数据可能被包括在每个清单158内。在一项实施中,清单158识别对应的部件156的版本,以及对应的部件156依靠哪些其他的部件156(如果有的话)。举例来讲,为了使部件156中的一个或多个文件适当地执行,来自另一个部件的一个或多个其他的文件(例如,DLL文件)可能需要被安装在计算设备150上。在这个例子中,清单158将会指出:部件156依靠另一个部件。
由于现存的操作系统的复杂性和尺寸,越来越难以创建新产品,来满足市场或竞争的需求。如今的操作系统本质上更加整体式,因此,会很难理解各种组成部分之间的关系。由于缺乏该信息,因此,在该产品的生存期内维修操作系统会十分困难。为了克服这些和其他的问题,本发明的实施例对该操作系统实行部件化。换言之,本发明允许将软件产品表现为部件的收集。本发明的各个方面涉及被用来按部件化方法构建操作系统的几个抽象观念,以促进创建新产品和维修现存的产品。可以将这些抽象观念应用于包括应用程序和任何操作系统的任何软件产品。
示范的部件定义模式引入几个抽象观念,即部件(也被称作“组合”)、种类、特点、程序包、产品和SKU(库存单位)。在这个实例中,部件156表现销售、维修和/或结合的可再用、可共享的自描述原子单位。描述该部件本身以及按公布方式被用于安装、维修和/或结合到必要资源的所有有关的信息(即元数据)的是最基本的抽象观念。
如以下关于本发明的实施例的更详细的描述,种类对象162(见图4)表现用于为部件156的共同集合分组的机制;特点对象164(见图5)表现部件156和/或特点164的构成,并被用作用于创建产品对象166(见图7)的构件块;并且,程序包对象168(见图6)表现部件156、特点164、种类162和/或其他程序包168的构成。举例来讲,出于管理的目的,使用程序包对象168来为部件156的集合分组。另外,这个实施例中的产品对象166表现特点164和/或部件156的最高级的构成,SKU对象170(见图7)表现关于产品166的运输机制(例如,一个SKU 170可能包含多个产品166)。
现在参考图8,根据本发明的这些实施例的客户机二进制部件174利用标记构架,用于安装、更新、修改并/或维修被应用于该软件产品的标记资源。该标记构架将标记并入单一位置,因此,包括标记信息的所有产品将会受益。在这个实例中,这些标记二进制被分成两个部分,即标记引擎176和多个标记资源文件178。标记引擎176对资源文件178中所包含的标记资源进行存取。换言之,本发明的该标记构架利用标记引擎176,来贯穿软件产品而应用标记更改。该标记构架也支持将要按产品的需求来加以使用的自定义标记部件(即资源)的创建,这些产品除(例如)诸如该OS商标等更一般的商标以外,还包含唯一的商标元素。例如,每个标记资源文件是纯
Figure C20041007692200101
资源DLL或一个或多个标记资源驻留在其中的其他应用编程接口(API)。如上所述,标记资源包括表示产品名称、标识语、位图图像和类似物的字符串和图像。
标记资源文件178被分成各个名字空间,这些名字空间又被分类成各个部件。在本发明的一个实施例中,标记引擎176的二进制包含API,用于调用一组资源文件178(即部件),作为所选择的名字空间的功能。根据所规定的名字空间,标记引擎176在DLL中搜索所请求的标记资源。有利的是,不需要安装所有的标记资源文件178。相反,本发明的这个实施例只安装由被安装的部件156要求的这些标记部件。
对于发行的每个不同的SKU 170(例如,高级版本、家庭版本等)而言,也可能要求发行后的标记更改。从长期来看,当不需要改变该商标时,本发明的该标记构架允许利用相同的二进制文件来维修所有的SKU 170。也可理解:维修包、QFE发行和类似物是商标不可知论的。
进一步参考包含该API接口的二进制,标记引擎176知道:在哪个DLL中寻找使用所规定的名字空间的请求资源。以下是标记引擎176的未管理的API的例子:
INT BrandLoadString(LPCTSTR NameSpace,//包含所请求的资源
INT Id,
LPTSTR缓冲器,
INT尺寸
的该标记(子)部件的名字空间);
与Win32SDK API LoadingString相同的行为。
HANDLE BrandLoadImage(LPCTSTR NameSpace,//包含所请求的资源LPCTSTR IpszName//将要装载的图像
UINT uType,//图像类型,因为现在将只支持IMAGE_BITMAP
int cxDesired,//所需宽度
int int cyDesired,//所需高度
int UINT fuLoad//装载选项
的该标记(子)部件的名字空间);
与Win32 SDK API LoadImage相同的行为。该调用者必须破坏被返回的对象(与利用LoadImage相同)。
HBITMAP BrandingLoadBitmap(LPCTSTR NameSpace,LPCTSTRIpszName)
与Win32 SDK API LoadBitmap相同的行为。该调用者必须破坏被返回的对象(与利用LoadBitmap相同)。
HCURSOR WINAPI BrandingLoadCursor(LPCTSTR NameSpace,LPCTSTRIpszName)
与Win32 SDK API LoadCursor相同的行为。该调用者必须破坏被返回的对象(与利用LoadCursor相同)。
HICON WINAPI BrandingLoadIcon(LPCTSTR NameSpace,LPCTSTRIpszName)
与Win32 SDK API LoadIcon相同的行为。该调用者必须破坏被返回的对象(与利用LoadIcon相同)。
标记引擎176使用这个实施例中的NameSpace参数来发现该标记部件(即资源DLL 178)。例如,见以下的该标记资源。
“助手API,”LPTSTR BrandingFormatString(LPCTSTR inString)表现示范的标记资源文件178。该助手API被用于包含产品名称的消息。该调用者所传入的那个字符串可能包含关于这些产品名称的可代替的参数。以下是示范的产品名称参数:
关于类属产品名称的%WINDOWS_GENERIC%
(IDS_WINDOWS_GENERIC);
关于简短的产品名称的%WINDOWS_SHORT%
(IDS_WINDOWS_SHORT,例如:Windows操作系统);
关于长的产品名称的%WINDOWS_LONG%
(IDS_WINDWOS_LONG,例如:Windows
Figure C20041007692200122
家庭版本操作系统);
关于SKU名称的%WINDOWS_PRODUCT%
(IDS_WINDOWS_PRODUCT,例如:专业的);
关于版权字符串的%WINDOWS_COPYRIGHT%
(IDS_WINDOWS_COPYRIGHT,例如:版权
Figure C20041007692200123
1983-2003微软公司);
关于微软公司名称的%MICROSOFT_COMPANYNAME%
(IDS_MICROSOFT_COMPANY,例如:微软);
关于版本年份的%WINDOWS_VERSION%
(IDS_WINDOWS_VERSION,例如:版本2003)。
这个例子中的该功能用该对应的产品字符串来替换这些参数,并返回这个新的字符串。例如,在该字符串上执行GlobalAlloc功能。该调用者使用GlobalFree来释放该字符串。没有触及该输入串。任何其他可代替的参数(例如,%Id(关于sprintf)或%1!Id!(关于FormatMessage))保持“按现状”。在调入BrandingFormatString之前或之后,该调用者可以调用他/她喜欢的功能来替换那些。作为选择,该调用者可以调用BrandingLoadString来获得这些产品字符串,然后将它们传递到他/她喜欢的功能。BrandingFormatString只是为方便标记引擎176的用户而提供的助手API。
以下是输入串的例子:“%WINDOWS_LONG%是最佳产品”。如果该计算机正在运行Windows
Figure C20041007692200124
家庭版本操作系统,则该输出将会是:“Windows
Figure C20041007692200125
家庭版本是最佳产品”。
现在参考图9,本发明的一个方面涉及诸如原始设备制造商(OEM)等第三方所实行的定制的标记。标记引擎176支持OEM自定义标记,这由标记资源DLL 178中所包含的可扩展标记语言(XML)文件来实现。该XML文件(也被称作“标记清单”)描述关联的标记资源DLL 178中所包含的这些资源。当资源被加入该标记资源DLL(即资源文件178)时,为这个(这些)新资源更新关于该DLL的XML数据。
在一个实施例中,该XML文件中的数据区之一指出:OEM或其他的第三方是否会提供/重写将要被安装在该软件产品内的特定的标记资源。举例来讲,该数据包含以下信息:ResourceType、ResourceID和Overwrite。ResourceType通过类型来描述、识别该标记资源(例如,字符串=6,位图=2),而ResourceID提供标识符。Overwrite(具有NO(“否”)的缺设值)指出:是否允许第三方提供关于被识别的标记信息的资源。此外,该清单也可以包括描述该资源的其他特征(例如,尺寸、长度、颜色、格式等)的嵌入式元数据。
在182处开始,图9描述获得第三方资源的过程。二进制文件或其他文件(例如,部件156)首先请求标记资源。有利的是,将标记规则保持在这些资源本身内可防止资源败坏。该部件在184处调入标记引擎176的标记API。在这个例子中,使该标记API(对于不同类型的资源而言可能是不同的)模仿
Figure C20041007692200131
未管理的API。将会理解:该界面也会得到管理(例如,诸如利用.NET构架)。
在186处,标记引擎176根据(例如)名字空间和资源ID来核对标记清单。所规定的名字空间映射到这个例子中的特殊的DLL。这时,标记引擎176尝试将该DLL定位在其集中的位置,并尝试确定该DLL是否知道关于该请求资源的ID。在188处,标记引擎176进一步为取代指令而检查该清单。随着取代设置为NO(“否”)值,在190处返回该正规资源。另一方面,如果取代被设置为YES(“是”)值,则将允许第三方改变该软件产品的可见外观的某个方面。
进行到192,标记引擎176核对第三方取代DLL的存在。如以前,标记引擎176根据关于该取代DLL的规定的名字空间,来搜索已知位置。如果该取代DLL不存在或没有规定它想要取代该正规资源,则操作返回到190。如果该取代DLL可用,则在194处返回该第三方资源。
以下是该数据文件(即该标记清单)的例子:
<标记>
   <资源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”重写=”是:”/>
</标记>
如果第一个实例中的该标记资源DLL内没有提供资源,则要求以上数据文件内的项目。但是,该资源可能由第三方提供,而不是在该标记资源DLL中提供。例如,使用该数据文件中的项目来指出:OEM/第三方可以重写特定的资源(例如,Windows
Figure C20041007692200132
操作系统的系统属性页上的OEM标识语)。在这个例子中,如果该OEM选择不提供该标记资源,则该标记资源DLL不需要具有默认值。
也可以使用这里所描述的部件定义来概括地描述应用部件,而不是明确地描述操作系统部件。换言之,可以使用这种部件定义来描述任何应用程序。相应地,可以将该标记构架应用于任何操作系统、应用程序或其他软件产品。
这里所描述的部件化体系结构定义用于在设计时间和运行时间期间管理部件的这些概念、部件库和编程模型。有几个部件化的战略好处:敏捷、速度、承载能力和增加的收入机会。甚至跨越客户机和服务器线路,创建新的软件产品(由产品或SKU对象来表现)也变得更加容易。这是一项相对较简单的任务:选择正确的部件,并提供某种额外的配置,以制造新产品。若在相对较短的时间内创建新产品具备敏捷灵活性,则能够展开有效率的竞争,并可避免错过市场机会。例如,可以提供额外的部件供以后加入当前的产品,这允许客户升级到高级产品,这增加了许可证的总数,等等。所有这些额外的活动可能会带来关于这些产品的额外收入。
部件化也促进减少原始设备制造商(OEM)或公司必须保持的产品图像数量,这可以节省大量的成本。根据本发明的至少一个实施例,大部分的该部件信息是公布性质的,以便可以用离线的方式来安装部件。这减少了将整个产品安装到目标设备上所花费的时间,并可以为OEM、公司、最终用户和类似方大大降低成本,提高客户的满意程度。
精通该技术领域的人认识到作为该产品周期的一部分的服务的重要性。根据本发明的实施例来维修部件化产品相对较简单,这是因为容易根据每个部件所提供的公布信息来评估这些变化的影响。也可以更容易地测试更加隔离的环境中的这些部件,以提高测试效率。这又降低了该软件产品的总体脆性。
这里所描述的部件定义模式包括部件156描述的信息,以便安装、升级服务并结合到合适的资源。在这点上,图2展示了根据本发明的某些实施例的示范的部件156和对应的清单158。根据本发明的实施例,每个部件156由对应的清单158来表现。部件156包括至少一个文件174,并可能随意地包括一个以上(n)的文件。虽然在图2中被展示为文件,但是,作为选择,部件156可能包括文件174(而不是实际文件)中的一个或多个文件的指针或其他标识符。
部件156对应于清单158。在所展示的例子中,清单158包括识别部件156(例如,通过名称或某个其他的唯一标识符)的部件标识符。作为选择,这种一致性可以用不同的方式(例如,将清单158的标识符(未示出)包括在部件156中;将部件156和清单158(或其标识符)存储在数据结构中,该数据结构保持部件156与清单158之间的固有的一致性;等等)来保持。清单158可能是可扩展标记语言(XML)文档。
如图2中的示范清单所示,清单158也包括从属部件清单,该从属部件清单识别部件156所依靠的零个或多个部件。被识别的从属部件是也需要作为该操作系统图像的一部分来加以安装以便使部件156适当地运作的那些部件。在所展示的例子中,这些标识符识别部件156适当地运作所必要的部件,但作为选择,这些标识符可能包括应该被包括在内的部件(即,部件156喜欢拥有的、作为该操作系统的一部分但却不是必要的部件)。除了本体和从属性以外,这个例子中的清单156也描述部件156的许多其他的细节,即通用信息(包括所有者、测试者、开发者、说明等)、文件、登记信息、设置(配置)、从属关系和其他信息。
选择性实施例中的清单158也可能包括优先顺序和版本指示器,以协助安装和/或升级。
作为选择,清单158中所保存的部分或全部的该信息可以被保存在不同的位置中。举例来讲,部分或全部的该信息可以被并入图1中的部件156。
“附录A”的例子进一步展示了关于清单158的、本发明的各个方面。
下文进一步提供了关于例示本发明的各个方面的部件化体系结构中所使用的主要抽象观念的细节。
如上所述,被称作“部件156(或组合)”的对象表现销售、维修和结合的可再用的或可共享的自描述原子单位。在图3的实施例中,部件156可能依靠其他的部件156和/或特点164来运行,即,它们展示出相对于这些其他的对象的从属性。部件156也可能是不同的开放组(即种类162)的成员。在这个实例中,被称作“本体”的开发者友好的、可扩展的多部分属性“bag”识别每个部件156。该部件本体具有以下特质,例如:名称、版本、处理器体系结构、语言(例如,“us-eng”或“jpn”)、制造类型(例如,释放或调试)和创办者的标识。该名称特质采取场所独立字符串的形式,该场所独立字符串描述一个实施例中的特定部件156。四部分版本号(一般遵循(例如)“major.minor.build.revision”格式)由该本体的版本特质来提供。在该本体的创办者的ID特质中发现允许该部件本体安全的采用密码方式的安全信息。
如上所示,每个部件156由一个或多个文件以及关联的清单158构成。如图3所示,清单158描述部件156的细节。在图3的实施例中,被称作“部件”或“组合”的对象可能具有关于另一个部件156、种类162和/或特点164的从属性。特别是,图3表现了:部件156可能依靠在零个或多个种类162、零个或多个特点164和/或零个或多个其他的部件156中发现的二进制文件中的一个或多个二进制文件。此外,部件156可能会宣布种类162中的从属关系。
图4所示的种类对象162定义开放组,在该开放组中,从属关系信息的存在与该种类的成员有关,而不是存在于种类清单中。例如,可以建立一个种类162,来为与文本编辑器(例如,Notepad和Wordpad)有关的一个或多个部件156分组。也使用与部件156的本体机制相类似的本体机制来识别种类162。在一个实施例中,种类162具有诸如本体、通用信息和其他信息等细节。
在图4的示范的从属关系图表中,可以使用种类162来为零个或多个特点164、零个或多个部件156以及/或者零个或多个程序包168分组。如上所述,种类对象162表现了其他对象宣布其进入其中的从属关系的开放组。
现在参考图5,特点对象164表现部件156和/或其他特点164的构成。特点164被用作软件产品构件块,并可以从安装中被加入或除去。特点164具有关于部件156、其他特点164和种类162的包含的从属关系,而不是依靠其他对象。换言之,特点164没有根据这个实施例的从属性。举例来讲,一个特点对象164表现合并的Web浏览器特点,另一个特点对象164表现媒体播放器应用程序,这两者都利用操作系统来加以运输。特点164包括本体、通用信息(例如,所有者、测试者、开发者、说明等)、从属关系、构成和其他信息。在本发明的一个实施例中,该特点本体类似于结构中的部件本体,并被用来识别每个特点164。特点164可能是多个不同的种类162的成员(见图4)。
图5进一步展示了:特点164包括零个或多个其他的特点164和/或部件156;特点164可能会宣布种类162中的零个或多个种类内的从属关系。
图6用图解法展示了程序包对象168。如所示,程序包168是部件156、特点164、种类162和其他程序包168的合成物。与种类162对比,程序包168是封闭组。程序包168主要用于管理的目的。例如,OS的家庭版本可能利用“cab1”、“cab2”、“cab3”和“cab4”所指出的四个不同的程序包168来加以运输。这个例子中的程序包对象168是出于设置目的而形成的组。程序包168只规定图6的实施例中的其他程序包168上的从属性。根据这里所描述的部件化定义的每个程序包168包括诸如本体、通用信息、从属关系、构成、从属性和其他信息等细节。
进一步参考图6,程序包168表现零个或多个其他的程序包168、种类162、特点164和/或部件156的分组。在这个实例中,程序包168可能属于诸如种类162的开放组,也可能依靠诸如另一个程序包168的封闭组。
图7中的产品对象166表现特点164和/或部件156的最高级的构成。它也具有被用来配置组成的特点164和部件156的属性。根据本发明的实施例,产品设计者为产品166选择一个或多个特点164(见图13)。产品对象166包含关于本体、通用信息、构成和其他信息的细节。SKU对象170表现关于产品166的运输介质(即,什么产品被包括在圆盘上供运输)。合适的运输介质包括软盘或光盘以及web下载柜文件。SKU 170也可能包括一个以上的产品164(见图13)。本发明的至少一个实施例使用SKU设计者工具来生成SKU清单。与以上所描述的其他抽象观念相类似的是,SKU 170包含本体、通用信息、产品和其他信息。
图10提供了“为OS二进制文件的各种部件156分组,以定义特点164”的例子。然后,为特点164分组,来定义产品166,它们又被包括在内,供利用SKU 170来运输。不同的计算机可能具有基于相同的操作系统的不同的操作系统图像。例如,不同的OEM可能会用不同的方法来定制相同的操作系统(例如,以便该操作系统利用识别该OEM的初始屏幕来进行引导、可能使用不同的默认设置等)。不同的功能性也可能被包括在内(例如,屏幕保护程序、背景或主题、诸如通信程序、游戏等软件应用程序)。这个附加的功能性可以由该OEM、或作为选择由其他的制造商或销售者来提供。这样,许多不同的部件可能成为该操作系统的一部分,只有该操作系统的子集实际上被安装在特定的计算机上,作为操作系统图像。另一方面,OEM特定部件和清单集包括可以由该OEM作为该操作系统图像的一部分来加以安装的附加部件。
可以出于任何众多不同的原因,来更新该操作系统。举例来讲,对某些部件的某些文件的故障修理可能可用,部件中的新的功能性(例如,替换或附加的文件)可能可用,新部件可能可用,等等。
此外,新部件可以与先前的部件一起作为该操作系统的一部分来加以安装,而不是替换该先前的部件。这允许不同的应用程序使用它们所喜欢的(或者被编程来使用的)该部件的任何一个版本。
举例来讲,OEM可以提供对应于家庭运用、商业运用、服务器运用等的各种基本的计算机配置。这个例子中的这些配置中的每一个配置都基于相同的操作系统,但包括不同的功能性。附加的联网和通信功能性可能被包括在服务器配置内,这是家庭或商业配置中所不包括的;并且,附加的游戏或音频重放功能性可能被包括在家庭配置内,这是商业或服务器配置中所不包括的。图10表现了包括基本家庭产品的示范的高级产品。
图11表现了根据本发明的实施例的编程模型的第一层次抽象观念。特别是,该示范图表使用(例如)“统一模型建立语言”(UML)来展示不同的第一层次对象(或类)。在这个例子中,使用UML来向程序设计员揭露这些对象。这些界面中的每个界面直接映射到部件化的第一层次概念。
通过该操作系统的部件化,大大简化了该操作系统安装过程。通过包括这个合适的部件和对应的清单,可以将OEM特定功能性容易地加入计算机。另外,通过只替换这些对应的部件,为改善功能性而对该操作系统进行更新、故障修理和类似的操作可以被容易地并入该安装过程。作为选择,包括这类更新的操作系统安装站可能具备附加的更新部件和清单集。
现在参考本发明的该标记构架的另外的各个方面,在至少一个实施例中,内部标记情况一般基于手动过程。举例来讲,部件156可能被创造成包括产品标记。这包括在其UI中清单产品标记的部件156,以及除现存的类属产品标记元素以外没有唯一的标记UI的部件156。在这个实例中,该部件创造者允许部件156在该部件化过程期间的各个时刻(例如,规划和实施)清单标记。
例如,在规划阶段,部件156的创造者可以为标记元素而检验其UI,并找到类属产品标记元素的几个实例。如果该创造者没有找到对于该特定部件而言是唯一的任何标记,则他或她可以推断出:部件156可以使用标记种类162中的现存的类属产品标记元素。在这个实例中,该创造者特别提到:部件156将需要表达关于标记引擎178APIs的从属性。
例如,在实施阶段,该创造者发现标记种类162内的各种标记资源,标记种类162列出由标记资源部件(DLLs)划分的所有这些资源文件178。在替换方案中,该创造者可能可获得所有标记二进制的根。在实施期间,该创造者从标记种类162中选择这些标记资源部件,并为部件156而对该UI进行编码。这时,该创造者将从属性从部件156加入该标记API。在制造时间,所规定的标记元素被显示在该UI中。
在另一个实施例中,部件创造者可能要求唯一的或自定义的标记元素,而不是要求类属标记(例如,关于高级产品)。现在参考图12,具体表现本发明的各个方面的该标记构架允许部件创造者规定对标记引擎176的从属性,用于创建具有自定义标记元素的软件产品。
图13展示了用于本发明的示范的部件化体系结构。图13中所示的可扩展体系结构允许建立OS安装(包括安装和卸载部件),并启用产品/SKU敏捷灵活性。而且,该体系结构提供用于维修运行的OS和OS图像的基础结构,提供OS部件目录;并且依靠该被安装的系统。该部件化体系结构提供关于部件的创建和管理的概括的构架。它也考虑到按类属的方式从配置中建立运行时间图像。部件管理界面(CMI)是编程模型界面,它可以被不同的消费者用来访问该部件化体系结构所揭露的功能性。这些工具一般可以被分成以下各个类:设计时间工具;运行时间工具;以及制造时间工具。设计时间工具是在设计时间被使用的工具(例如,设计或创建部件的部件设计者,以及设计或创建配置的目标设计者)。运行时间工具被用来管理运行时间图像上的现存的部件(安装)。这可能包括诸如选项部件管理器(OCM)的功能性,它管理被安装在系统上的这些部件。运行时间工具的另一个例子可以是维修客户机,该维修客户机与远程服务器对话来获得部件更新,并更新被安装在装置上的这些部件。制造时间工具被用于制造实验室中。它们主要被用来从配置中创建运行时间图像。
如图13所示,CMI具有核心层和实用层。该CMI核心层包括一般被揭示为和用作众所周知的界面的不同的功能块。该层包括核心CMI对象模型、仓库和文件库、以及串行化器/解串器。为了方便编程,该核心CMI对象模型块向CMI客户机揭露作为界面的多个不同的第一类抽象观念。它们一般用相对较容易使用的格式来反映部件化抽象观念。例如,Iassembly使“部件”概念抽象化。这个实施例中的这些抽象观念不具备与它们关联的任何功能性。它们是可以通过这些抽象观念上所揭露的各种方法来加以检索和设置的特质收集。以下的清单包括通过该核心CMI对象模型中的界面来加以揭露的部分抽象观念:IAssembly;IFeature;ICategory;IPackage;IProduct;ISku;IConfiguration;IRepository。
图13的例子中的部件库被用于管理存在于这些仓库之一内的部件。如上所述,每个部件具有元数据(即关于该数据的信息)和实际数据(即部件的文件)。元数据可通过元数据库界面(IRepository)来存取,而数据可通过文件库界面(IfileRepository)来存取。在一个实施例中,使用关系数据库来执行该元数据库界面,以便存储部件的元数据并将其编入索引中。该文件库界面允许客户机用一致的方法来接触到该部件数据(文件)。
该部件元数据和数据界面在图13中的部件库界面下被分开,以虑及基于不同情况的不同的可插元数据库实施。例如,在设计机器上可使用SQL元数据库,因为可用的贮藏器和存储器可能没有受到约束,但在运行时间系统上,元数据库可能得到小型足迹数据库(例如,登记处)的支持,以照顾到严厉的存储要求。
串行化器和解串器界面允许CMI中的第一类对象被串行化为文本文件并从文本文件中被解串。例如,XML串行化器和解串器读、写XML文件。如以下所述,该串行化器和解串器一般读出并写出载体和配置。
用串行化格式携带任何第一类抽象观念的这些文件被称作“载体”或“清单”。这些载体提供填充该部件库数据的方法,即,工具创建或编辑载体文件中的部件的串行化实例,并且,该部件库界面考虑到该载体输入该部件库。
为信息交换而使用载体的主要优点是:它允许使这些工具与该部件库分离。另一个优点是:在输入载体信息的同时,可以用更一致的(或完整的)格式将该数据输入该部件库。该串行化器和解串器界面隔离也虑及将要被执行的其他种类的载体(例如,INF)。
配置是该CMI的IConfiguration对象的串行化表示,它表现被用来建立运行时间图像的部件和设置的收集。在单独的文件中而不是在载体文件中对配置实行串行化,这是因为无法将配置输入该数据库。
该CMI实用层包括频繁变化的功能块。在图13的实施例中,这些功能块被揭示为并被用作众所周知的界面。该实用层包括关于安装者、升级者、从属性分解器、该CMI对象模型和客户机的各个块。安装者块具有用于安装(或制造)和除去该核心层所揭露的特定的部件化抽象观念的逻辑。例如,用在线或离线的方式从该OS安装中安装并除去IAssembly。安装和除去组合的逻辑存在于这个块中。使用“IInstallable”界面来安装和除去所有这些核心抽象观念。这些方法的实施为每个核心抽象观念而改变。例如,关于组合,将会有被称作“IAssemblyInstaller”的安装者抽象观念。IAssemblyInstaller聚集“IAssembly”界面,并执行“IInstallable”,以安装和卸载组合实例。
与核心抽象观念结合的这种类型的特定功能性允许按需要来改变组合安装逻辑的实施,而不会影响核心IAssembly界面。对于其他的核心抽象观念而言,也是如此。
升级者块具有用于使关于窗口安装的特定核心抽象观念升级和降级的逻辑。例如,按在线或离线的方式从该OS安装中升级或降级IAssembly。使组合升级和降级的逻辑存在于这个块中。使用“IUpgradable”界面来升级和降级所有这些核心抽象观念。
对于每个核心抽象观念,可分开执行这些方法。由于在升级过程期间需要安装和卸载功能性,因此,“IUpgradable”继承“IInstallable”,以再使用现存的安装和卸载功能性。例如,该组合具有被称作“IAssemblyUpgrader”的升级者抽象观念。IAssemblyUpgrader聚集“IAssembly”、“IAssemblyInstaller”,并执行“IUpgradable”,以便使窗口安装上的组合实例升级和降级。这种结合再次允许按需要来改变组合升级逻辑的实施,而不会影响该核心IAssembly界面和安装或卸载逻辑。对于其他核心抽象观念的升级功能性而言,也是如此。
从属性分解器块为特定的核心抽象观念执行从属性分解逻辑。在这个实例中,关于每个核心抽象观念,这个块以自动化方式或手动方式而具有从属性分解方面的逻辑。该从属性分解器对于这些客户程序而言是可扩展的,以便按特定的客户机上下文中的需要来扩展默认的从属性分解功能性。这个块的功能性通过“IDependencyResolver”界面来加以揭露。分解从属性的这个方法根据它正被用于其中的情况来返回CMI对象或实例对象的树。一般按照根据本发明的至少一个实施例的配置或仓库来完成从属性分解。该仓库可以是可安装的或被安装的仓库。
通常,在运行时间系统上,依照被安装的仓库和现存的配置来进行从属性分解;而在设计时间情况中,依照可安装的仓库和正在被编辑的当前配置来进行该从属性分解。
该CMI对象模型是CMI核心对象模型和实用层中所揭露的不同的功能段的聚集形式。该核心CMI对象模型也被揭露出来,供创造工具直接处理这些抽象观念,同时对这些载体(或清单)实行串行化和解串。
在以上的体系结构中要注意的关键事物之一是:为设计时间、运行时间和制造时间情况有利地揭露相同的编程模型。这有助于使该对象模型在不同的要求方面保持一致,并有助于提高程序设计员的生产率。这也有助于再使用将要被用于不同情况(例如,设计和运行时间)的CMI的单一实施,所以,与关于设计时间和运行时间情况的不同实施相比较,更可维持。
图14表现了采取计算机70形式的通用计算设备的一个例子。在本发明的一个实施例中,诸如计算机70的计算机适合用作计算机150。
在所展示的实施例中,计算机70具有一个或多个处理器或处理单元72,以及系统存储器74。在这个所展示的实施例中,系统总线76将包括系统存储器74的各种系统部件耦合到处理器72。总线76表现任何几种类型的总线结构(包括存储总线或存储控制器、外围总线、加速图形端口和使用各种总线构造中的任何总线构造的处理器或局域总线)中的一种或多种总线结构。举例来讲(不作限制),这类结构包括“工业标准结构”(ISA)总线、“微通道结构”(MCA)总线、“增强型ISA”(EISA)总线、“视频电子标准协会”(VESA)局域总线和也被称作“夹层(Mezzanine)总线”的“外围部件互连”(PCI)总线。
计算机70通常至少具有某种形式的计算机可读介质。计算机可读介质(包括易失和非易失介质、可移动和不可移动的介质)可能是可以由计算机70存取的任何可用介质。举例来讲(不作限制),计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括易失和非易失的可移动和不可移动的介质,该介质用关于信息(例如,计算机可读指令、数据结构、程序模块或其他数据)存储的任何方法或技术来加以执行。例如,计算机存储介质包括RAM、ROM、EEPROM、快闪存储器或其他存储技术、CD-ROM、数字通用光盘(DVD)或其他光盘存储器、盒式磁带、磁带、磁盘存储器或其他磁性存储设备、或可以被用来存储所需信息并可以由计算机70来存取的任何其他的介质。通信介质通常具体表现计算机可读指令、数据结构、程序模块或调制数据信号(例如,载波或其他传送机制)中的其他数据,它包括任何信息传递介质。精通该技术领域的人熟悉该调制数据信号,该调制数据信号的一个或多个特征按为该信号中的信息编码这样一种方式来加以设置或更改。有线介质(例如,有线网络或直线连接)和无线介质(例如,声音、RF、红外线和其他无线介质)是通信介质的例子。以上任何内容的组合也被包括在计算机可读介质的范围以内。
系统存储器74包括采取可移动和/或不可移动的易失和/或非易失存储器形式的计算机存储介质。在所展示的实施例中,系统存储器74包括只读存储器(ROM)78和随机存取存储器(RAM)80。基本输入/输出系统82(BIOS)通常被存储在ROM 78中,该基本输入/输出系统包含有助于在计算机70内的各个元件之间传送信息(例如,在启动期间)的这些基本例行程序。RAM 80通常包含可由处理单元72立即存取并且/或者目前正由处理单元72进行操作的数据和/或程序模块。举例来讲(不作限制),图16展示了操作系统84、应用程序86、其他程序模块88和程序数据90。
计算机70也可能包括其他可移动/不可移动的易失/非易失计算机存储介质。例如,图14展示了从不可移动的非易失磁性介质读取或对其写入的硬盘驱动器94。图14也表现了从可移动的非易失磁盘98读取或对其写入的磁盘驱动器96,以及从可移动的非易失光盘102(例如,CD-ROM或其他光学介质)读取或对其写入的光盘驱动器100。可以被用于示范操作环境中的其他可移动/不可移动的易失/非易失计算机存储介质包括(但不局限于)卡型盒式磁带机、快闪存储卡、数字通用光盘、数字录像带、固态RAM、固态ROM和类似的存储介质。硬盘驱动器84、磁盘驱动器96和光盘驱动器100通常由非易失存储接口(例如,接口106)连接到系统总线76。
以上所讨论的和图14中所展示的这些驱动器或其他海量存储设备及其关联的计算机存储介质为计算机70提供了计算机可读指令、数据结构、程序模块和其他数据的存储。在图14中,例如,硬盘驱动器94被展示为存储操作系统110、应用程序112、其他程序模块114和程序数据116。注意,这些部件可以等同于或不同于操作系统84、应用程序86、其他程序模块88和程序数据90。这里为操作系统110、应用程序112、其他程序模块114和程序数据116提供不同的号码,以展示:它们至少是不同的副本。
用户可以通过输入设备或用户界面选择设备(例如,键盘120和定点设备122(例如,鼠标、跟踪球、笔或触垫)),来将命令和信息输入计算机70。其他输入设备(未示出)可能包括话筒、操纵杆、游戏垫、圆盘式卫星电视天线、扫描仪或类似的输入设备。这些和其他的输入设备通过被耦合到系统总线76的用户输入接口124而与处理单元72连接,但也可以由其他的接口和总线结构(例如,并行端口、游戏端口或通用串行总线(USB))来加以连接。监视器128或其他类型的显示设备也经由接口(例如,视频接口130)而连接到系统总线76。除监视器128以外,计算机还经常包括诸如打印机和扬声器等其他的外围输出设备(未示出),这些外围输出设备可以通过输出外围接口(未示出)来加以连接。
计算机70可以在使用与一台或多台远程计算机(例如,远程计算机134)的逻辑连接的联网环境中进行操作。远程计算机134可能是个人计算机、服务器、路由器、网络PC、对等设备或其他共同的网络节点,它通常包括以上相对于计算机70而描述的许多或全部元件。图16中所描绘的这些逻辑连接包括局域网(LAN)136和广域网(WAN)138,但也可能包括其他网络。LAN136和/或WAN 138可以是有线网络、无线网络、其组合等。这类联网环境在办公室、企业范围的计算机网络、内联网和全球计算机网络(例如,因特网)中很普遍。
当被用于局域网环境中时,计算机70通过网络接口或适配器140而连接到LAN 136。当被用于广域网环境中时,计算机70通常包括调制解调器142或用于在WAN 138(例如,因特网)上建立通信的其他装置。调制解调器142(可能是内置的,也可能是外置的)经由用户输入接口134或其他合适的机制而连接到系统总线76。在联网环境中,相对于计算机70而描绘的程序模块或其各个部分可以被存储在远程记忆存储设备(未示出)中。举例来讲(不作限制),图14将远程应用程序144展示为驻留在该存储设备上。将会理解:所示的这些网络连接是起示范的作用,可以使用在这些计算机之间建立通信链路的其他方法。
通常,利用于不同的时间被存储在计算机70的各种计算机可读存储介质内的指令,来对该计算机的这些数据处理器进行编程。程序和操作系统通常被分布在(例如)软盘或CD-ROM上。它们从那里被安装入或载入计算机的辅助存储器。在执行时,它们至少被部分地载入该计算机的主电子存储器。当这类介质包含用于结合微处理器或其他数据处理器来执行这里所描述的步骤的指令或程序时,这里所描述的本发明包括这些和其他各种类型的计算机可读存储介质。当根据这里所描述的这些方法和技术来加以编程时,本发明也包括该计算机本身。
出于举例说明的目的,程序和其他可执行程序部件(例如,该操作系统)在这里被展示为离散块。但是,可认识到:这类程序和部件在各个不同的时间驻留在该计算机的不同的存储部件中,并由该计算机的这个(这些)数据处理器来执行。
虽然连同示范的计算机系统环境(包括计算机70)来加以描述,但是,本发明可用于众多其他的通用或专用计算机系统环境或配置。该计算机系统环境并不意在对本发明的使用或功能性的范围提出任何限制。而且,该计算机系统环境不应该被解释为具有涉及该示范操作环境中所展示的任何一个部件或部件组合的任何从属性或要求。可能适用于本发明的众所周知的计算机系统、环境和/或配置的例子包括(但不局限于)个人计算机、服务器计算机、手持设备或便携式设备、多处理器系统、基于微处理器的系统、置顶盒、包括移动电话的可编程消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境、以及类似物。
可以在由一台或多台计算机或其他设备执行的计算机可执行指令(例如,程序模块)的一般上下文中描述本发明的实施例。通常,程序模块包括(但不局限于)执行特殊任务或实施特殊的抽象数据类型的例行程序、程序、对象、部件和数据结构。本发明也可以在分布式计算环境中加以实践,在这些分布式计算环境中,由通过通信网络而连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括记忆存储设备的本地计算机存储介质和远程计算机存储介质中。
在操作中,计算机70执行计算机可执行指令(例如,这里所描述的计算机可执行指令),以便为资源文件178中的每个资源文件分配名字空间,并根据所分配的名字空间来对它们进行分组。计算机70进一步执行界面,以调用一组资源文件,作为所选择的名字空间的功能;并且在所调用的这个组中搜索将要被安装在该软件产品内的这些标记资源中的一个或多个标记资源。在另一个实施例中,计算机70执行计算机可执行指令(例如,这里所描述的计算机可执行指令),它们用于在资源文件178中的每个资源文件内嵌入识别这些资源文件中所包含的标记资源的元数据。在这个实例中,计算机70根据该嵌入式元数据,在被调用的资源文件中搜索将要被安装在该软件产品内的这些标记资源中的一个或多个标记资源。
精通该技术领域的人将会注意到:除非另有规定,这里所展示和描述的这些方法的执行或实行顺序并不重要。也就是说,这些发明者预期:除非另有规定,可以按任何顺序来执行这些方法的元素;并且,这些方法可能包括比这里所揭示的元素更多或更少的元素。
这个文档中的信息(包括统一资源定位器和其他因特网web站点参考资料)在不预先通知的条件下经历变化。除非另外指出,这里所描绘的范例公司、组织、产品、域名、电子邮件地址、标识语、人物、地点和事件都是虚构的,没有意指、也不应该推断与任何真实的公司、组织、产品、域名、电子邮件地址、标识语、人物、地点或事件的关联。
当介绍本发明的元素或其各个实施例时,冠词“a”、“an”、“the”和“said(所述)”意在意味着:有这些元素中的一个或多个元素。术语“comprising(包括)”、“including(包括)”和“having(具有)”意在包含,并意味着:可能有除所列出的元素以外的附加元素。
鉴于以上说明,将会看到:本发明的几个目的被实现,并达到其他有利的结果。
由于在不脱离本发明的范围的前提下可以在以上的构造和方法中进行各种更改,因此,上文所包含的和附图所示的所有内容将意在被解释为起说明的作用,而不进行限制。
附录A
数据存储和格式:创造工具创建该部件、特点、种类、程序包、产品和SKU。在这个例子中,它们在XML文件(被称作“载体”或“清单”)中得到表现。每个载体只包含特点或种类或程序包或产品或SKU的一个实例。以下是记事本清单的例子:
<?xml版本=”1.0”编码=”UTF-16”?>
<!--由vijayj(ms)利用XMLSPY v5U(http://www.xmlspy.com)来编辑-->
<!--由Vijay Jayaseelan(ms)利用XML Spy v4.4U(http://www.xmlspy.com)来编辑-->
<组合manifestVersion=”1.0”创造者=”vijayj”公司=”微软”
版权=”微软”displayName=”记事本”lastUpdateTimeStamp=”2002-07-31T09:23:00”所有者=”无”发行=”假”测试者=”无”
supportInformation=”http://www.microsoft.com”说明=”单一代码和非单一代码文本文件编辑器.”xmlns=”urn:schemas-microsoft.com:asm.v2”>
<assemblyIdentity名称=”记事本”版本=”1.0.0.0”
processorArchitecture=”x86”语言=”中立”buildType=”发行”/>
<从属性>
   <DependentCategory名称=”记事本语言种类”
版本=”1.0.0.0”processorArchitecture=”x86”语言=”*”buildType=”发行”
选择=”一”/>
</从属性>
<从属性>
   <dependentAssembly>
      <assemblyIdentity名称=”Windows Shell”版本=”1.0.0.0”
processorArchitecture=”x86”语言=”*”buildType=”发行”/>
   </dependentAssembly>
</从属性>
<文件名=”notepad.exe”sourcePath=”%_NTTREE%\”/>
<从属关系>
   <categoryMembership名称=”文本编辑器”版本=”1.0.0.0”
processorArchitecture=”x86”语言=”*”buildType=”发行”/>
</从属关系>
<registryKeys>
   <registryKey keyName=”HKCU\记事本\设置\”/>
   <registryKey keyName=”HKCU\记事本\设置\字体\”>
      <registryValue名称=”名称”valueType=”REG_SZ”
值=”Arial”/>
         <registryValue名称=”尺寸”valueType=”REG_DWORD”
值=”10”/>
      </registryKey>
</registryKeys>
<propertyTypes>
   <propertyType名称=”DefaultFont”valueType=”字符串”存取=”公用”
readOnly=”假”值=”Arial”regularExpression=”(Arial)|(LucidaConsole)|(Courier)”>
       <registryLocation keyName=”HKCU\记事本\设置\字体\”>
          <registryValue名称=”名称”valueType=”REG_SZ”
值=”Arial”/>
      </registryLocation>
   </propertyType>
</propertyTypes>
</组合>

Claims (19)

1.在使用部件化体系结构的标记构架中,一种给在计算机上安装的软件产品打上标记的计算机化方法,其中标记信息被封装到一单一标记部件中,其特征在于,所述计算机化方法包括:
为多个资源文件中的每个资源文件分配名字空间,所述资源文件每个包含一个或多个存储在所述计算机上的标记资源;
根据所分配的名字空间来为这些资源文件分组;
执行一接口,以调用在所述计算机上的一组资源文件,作为所选择的名字空间的功能;
基于所述所选择的名字空间,在所述计算机上的被调用的这组资源文件中搜索将要被安装在该软件产品内的这些标记资源中的一个或多个标记资源;以及
响应于所述搜索,在所述软件产品内安装包括所述一个或多个标记资源的被调用的这组资源文件。
2.权利要求1的计算机化方法,其特征在于,分配这些名字空间包括:识别这些资源文件内所包含的标记资源中的哪些标记资源对应于特殊的商标。
3.权利要求1的计算机化方法,其特征在于,这些标记资源中的至少一个标记资源包括与该软件产品关联的图像。
4.权利要求1的计算机化方法,其特征在于:进一步包括:在为多个资源文件中的每个资源文件分配名字空间后,在这些资源文件中的每个资源文件内嵌入识别其所包含的标记资源的元数据;并且,其中搜索所述计算机上的被调用的这组资源文件进一步包括根据该嵌入式元数据,在被调用的这组资源文件中搜索将要被安装在该软件产品内的标记资源。
5.权利要求1的计算机化方法,其特征在于,这些资源文件中的每个资源文件具有与之关联的标记清单;并且,进一步包括:基于所述被分配的名字空间,利用该关联的标记清单来识别这些资源文件中的每个资源文件内所包含的标记资源。
6.权利要求5的计算机化方法,其特征在于,识别这些标记资源包括:利用该关联的标记清单,来为该资源文件内所包含的这些标记资源中的每个标记资源指出资源类型。
7.权利要求5的计算机化方法,其特征在于:进一步包括:基于所述被分配的名字空间,将一个或多个其它标记资源加入这些资源文件中的至少一个资源文件,并更新与之关联的标记清单。
8.权利要求1的计算机化方法,其特征在于,该接口是应用编程接口。
9.权利要求1的计算机化方法,其特征在于,该软件产品包括被组织到部件中的多个二进制文件,所述部件中的每个部件具有与之关联的部件清单,用于识别该部件并规定该部件的一个或多个从属性,并且进一步包括:根据所述部件清单,规定从至少一个所选择的部件到该接口的从属性,用于存取将要连同该所选择的部件来加以安装的这些标记资源。
10.权利要求9的计算机化方法,其特征在于,规定从该所选择的部件到该接口的这个从属性包括:规定该所选择的名字空间,所述选择的名字空间对应于特殊的商标。
11.权利要求10的计算机化方法:其特征在于,规定该所选择的名字空间包括:规定与不同的特殊商标相对应的另一个名字空间,以修改该软件产品的标记。
12.一种使用部件化体系结构的标记构架系统,所述标记构架系统包括:根据分配给多个中央存储的资源文件中的每个资源文件的名字空间将所述多个中央存储的资源文件进行分组而形成的多个部件,其中所述多个中央存储的资源文件中的每个资源文件包含一个或多个标记资源;以及,
标记引擎,用于调用一组资源文件,作为所选择的名字空间的功能,并用于在被调用的这组资源文件中搜索将要被安装在该软件产品内的这些标记资源中的一个或多个标记资源。
13.权利要求12的标记构架系统,其特征在于,这些标记资源中的至少一个标记资源包括与该软件产品关联的图像。
14.权利要求12的标记构架系统,其特征在于,这些标记资源中的至少一个标记资源包括识别该软件产品的字符串。
15.权利要求12的标记构架系统,其特征在于,这些资源文件中的每个资源文件包括识别其所包含的所述一个或多个标记资源的嵌入式元数据;并且,其中,包括用于根据该嵌入式元数据,在被调用的这组资源文件中搜索将要被安装在该软件产品内的这些标记资源的装置。
16.权利要求15的标记构架系统,其特征在于,这些资源文件中的每个资源文件具有与之关联的标记清单,用于识别其所包含的这些标记资源。
17.权利要求16的标记构架系统,其特征在于,该标记清单包括数据字段,用于为该资源文件内所包含的这些标记资源中的每个标记资源指出资源类型。
18.权利要求12的标记构架系统,其特征在于,该接口包括应用编程接口。
19.权利要求12的标记构架系统,其特征在于,这些资源文件中的每个资源文件包括动态链接库。
CNB2004100769227A 2003-09-02 2004-09-02 用于给软件产品打上标记的方法和系统 Expired - Fee Related CN100429619C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/653,708 US20050050320A1 (en) 2003-09-02 2003-09-02 Branding framework
US10/653,708 2003-09-02

Publications (2)

Publication Number Publication Date
CN1607501A CN1607501A (zh) 2005-04-20
CN100429619C true CN100429619C (zh) 2008-10-29

Family

ID=34194677

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100769227A Expired - Fee Related CN100429619C (zh) 2003-09-02 2004-09-02 用于给软件产品打上标记的方法和系统

Country Status (5)

Country Link
US (1) US20050050320A1 (zh)
EP (1) EP1517235A3 (zh)
JP (1) JP2005078649A (zh)
KR (1) KR20050025269A (zh)
CN (1) CN100429619C (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8014321B2 (en) * 2004-10-22 2011-09-06 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US8095600B2 (en) * 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US8095601B2 (en) * 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US20060090003A1 (en) * 2004-10-22 2006-04-27 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US20080288659A1 (en) 2006-11-09 2008-11-20 Microsoft Corporation Maintaining consistency within a federation infrastructure
US8392515B2 (en) * 2004-10-22 2013-03-05 Microsoft Corporation Subfederation creation and maintenance in a federation infrastructure
US20110082928A1 (en) * 2004-10-22 2011-04-07 Microsoft Corporation Maintaining consistency within a federation infrastructure
US7958262B2 (en) 2004-10-22 2011-06-07 Microsoft Corporation Allocating and reclaiming resources within a rendezvous federation
US8549180B2 (en) * 2004-10-22 2013-10-01 Microsoft Corporation Optimizing access to federation infrastructure-based resources
CN100407204C (zh) * 2005-11-17 2008-07-30 腾讯科技(深圳)有限公司 一种标注计算机资源的方法及其系统
US8230354B2 (en) 2007-10-30 2012-07-24 Echoworx Corporation Method and system for providing dynamic branding in a computer program or suite
US20090193444A1 (en) * 2008-01-29 2009-07-30 Microsoft Corporation Techniques for creating and managing extensions
US8229980B2 (en) * 2008-04-30 2012-07-24 Microsoft Corporation State buckets
US20100088690A1 (en) * 2008-10-03 2010-04-08 Microsoft Corporation Replacing the identity of an activex control
US20100088689A1 (en) * 2008-10-03 2010-04-08 Microsoft Corporation Branding binary modules using resource patching
US20110055247A1 (en) * 2009-09-01 2011-03-03 Blumberg Brad W Provider-specific branding of generic mobile real estate search application
US10325226B2 (en) 2010-12-31 2019-06-18 Accenture Global Services Limited Brand impact verification system
US9015457B2 (en) * 2011-11-02 2015-04-21 Dell Products L.P. System and method for configuring an information handling system by implementing a customized configuration of a personality module
US9858063B2 (en) 2016-02-10 2018-01-02 Vignet Incorporated Publishing customized application modules
US9928230B1 (en) 2016-09-29 2018-03-27 Vignet Incorporated Variable and dynamic adjustments to electronic forms
CN106649488B (zh) * 2016-09-30 2020-05-05 广东网金数据服务有限公司 多数据源交互接口的调用方法及装置
CN106792206A (zh) * 2016-12-07 2017-05-31 深圳创维-Rgb电子有限公司 一种电视菜单自适应更新方法及系统
CN107341177B (zh) * 2017-05-24 2019-12-06 福建网龙计算机网络信息技术有限公司 一种联系人模糊搜索方法及装置
US10775974B2 (en) 2018-08-10 2020-09-15 Vignet Incorporated User responsive dynamic architecture
US11158423B2 (en) 2018-10-26 2021-10-26 Vignet Incorporated Adapted digital therapeutic plans based on biomarkers
US10762990B1 (en) 2019-02-01 2020-09-01 Vignet Incorporated Systems and methods for identifying markers using a reconfigurable system
US11763919B1 (en) 2020-10-13 2023-09-19 Vignet Incorporated Platform to increase patient engagement in clinical trials through surveys presented on mobile devices
US11901083B1 (en) 2021-11-30 2024-02-13 Vignet Incorporated Using genetic and phenotypic data sets for drug discovery clinical trials
US11705230B1 (en) 2021-11-30 2023-07-18 Vignet Incorporated Assessing health risks using genetic, epigenetic, and phenotypic data sources

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2347530A (en) * 1999-03-01 2000-09-06 Mitel Inc Branding dynamic link libraries
CN1334940A (zh) * 1998-07-31 2002-02-06 施豪克公司 资源和项目管理系统
US6438743B1 (en) * 1999-08-13 2002-08-20 Intrinsity, Inc. Method and apparatus for object cache registration and maintenance in a networked software development environment
CN1423190A (zh) * 2002-12-18 2003-06-11 无敌科技(西安)有限公司 自动摘录电子版文件中标识数据内容的方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5138712A (en) * 1989-10-02 1992-08-11 Sun Microsystems, Inc. Apparatus and method for licensing software on a network of computers
FR2745649B1 (fr) * 1996-03-01 1998-04-30 Bull Sa Systeme de configuration de logiciels preconfigures sur des systemes ouverts en reseau dans un environnement distribue et procede mis en oeuvre par un tel systeme
US6049671A (en) * 1996-04-18 2000-04-11 Microsoft Corporation Method for identifying and obtaining computer software from a network computer
US5974572A (en) * 1996-10-15 1999-10-26 Mercury Interactive Corporation Software system and methods for generating a load test using a server access log
US5963743A (en) * 1997-08-29 1999-10-05 Dell Usa, L.P. Database for facilitating software installation and testing for a build-to-order computer system
KR19990024903A (ko) * 1997-09-09 1999-04-06 윤종용 컴퓨터의 로고 디스플레이 장치 및 그 방법
US6161051A (en) * 1998-05-08 2000-12-12 Rockwell Technologies, Llc System, method and article of manufacture for utilizing external models for enterprise wide control
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6345386B1 (en) * 1998-09-21 2002-02-05 Microsoft Corporation Method and system for advertising applications
US6029174A (en) * 1998-10-31 2000-02-22 M/A/R/C Inc. Apparatus and system for an adaptive data management architecture
US7937325B2 (en) * 1998-12-08 2011-05-03 Yodlee.Com, Inc. Interactive bill payment center
US6772208B1 (en) * 1999-11-04 2004-08-03 International Business Machines Corporation Method and apparatus to restrict free hyperlinking by internet content distributors to web sites of original content producers
US6871346B1 (en) * 2000-02-11 2005-03-22 Microsoft Corp. Back-end decoupled management model and management system utilizing same
AU2001245868A1 (en) * 2000-03-20 2001-10-03 At And T Corp. Method for dynamically displaying brand information in a user interface
US7542943B2 (en) * 2000-10-30 2009-06-02 Amazon Technologies, Inc. Computer services and methods for collecting payments from and providing content to web users
US7292369B2 (en) * 2000-12-28 2007-11-06 Seiko Epson Corporation Logo data generating method and system
US7143437B2 (en) * 2001-01-12 2006-11-28 Siemens Medical Solutions Health Services Corporation System and user interface for managing user access to network compatible applications
US7188342B2 (en) * 2001-04-20 2007-03-06 Microsoft Corporation Server controlled branding of client software deployed over computer networks
US20040204946A1 (en) * 2001-05-16 2004-10-14 Alger Jeffrey H. Merchant branded software
US7478068B2 (en) * 2001-06-14 2009-01-13 Sony Corporation System and method of selecting consumer profile and account information via biometric identifiers
JP2003058357A (ja) * 2001-08-20 2003-02-28 Canon Inc 情報処理装置およびリソースファイル作成方法および記憶媒体およびプログラム
US7133874B2 (en) * 2001-12-13 2006-11-07 Microsoft Corporation Prototyping model for components of a software program
US6854645B1 (en) * 2002-01-22 2005-02-15 Diebold, Incorporated Automated teller machine, software and distribution method
US7171659B2 (en) * 2002-03-19 2007-01-30 Sun Microsystems, Inc. System and method for configurable software provisioning
US7565495B2 (en) * 2002-04-03 2009-07-21 Symantec Corporation Using disassociated images for computer and storage resource management
US20030200300A1 (en) * 2002-04-23 2003-10-23 Secure Resolutions, Inc. Singularly hosted, enterprise managed, plural branded application services
EP1544730B1 (en) * 2003-12-18 2007-08-15 Research In Motion Limited Computer peripheral product and method of branding utility software associated with same
US7428704B2 (en) * 2004-03-29 2008-09-23 Lehman Brothers Holdings Inc. Dynamic presentation generator
US7661088B2 (en) * 2004-10-20 2010-02-09 Microsoft Corporation Systems and methods to efficiently and automatically effect population of custom controls onto a visual designer toolbox
US20060218528A1 (en) * 2005-03-22 2006-09-28 Microsoft Corporation Software explorer

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1334940A (zh) * 1998-07-31 2002-02-06 施豪克公司 资源和项目管理系统
GB2347530A (en) * 1999-03-01 2000-09-06 Mitel Inc Branding dynamic link libraries
US6438743B1 (en) * 1999-08-13 2002-08-20 Intrinsity, Inc. Method and apparatus for object cache registration and maintenance in a networked software development environment
CN1423190A (zh) * 2002-12-18 2003-06-11 无敌科技(西安)有限公司 自动摘录电子版文件中标识数据内容的方法

Also Published As

Publication number Publication date
JP2005078649A (ja) 2005-03-24
CN1607501A (zh) 2005-04-20
US20050050320A1 (en) 2005-03-03
KR20050025269A (ko) 2005-03-14
EP1517235A3 (en) 2007-07-25
EP1517235A2 (en) 2005-03-23

Similar Documents

Publication Publication Date Title
CN100429619C (zh) 用于给软件产品打上标记的方法和系统
KR101087439B1 (ko) 소프트웨어 컴포넌트화
CN1704900B (zh) 基于具有完全灵活性的自动化生成用户界面的方法和装置
CN100498764C (zh) 同步更新数据的方法
JP5710852B2 (ja) 設計時および実行時にワークフローを継ぎ目なくオーサリングし編集するためのフレームワーク
CN100580667C (zh) 利用表单类型生成表单的方法和装置
AU2005200697B2 (en) Priority binding
US10013478B2 (en) System and method for modular business applications
US20080052707A1 (en) Method, system, and program product for composing a virtualized computing environment
Whiting et al. Creating an iPhone application for collecting continuous ABC data
US20160103815A1 (en) Generating mobile web browser views for applications
US8612996B2 (en) Technique for integrating a distributed object system component with a service oriented architecture application
US20100179982A1 (en) Method for auditing the data of a computer application of a terminal
Alves OSGI in Depth
CN103135988A (zh) 数据处理方法及系统
JP2000357082A (ja) 企業環境において展開記述子を実施するための方法と装置
US20120084643A1 (en) Component-specific and source-agnostic localization
Cinar Android quick APIs reference
EP2466461B1 (en) System and method for modular business applications
JP2004310279A (ja) 業務処理システムおよびその構築支援装置、業務処理システム用プログラム、業務処理システムの構築支援用プログラム
US10185706B2 (en) Generating web browser views for applications
CN101185062B (zh) 用于数据语言中变量的自动更新的方法和装置
CN110796744A (zh) 一种三维在线组装方法
US11941386B2 (en) Flexible provision of multi-application content
Tuominen et al. Dynamic branding in mobile applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150421

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150421

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081029

Termination date: 20190902

CF01 Termination of patent right due to non-payment of annual fee