CN102804132A - 基于目录的软件组件管理 - Google Patents

基于目录的软件组件管理 Download PDF

Info

Publication number
CN102804132A
CN102804132A CN2010800266857A CN201080026685A CN102804132A CN 102804132 A CN102804132 A CN 102804132A CN 2010800266857 A CN2010800266857 A CN 2010800266857A CN 201080026685 A CN201080026685 A CN 201080026685A CN 102804132 A CN102804132 A CN 102804132A
Authority
CN
China
Prior art keywords
component
software
component software
computing equipment
version
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.)
Granted
Application number
CN2010800266857A
Other languages
English (en)
Other versions
CN102804132B (zh
Inventor
E.P.特劳特
D.E.哈文斯
J.M.贝尔纳伯-奥班
M.R.布朗
R.B.沃德
S.辛哈
T.埃尔多根
A.D.斯特里策尔
A.W.肯特
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 CN102804132A publication Critical patent/CN102804132A/zh
Application granted granted Critical
Publication of CN102804132B publication Critical patent/CN102804132B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • 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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

在设备上运行的操作***的目录中维护多个软件组件标识符。这些软件组件标识符中的每个对应于安装在该设备上的多个软件组件之一。响应于有关多个软件组件之一的请求而访问该目录,并且至少部分地基于目录中包括的信息来响应该请求。另外,可以标识安装在计算设备中的软件组件的两个或者更多版本。确定软件组件的两个或者更多版本中的哪个是要运行的软件组件的活动版本。响应于对有关软件组件的信息的请求,返回有关软件组件的活动版本的信息。

Description

基于目录的软件组件管理
背景技术
计算机一般运行操作***,该***提供包括允许其他应用在计算机上安装和运行的功能在内的各种功能。不同应用经常可以安装在计算机上并以不同方式运行,导致各种文件和信息存储入该计算机上的多个位置、文件夹等中。相应地,比如在试图将应用升级到新版本时,在卸载一个应用时等,管理计算机上这些不同应用会产生很多困难。
发明内容
提供了该发明内容来以简化形式引入一些将在具体实施方式里进行进一步阐述的概念选集。该发明内容目的不是标识要求保护的主题的关键特征或必要特征,其目的也不是限定要求保护的主题的范围。
根据一个或多个方面,在设备操作***的目录中维护多个软件组件标识符。这些软件组件标识符中的每个对应于安装在该设备上的多个软件组件之一。响应于有关多个软件组件之一的请求来访问目录,而至少部分地基于该目录中所含的信息来对该请求做出响应。
根据一个或多个方面,在计算设备的操作***中,标识该计算设备上安装的软件组件的两个或多个版本。确定该软件组件的两个或多个版本中哪个版本是要运行的软件组件的活动版本。作为对有关软件组件信息的请求的响应,返回有关软件组件的活动版本的信息。
附图说明
在整个附图中,使用相同的数字来引用类似的特征。
图1示出了根据一个或多个实施例的、实现基于目录的软件组件管理的示例计算设备。
图2示出了根据一个或多个实施例的示例目录。
图3示出了根据一个或多个实施例的示例软件组件。
图4示出了根据一个或多个实施例的、用于基于目录的软件组件管理的示例处理的流程图。
图5示出了根据一个或多个实施例的、用于基于目录的软件组件管理的示例处理的流程图。
图6示出了根据一个或多个实施例的、能被配置为实现基于目录的软件组件管理的示例计算设备。
具体实施方式
在此论述基于目录的软件组件管理。软件产品由一个或多个软件组件构成。每个软件组件具有在计算设备上的操作***的目录中维护的身份。该目录标识哪些软件组件安装在计算设备上。该目录允许操作***容易地标识安装在该***中的软件组件并管理这些软件组件。
图1示出了根据一个或多个实施例的实现基于目录的软件组件管理的示例计算设备100。计算设备100可以是能够运行各软件应用的各种不同的设备。例如,计算设备100可以是桌面型计算机、服务器计算机、膝上型计算机、移动站、娱乐电器、可通信地耦接到显示设备的机顶盒、蜂窝电话或其他无线电话、游戏控制台、车载计算机等。因此,计算设备100的范围可以从有大量存储器和处理器资源的全资源设备(如个人计算机,游戏控制台)到具有有限存储器和/或处理资源的低资源设备(如传统的机顶盒,游戏手柄控制台)。
计算设备100包括操作***102,该操作***102具有软件组件访问控制模块104和目录106。两个软件产品110和112(也被称作软件应用)被示出为包括在计算设备100中。尽管在图1的示例中示出了两个软件产品110和112,作为选择,计算设备100中可以包括少于两个或多于两个软件产品。每个软件产品110和112包括一个或多个软件组件。在图1的示例中,软件产品110包括软件组件122、软件组件124和软件组件126,而软件产品112包括软件组件126和软件组件128。如图1所示,多个不同的软件产品可以共享软件组件(如软件组件126)。
软件组件访问控制模块104管理安装在计算设备100中的软件组件。控制模块104将安装在计算设备100上的软件组件(如图1示例中的软件组件122-128)的记录维护为目录106。目录106是安装在计算设备100上并因此能在计算设备100上运行的软件组件的记录。为了在计算设备100上运行软件组件,该软件组件安装在计算设备中。该安装处理一般由安装组件或模块执行,且一般包括在操作***102的文件***中的各个位置存储文件、存储各种描述该软件组件的信息等。作为在计算设备100上安装软件组件的处理的一部分,使控制模块104感知该软件组件,以允许将该软件组件的标识符添加到目录106中。这种安装的软件组件也能被称作“活动”软件组件,这是因为该软件组件能在计算设备100上运行。
其他软件组件可以存储在计算设备100上,但不是安装在计算设备100上。操作***102一般感知不到这样的软件组件,没有把这种组件的标识符包括到目录106中,且不支持运行这种软件组件。相应地,这种软件组件也能被称作是“休眠”的,因为虽然它们存储在计算设备100上,但这种软件组件没有安装在计算设备100上。要理解的是,可以出现这种情况:软件组件是可以由操作***102执行的可执行文件(虽然该可执行文件没有安装在计算设备100上)。然而,因为这种软件组件没有安装在计算设备100上,操作***102一般感知不到有关这种软件组件的信息(如这种软件组件提供的功能,这种软件组件的开发商或出版商等),且因此这种软件组件仍被称作休眠的软件组件。
软件组件访问控制模块104提供了对安装在计算设备100上的软件组件的集中管理。如后文更详细的论述那样,通过维护目录106,控制模块104感知并能容易地为特定软件组件提供各种功能。例如,控制模块104能容易地标识安装在计算设备100上的全部软件组件104,并能提供有关这些标识的软件组件的各种功能。
如图1可以看出,每个软件产品包括一个或多个软件组件。软件产品的软件组件包括能在计算设备100上运行的指令和数据,而且这些软件组件一起提供软件产品的功能。操作***102在运行时与单独的软件组件(而不是和软件产品整体)进行通信。
虽然图1示出的是单个目录106,作为选择,操作***可以包括多个目录106。在一个或多个实施例中,操作***102为计算设备100上的每个账户包括不同的目录106。在这种实施例中,操作***102允许不同的用户每个创建不同的账号(或多个不同的账号),并为该不同的账号维护不同的设置、访问权利等。另外,也能在计算设备100上创建一个或多个***或管理员账号。操作***102为这些不同的账号中的每一个维护一个不同的目录106。操作***102也可允许多个不同的用户在任意给定时间里登录到计算设备100中。然而,在这些情形中,多个用户中一般只有一个是当前的活动用户(使用当前的活动账号)。因此,在任意给定时间由控制模块104使用的目录106可以基于在该给定时间内登录进去的计算设备100的特定账号、或可能地基于该给定时间处多个登录进入的账号中哪个是当前的活动账号而改变。
具体的目录106包括安装在计算设备100上的软件组件的标识符。在为不同账号维护不同目录106的情形中,具体的目录106包括在那个账户下安装在计算设备100上的软件组件的标识符。不同的用户可以在计算设备100上安装不同的软件组件,导致不同的目录106中包括不同的标识符。
图2示出了根据一个或多个实施例的示例目录200。目录200包括多个软件组件标识符202、204、206和208,每个识别符分别地标识相应的软件组件222、224、226和208。这些软件组件222-228是安装在实现目录200的计算设备上(或在该计算设备的操作***上的特定账号下安装)的软件组件。
每个软件组件222-228具有允许该软件组件区别于其他软件组件的组件身份。在一个或多个实施例中,该身份由软件组件提供,比如包括在如后文中更详细介绍的清单中。作为选择,该组件身份能以其他方式产生,比如通过操作***(如图1中的操作***102)、通过另一个组件或模块、通过另一个本地或远程服务、通过另一个本地或远程设备等来产生。
返回到图1,在一个或多个实施例中,目录106包括已安装的软件组件的单个索引。在其他实施例中,目录106包括软件组件的多个索引或者部分。这些多个索引或部分包括,例如一个包括所有已安装软件组件的索引或部分(也称作全索引)。这些多个索引或部分也可以包括,例如,一个包括满足特定规则或条件集的软件组件子集的第二索引或部分(也称作有效索引)。这个规则或条件集也能用于有效地减少已安装并能运行的软件组件。
一般地,有效索引标识安装在计算设备100上软件组件的活动版本。软件组件的多个不同版本可以安装在计算设备100上,它们中的每个都包括在全索引中。然而,对于软件组件的多个版本,选择那些版本之一包括在有效索引中。
各种不同的规则或条件能用于确定被选择包括在有效索引中的版本。在一个或多个实施例中,一个这样的规则是版本规则。版本规则基于版本序号或其他版本标识符来指定软件组件的多个不同版本中哪一个是活动版本。例如,这种版本规则可以是,要运行的最新版本(如版本号最高的版本)、要运行的具有特定格式版本标识符的版本或具有特定值的版本等。在这种实施例中,软件组件的活动版本包括在有效索引中,软件组件的其他版本从有效索引中排除(即使它们可能包括在全索引中)。
另一个能用于确定有效索引的规则是策略规则。例如,计算设备100的管理员或计算设备100因各种不同原因耦接到的网络的管理员可以建立策略。这个策略可以指定特定的软件组件或其版本不在计算设备100上运行、只有由特定出版商数字签名了的软件组件或其版本能够运行等。在这种情形中,将特定的软件组件或版本从有效索引中排除(即使它们可能包括在全索引中)。
另一个能用于确定有效索引的规则是复制规则。复制原则指定,如果相同软件组件的多个复本安装在计算设备上,则只有一个这种复本要在有效索引中维护。多个这种复本能因为各种不同的原因而安装,比如作为安装在计算设备上的多个软件产品中的每个都包括了共有的软件组件的结果。
图3示出了根据一个或多个实施例的示例软件组件300。软件组件是一个和多个文件和描述该软件组件的元数据的集合。软件组件300包括一个或多个资源文件302,每个存储用于该软件组件300的各种指令和/或数据。包括在软件组件300中的特定资源文件302可以基于软件组件300的开发商的意愿而变化。
清单304存储描述软件组件300的元数据和软件组件300揭示的功能。在一个或多个实施例中,清单304包括软件组件300的标识符。软件组件300的标识符允许软件组件300区别于安装在设备上的其他软件组件。该标识符可以由各种属性构成,比如软件组件300的一个或多个版本号、资源文件302(和清单304的可选部分)上的数字签名和软件组件300的开发商或出版商的标识符。作为选择,这些版本号,数字签名和开发商或出版商的标识符可被分开维护而不是(或另外地)作为软件组件300的标识符的属性被包括。
软件组件300的版本号允许易于标识软件组件300的不同版本。如后文更详细地论述的那样,这些版本号可以用于便于对软件组件300的管理。
清单304也可以包括通过在资源文件302上应用散列函数而产生的散列值。各种不同散列函数,比如一个或多个加密或单向散列函数可用于产生散列值。这种散列函数的例子包括MD5(消息-摘要算法5)散列函数,SHA-1(安全散列算法1)散列函数等。
清单304的至少一部分(比如清单304中除了数字签名之外的那些部分)上的数字签名由软件组件300的出版商产生或代表其产生。作为选择,该数字签名也可以在资源文件302(代替包括在清单304中的资源文件302的散列,或者另外地)上。软件组件300的出版商可以是软件组件300的资源文件302的开发商,或作为选择,是对软件组件300有贡献的另一实体。可以通过使用基于公钥加密的任意各种熟知的技术来产生该数字签名。如果在其上进行数字签名的资源文件302(比如由于清单304中资源文件302的散列值)以及清单304的其他部分改变了,则数字签名会改变。相应地,该数字签名也可以充当在其上进行数字签名的特定资源文件302集以及清单304的其他部分的标识符。
软件组件300的出版商和/或开发商的身份也可以包括在清单304中。数字签名也能在出版商和/或开发商的身份上产生。
当软件组件300要安装到计算设备(比如图1中的计算设备100)上时,软件组件300由安装或者部署组件或模块获得。软件组件300可以从任意各种本地和/或远程服务和/或设备中获得。
作为安装处理的部分,软件组件300的标识符在安装或作为选择由安装处理标识时,添加到计算设备的操作***的特定账号的目录中。该安装处理可以将软件组件300的标识符添加到目录中,或作为选择可以与软件组件访问控制模块(如图1中的控制模块104)进行通信,该控制模块接着可以将软件组件300的标识符添加到目录中。
在一个或多个实施例中,在将软件组件300的标识符添加到目录之前,软件组件访问控制模块或者安装组件或模块采取一个或多个验证动作。能采取各种验证动作。比如,可以建立软件组件300、清单304和/或资源文件302要遵守的规则或条件集。作为验证的部分,可以有关该规则或条件集实际上是否被遵守进行检查。如果该规则或条件集没有被遵守,那么不将软件组件300的标识符添加到目录中。
再举个例子,可以关于如上所述的在资源文件302和/或清单304上的数字签名是否存在于清单304中进行检查。如果清单304中不存在这种数字签名,那么不将软件组件300的标识符添加到目录中。然而,如果清单304中存在这种数字签名,那么会进行在其上做出数字签名的资源文件302和/或清单304从被数字签名以来是否改变了的检查。这个检查可以包括计算资源文件302的散列值来验证计算出的散列值与存储在清单304中的散列值是否相同。可以以任意其它各种使用公钥密码学的熟知方式来执行在其上做出数字签名的清单304没有被改变的检查。也可以做出有关包括在清单304中的软件组件300的出版商的标识符是否与包括在数字签名中的出版商标识符是否匹配(比如,相同)的检查。如果在其上做出数字签名的资源文件302和/或清单304从被数字签名以来已经改变了,那么不会将软件组件300的标识符添加到目录中。
再举个例子,可以做出有关产生资源文件302和/或清单304上的数字签名的实体能否被信任的检查。这个检查可以通过访问证书存储库来确定产生该数字签名的实体的数字证书是否包括在软件组件300安装在其上的设备的证书存储库中。作为选择地,可以建立从该证书存储库中的数字证书到产生该数字签名的实体的数字证书的证书链,而不是被包括在证书存储库中。如果这种数字证书没有包括在证书存储库中(或者没能建立证书链),则不会将软件组件300的标识符添加到目录中。
返回到图1,一旦软件组件122-128安装在计算设备100上,可以维护到软件组件122-128的一个或多个资源文件位置的路径。这些路径可以保持在目录106中,或作为选择,作为元数据保持在操作***102的其他存储库中。这些路径允许特定的文件被检索和执行、加载或否则被使用。例如,可以保持到要作为快捷方式而显示的图标的路径,可以保持到可执行文件的路径,可以保持到动态链接库(DLL)的路径等。通过保持这些路径,能容易地标识和返回关于软件组件的信息。例如,如果要运行特定的软件组件,可以容易地标识到该软件组件的可执行文件的路径。又例如,如果要显示代表到软件组件的快捷方式的图标,则可以容易地标识存储用于该图标的数据的文件。再例如,如果要加载DLL,则可以容易地标识到存储那个DLL的文件的路径。
软件组件访问控制模块104允许各种其他组件和模块从目录106中获取有关已安装的软件组件的信息。这种其他组件和模块可以是操作***102的部分,或作为选择,可以是一个或多个软件组件122-128。目录106中维护的有关已安装的软件组件的信息可以被返回给请求组件或模块,或作为选择,可以被控制模块104使用来产生对请求的响应。因为目录106维护安装在计算设备100上的软件组件的记录,因此目录106也能***作***102中的其他组件或模块利用。
在一个或多个实施例中,在访问目录106时,控制模块104支持各种操作。这些操作可以作为应用程序编程接口(API)的方法来显露,或作为选择,对这些要执行操作的请求可以其他方式向控制模块104做出。下面的表I描述了在访问目录106时由控制模块104支持的这些操作的示例。
表I
操作 描述
列举目录 返回在操作***中的目录列表
获取目录 返回用于在执行该操作的请求中指定的账号的目录
添加组件 向目录中添加软件组件
移除组件 从目录中移除软件组件
列举组件 返回在目录的全索引和/或有效索引中的软件组件列表
根据身份列举组件 返回在请求中指定的、在目录的全索引和/或有效索引中的软件组件列表,该列表具有与指定身份相匹配的软件组件标识符。该指定的身份可以是局部或全面的。例如,该指定的身份可以使用通配符来指示组件身份中未指定的属性或部分。
根据路径获取组件 给定指定的目录和目录或文件的路径,从有效索引和/或全索引中返回软件组件的标识符。这允许调用方来确定给定文件是否属于有效索引和/或全索引中的组件。
如上所述,在一个或多个实施例中,软件组件的标识符包括标识软件组件版本号的组件标识符。在两个软件组件有相同版本号的情形中,则(假设这两个软件组件的组件标识符的剩余部分相同)这两个软件组件之一会被确定为另一个的新的替换版本。能以各种不同的方式确定被确定为是新的替换版本的这两个软件组件之一,比如有更高的版本号的一个。控制模块104用软件组件新的替换版本代替软件组件的旧版本,导致对该软件组件的后续请求返回该新的替换版本。在一个或多个实施例中,控制模块104将该组件新的替换版本添加到目录106的有效索引中,并从目录106的有效索引中移除软件组件的较旧版本。作为选择,在其他时间(比如在对软件组件请求做出响应时),控制模块104可以确定软件组件的两个版本中哪一个是新的替换版本。
另外,每个软件组件都有如上所述的清单。在一个或多个实施例中,每个软件组件的清单也标识该软件组件是否依赖于其他软件组件来操作。例如,软件组件122可能依赖于也在***中运行的软件组件124,且软件组件可能依赖于也在***中运行的软件组件126。
给定该软件组件清单中的这些信息,控制模块104能容易地确定特定的软件组件是否可以在计算设备100上运行。例如,控制模块104可以访问软件组件122的清单并确定,为了软件组件122运行,软件组件124(因此软件组件126也是)也要运行。相应地,控制模块104能对来自其他组件或模块(可以是操作***102的部分,或作为选择和操作***102分开的)有关特定的软件组件是否能在计算设备100上运行的查询做出响应。如果该特定的软件组件所依赖的其他软件组件在目录106中,则该特定的软件组件可以在计算设备100中运行。然而,如果该特定的软件组件所依赖的其他软件组件不在目录106中,则该特定的软件组件不能在计算设备100中运行。
类似地,给定该软件组件清单里的这些信息,控制模块104可以容易地确定从计算设备100中移除特定的软件组件是否会阻止其他软件组件运行。例如,控制模块104可以访问软件组件122的清单并确定,为了让软件组件122运行,软件组件124(因此软件组件126也是)也要运行。相应地,通过指示不能删除软件组件124而不导致至少一个其他软件组件可能无法正常运行,控制模块104可以对来自其他组件或模块(可以是操作***102的部分,或作为选择和操作***102相分离)的有关是否可以将软件组件124从计算设备100中移除的查询做出响应。
图4示出了根据一个或多个实施例的、用于基于目录的软件组件管理的示例处理400的流程图。处理400由设备上运行的操作***的控制模块(比如图1中的软件组件访问控制模块104)执行,并可以以软件、固件、硬件或其组合来实现。处理400是基于目录的软件组件管理的示例处理;通过参考不同的数据在此包括其他对基于目录的软件组件管理的另外论述。
在处理400中,软件组件标识符保持在目录中(动作402)。这些软件组件标识符使软件组件区别于彼此,并能如上所述采取各种不同的形式。如上所述,多个不同的目录可以包括在设备上,每个都可选性地包括不同的索引。
最后,接收有关软件组件的请求收(动作404)。处理400等待直到接收这种请求为止,并响应于该请求而访问目录(动作406)。要访问的目录可以作为请求的部分来标识,或作为选择,可以本来就在该请求中(比如实现处理400的计算设备的当前用户的目录)。
该请求基于目录中的信息而被响应(动作408)。如上所述,目录中这些信息至少包括该组件的标识符。如上所述,可以基于所请求操作的本性而改变该特定的响应。
图5是说明根据一个或多个实施例的、用于基于目录的软件组件管理的示例处理500的流程图。指示处理500响应软件组件多个版本安装在设备上何处的请求。处理500由运行在设备上的操作***的控制模块(比如图1中的软件组件访问控制模块104)来执行,且可以用软件、固件、硬件或其组合来实现。处理500是基于目录的软件组件管理的示例处理;通过参考不同的附图在此包括对基于目录的软件组件管理的附加论述。
在处理500中,标识安装在设备上的、用户可访问的软件组件的多个版本(动作502)。如上所述,不同的用户可以访问不同的软件组件。
进行有关软件组件的多个版本中哪个是活动版本的确定(动作504)。该确定可以在标识多个版本时或其他时候进行,且如上所述,可以维护活动版本的列表(比如,作为有效索引)。或作为选择,可以响应于有关软件组件的信息请求而进行该确定。
响应于对有关软件组件的信息的请求,返回关于该软件组件的活动版本的信息(动作506)。这种请求可以是从实现处理500的操作***的其他组件或模块(或作为选择,如上所述的其他软件组件)接收的请求。
处理500涉及单个的软件组件。要理解的是,处理500可以为多个软件组件重复。例如,可以如上所述维护多个软件组件的活动版本的有效索引。
也应该注意的是,动作502中执行的标识和动作504中执行的确定可以在各种时间执行。在一个或多个实施例中,每当对计算设备100上安装的软件组件做出改变时就执行动作502和504。,操作***中的另一个组件或模块会通知实现处理500的软件访问控制模块何时做出了这种改变。这种改变的示例包括安装软件组件和卸载软件组件。作为选择,动作502和504可以在其他时间执行,比如对有关软件组件或目录的信息请求做出响应时、在低活动的时间期间(比如该操作***不忙于执行其他任务时)等。
图6示出了根据一个或多个实施例的、可以被配置为实现基于目录的软件组件管理的示例计算设备600。计算设备600可以是,比如图1中的计算设备100。
计算设备600包括一个或多个处理器或处理单元602、可以包括一个或多个存储器和/或存储组件606的一个或多个计算机可读介质604、一个或多个输入/输出(I/O)设备608和允许各种组件和设备彼此通信的总线610。计算机可读介质604和/或一个或多个I/O设备608可以被包括作为计算设备600的一部分,或作为选择可以耦接至计算设备。总线610代表几种类型总线结构中的一种或多种,包括使用各种不同总线体系结构的存储器总线或者存储器控制器、***总线、加速图形端口、处理器或本地总线等。总线610可以包括有线和/或无线总线。
存储器/存储组件606代表一个或多个计算存储介质。组件606可以包括易失性介质(比如随机存取存储器(RAM))和/或非易失性介质(比如只读存储器(ROM)、闪存存储器、光盘、磁盘等)。组件606可以包括固定介质(比如RAM、ROM、固定硬盘驱动器等)以及可移动介质(比如闪存驱动器、可移动硬盘驱动器、光盘等)。
在此论述的技术能在软件中实现,而利用指令由一个或多个处理单元602执行。要理解的是,不同的指令可以存储在计算设备600的不同组件中,比如处理单元602中、处理单元602的各种高速缓冲存储器中、设备600的其他高速缓存存储器(未显示)中、其他计算机可读介质上等。另外,要理解的是,指令存储在计算设备600中的位置可以随着时间改变。
一个或多个输入/输出设备608允许用户在计算设备600中输入命令和信息,也允许将信息呈现给用户和/或其他组件或设备。输入设备的示例包括键盘、光标控制设备(如鼠标)、麦克风、扫描仪等。输出设备的示例包括显示设备(如监视器或投影仪)、扬声器、打印机、网卡等。
在此各种技术可以在软件或程序模块的一般背景中描述。一般地,软件包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。这些组件或技术的实现可存储在计算机可读介质上,或通过计算机可读介质的某种形式传输。计算机可读介质可以是由计算设备访问的任意可用介质。举个示例但不限于此,计算机可读介质可包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括以用于存储如计算机可读指令、数据结构、程序模块或其他数据的信息的任意方式或技术实现的易失性和非易失性的、可移动和不可移动的介质。计算机存储介质包括(但不限于)RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多功能光盘(DVD)或光学存储设备、盒式磁带、磁带、磁盘存储设备或其他磁性存储设备,或可以用于存储想要的信息并可以被计算机访问的任意其他介质。
“通信介质”一般在调制数据信号(比如载波或其他传输机制)中包含计算机可读指令、数据结构、程序组件或其他数据。传输介质也包括任何信息递送介质。术语“调制数据信号”意指具有一个或多个特征以将信息编码到信号中的方式来设置或改变的信号。举个示例但不限于此,通信介质包括有线介质(比如有线网络或直接连线的连接)和无线介质(比如声音、RF、红外和其他无线介质)。上述任意的组合也包括在计算机可读介质的范围中。
一般地,在此描述的任意功能和技术都可以用软件、固件、硬件(如固定逻辑电路)、人工处理或者这些实现的组合来实现。在此使用的术语“模块”和“组件”一般代表软件,尽管作为选择也能并入固件和/或硬件。在软件实现的情形中,模块或组件代表当在处理器(如一个或多个CPU)上执行时,执行指定任务的程序代码。该程序代码可以储存在一个或多个计算机可读存储设备中,对这些的进一步描述可以参考图6找到。在此描述的基于目录的软件组件管理的特征是平台无关的,这意味着该技术可以在有各种处理器的各种商业计算平台中实现。
虽然该主题已经用结构特征和/或方法动作特定的语言进行了描述,要理解的是,附加的权利要求书中定义的主题不一定限于以上描述的特定特征和动作。相反,以上描述的特定的特征和动作是作为实现权利要求书的示例形式而公开的。

Claims (15)

1.一种计算设备(600),包括:
处理器(602);以及
一个或多个耦接到处理器并其上存储了操作***的多个指令的计算机可读介质(604),这些指令当由处理器执行时,导致处理器:
在操作***的目录中维护(402)多个软件组件标识符,其中多个软件组件安装在该设备上,且这多个软件组件标识符中的每个都对应于这多个软件组件之一;
响应于对有关多个软件组件之一的请求而访问(406)该目录;以及
至少部分基于包括在目录中的信息来响应(408)该请求。
2.如权利要求1中所述的计算设备,其中多个目录在该设备上,其中多个目录的每个都对应于该操作***中的多个账号中的一个,其中该指令进一步导致处理器至少部分基于多个账号中哪个登录进去,来标识多个目录中的一个。
3.如权利要求1中所述的计算设备,其中该请求是检查运行多个软件组件中的一个是否依赖于目录中的一个或多个软件组件的请求。
4.如权利要求1中所述的计算设备,其中该目录包括全索引和有效索引,全索引包括安装在该设备中的所有组件,而有效索引包括全索引的子集,其中对于每个具有安装在该设备上的两个或以上版本的多个软件组件,所述有效索引还包括该软件组件的活动版本。
5.如权利要求1中所述的计算设备,其中多个软件组件标识符中的每个包括:
该软件组件的出版商的标识符;
该出版商在存储描述该软件组件的元数据的清单上的数字签名;以及
软件组件的一个或多个版本号。
6.如权利要求1中所述的计算设备,其中该请求是有关具有多个安装在该设备中的版本的软件组件的请求, 其中对该请求做出响应就是至少部分基于该软件组件多个版本中特定的一个做出响应。
7.如权利要求1中所述的计算设备,其中该请求包括对多个软件组件中的一个的软件组件标识符的请求,该软件组件包括具有给定路径的文件。
8.一种在计算设备中的操作***中实现的方法,该方法包括:
标识(502)安装在计算设备上的软件组件的两个或多个版本;
确定(504)软件组件的两个或多个版本中哪一个是要运行的软件组件的活动版本;以及
响应于对有关软件组件的信息的请求而返回有关该软件组件活动版本的信息。
9.如权利要求8中所述的方法,其中该软件组件的两个或多个版本的每个都有只在版本号上不同的软件组件标识符。
10.如权利要求9中所述的方法,进一步包括,在目录中维护软件组件的两个或多个版本中每一个的软件组件标识符,每个软件组件标识符包括:
该版本的软件组件的出版商的标识符;
出版商在存储描述该软件组件版本的元数据的清单上的数字签名;以及
该软件组件版本的版本号。
11.如权利要求8中所述的方法,进一步包括:
为多个软件组件中每一个重复标识和确定;
产生包括多个软件组件的每个活动版本的标识符的有效索引;以及
使用有效索引来随后标识多个软件组件中每一个的活动版本。
12.如权利要求11中所述的方法,所述确定包括:
标识要使用来确定特定的软件组件的两个或多个版本中哪一个是该特定软件组件的活动版本的规则集,该规则集包括由计算设备耦接到的网络的管理员设置的策略规则;以及
基于该规则集,选择为该特定软件的活动版本的两个或多个版本之一。
13.如权利要求8中所述的方法,进一步包括响应于软件组件的新版本安装在计算设备上而重复所述标识和确定。
14.如权利要求8中所述的方法,进一步包括响应于从计算设备中卸载软件组件的两个或多个版本中的一个来重复所述标识和确定。
15.如权利要求8中所述的方法,进一步包括维护多个目录,每一个目录都为计算设备上的多个用户账户中不同的一个标识软件组件的活动版本, 且其中该软件组件的活动版本在不同的目录中是不同的版本。
CN201080026685.7A 2009-06-15 2010-06-15 基于目录的软件组件管理 Expired - Fee Related CN102804132B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/484,394 US8495621B2 (en) 2009-06-15 2009-06-15 Catalog-based software component management
US12/484,394 2009-06-15
PCT/US2010/038590 WO2010147926A2 (en) 2009-06-15 2010-06-15 Catalog-based software component management

Publications (2)

Publication Number Publication Date
CN102804132A true CN102804132A (zh) 2012-11-28
CN102804132B CN102804132B (zh) 2014-11-12

Family

ID=43307526

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080026685.7A Expired - Fee Related CN102804132B (zh) 2009-06-15 2010-06-15 基于目录的软件组件管理

Country Status (6)

Country Link
US (2) US8495621B2 (zh)
EP (1) EP2443549A2 (zh)
JP (1) JP2012530322A (zh)
KR (1) KR101643022B1 (zh)
CN (1) CN102804132B (zh)
WO (1) WO2010147926A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103793248B (zh) * 2014-01-23 2017-02-01 北京奇虎科技有限公司 一种应用程序升级的方法及装置
CN113535221A (zh) * 2020-04-16 2021-10-22 北京沃东天骏信息技术有限公司 应用版本管理的方法和装置
CN114936031A (zh) * 2022-07-22 2022-08-23 浙江中控技术股份有限公司 组件的调用方法及电子设备

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9134989B2 (en) 2002-01-31 2015-09-15 Qualcomm Incorporated System and method for updating dataset versions resident on a wireless device
US9092286B2 (en) 2002-12-20 2015-07-28 Qualcomm Incorporated System to automatically process components on a device
US8626146B2 (en) 2003-10-29 2014-01-07 Qualcomm Incorporated Method, software and apparatus for performing actions on a wireless device using action lists and versioning
KR101134214B1 (ko) 2007-06-19 2012-04-09 콸콤 인코포레이티드 무선 환경에서 데이터세트 동기화를 위한 방법들 및 장치
JP5730290B2 (ja) * 2009-05-21 2015-06-10 セールスフォース ドット コム インコーポレイティッド アプリケーションのコンポーネントをバージョン管理するシステム、方法及びコンピュータプログラムプロダクト
US8997083B2 (en) * 2009-11-30 2015-03-31 Red Hat, Inc. Managing a network of computer systems using a version identifier generated based on software packages installed on the computing systems
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US9009696B2 (en) 2010-04-27 2015-04-14 Red Hat, Inc. Generating encoded identifications of selected subsets of installed software packages on a client machine
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US20130055369A1 (en) * 2011-08-24 2013-02-28 Mcafee, Inc. System and method for day-zero authentication of activex controls
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
US8683206B2 (en) * 2011-09-19 2014-03-25 GM Global Technology Operations LLC System and method of authenticating multiple files using a detached digital signature
US9697016B2 (en) 2011-11-15 2017-07-04 Microsoft Technology Licensing, Llc Search augmented menu and configuration for computer applications
CN102541557B (zh) * 2011-12-28 2014-12-10 山东中创软件工程股份有限公司 一种组件处理***及方法
CN102722396B (zh) * 2012-06-11 2015-05-20 山东中创软件商用中间件股份有限公司 一种组件加载方法及***
GB2507305A (en) * 2012-10-25 2014-04-30 Ibm Server client negotiation of version selection in a messaging system
US9552198B2 (en) 2014-09-26 2017-01-24 Oracle International Corporation Drift management of images
US9665366B2 (en) * 2014-09-26 2017-05-30 Oracle International Corporation Creation of a software configuration signature for software
US11328344B2 (en) 2013-05-31 2022-05-10 Itron, Inc. Utility application delivery platform
US9342288B2 (en) * 2013-05-31 2016-05-17 Itron, Inc. Surfacing cross platform applications
US10205769B2 (en) 2013-05-31 2019-02-12 Itron, Inc. Distributed applications across platforms
US9830146B2 (en) * 2013-06-07 2017-11-28 Microsoft Technology Licensing, Llc API lifecycle platform and version management
US9298923B2 (en) * 2013-09-04 2016-03-29 Cisco Technology, Inc. Software revocation infrastructure
EP2849464A1 (en) * 2013-09-17 2015-03-18 Gemalto SA Method of communicating between a server and a secure element
US10127261B2 (en) * 2013-12-31 2018-11-13 Dassault Systems Enovia Corporation Methods and systems for resolving conflicts in hierarchically-referenced data
US9348582B2 (en) * 2014-02-13 2016-05-24 Linkedin Corporation Systems and methods for software dependency management
US9223569B1 (en) 2014-06-17 2015-12-29 International Business Machines Corporation Automatic software catalog content creation based on bio-inspired computing prediction
GB2528679A (en) * 2014-07-28 2016-02-03 Ibm Software discovery in an environment with heterogeneous machine groups
US9521153B2 (en) * 2014-08-18 2016-12-13 Dell Products L.P. Platform trust extension
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
KR102400477B1 (ko) * 2015-10-21 2022-05-23 삼성전자주식회사 어플리케이션을 관리하는 방법 및 그 장치
JP6889617B2 (ja) * 2017-06-01 2021-06-18 キヤノン株式会社 情報処理装置、プログラム管理方法、及びプログラム
US10868709B2 (en) 2018-09-10 2020-12-15 Oracle International Corporation Determining the health of other nodes in a same cluster based on physical link information
CN112433748A (zh) * 2019-08-26 2021-03-02 北京国双科技有限公司 软件***版本标定方法、装置、存储介质及处理器
CN111190858B (zh) * 2019-10-15 2023-07-14 腾讯科技(深圳)有限公司 软件信息存储方法、装置、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030181242A1 (en) * 2002-03-20 2003-09-25 Se-Wai Lee Method and apparatus for sotfware delivery and management
CN1617099A (zh) * 2003-10-24 2005-05-18 微软公司 软件产品的应用程序身份
US20060184932A1 (en) * 2005-02-14 2006-08-17 Blazent, Inc. Method and apparatus for identifying and cataloging software assets
US7305669B2 (en) * 2002-09-27 2007-12-04 Sun Microsystems, Inc. Software upgrades with multiple version support

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558413A (en) * 1983-11-21 1985-12-10 Xerox Corporation Software version management system
US6397378B1 (en) * 1998-08-21 2002-05-28 National Instruments Corporation Test executive system and method including distributed type storage and conflict resolution
US6883168B1 (en) * 2000-06-21 2005-04-19 Microsoft Corporation Methods, systems, architectures and data structures for delivering software via a network
US7191436B1 (en) * 2001-03-08 2007-03-13 Microsoft Corporation Computer system utility facilitating dynamically providing program modifications for identified programs
US20040093595A1 (en) * 2002-08-08 2004-05-13 Eric Bilange Software application framework for network-connected devices
US7562346B2 (en) * 2003-09-02 2009-07-14 Microsoft Corporation Software componentization for building a software product
US7478381B2 (en) * 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US7574706B2 (en) * 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US8458691B2 (en) * 2004-04-15 2013-06-04 International Business Machines Corporation System and method for dynamically building application environments in a computational grid
US7797525B2 (en) * 2004-07-01 2010-09-14 Hewlett-Packard Development Company, L.P. Operating system installation
US7562358B2 (en) * 2004-10-04 2009-07-14 United Parcel Service Of America, Inc. Controlled deployment of software in a web-based architecture
US7546595B1 (en) * 2004-10-14 2009-06-09 Microsoft Corporation System and method of installing software updates in a computer networking environment
US7743373B2 (en) * 2005-05-06 2010-06-22 International Business Machines Corporation Method and apparatus for managing software catalog and providing configuration for installation
US7831956B2 (en) * 2005-09-13 2010-11-09 Microsoft Corporation Using attributes to identify and filter pluggable functionality
US8332817B2 (en) * 2005-11-08 2012-12-11 Red Hat, Inc. Certifying a software application based on identifying interface usage
WO2007071465A1 (en) * 2005-12-22 2007-06-28 International Business Machines Corporation A method and apparatus for populating a software catalog with automated use signature generation
US7991891B2 (en) * 2006-02-02 2011-08-02 Microsoft Corporation Version-specific content searching
US8621433B2 (en) * 2006-03-20 2013-12-31 Microsoft Corporation Managing version information for software components
US7644111B2 (en) * 2006-05-02 2010-01-05 Microsoft Corporation Framework for content representation and delivery
US7840942B2 (en) * 2006-11-29 2010-11-23 International Business Machines Corporation Configuration file sharing
US20080301672A1 (en) * 2007-05-30 2008-12-04 Google Inc. Installation of a Software Product on a Device with Minimal User Interaction
JP5058697B2 (ja) * 2007-07-19 2012-10-24 キヤノン株式会社 情報処理装置、アプリケーション管理方法、及びコンピュータプログラム
US8464228B2 (en) * 2007-08-23 2013-06-11 Accenture Global Services Limited Binary library
US8464249B1 (en) * 2009-09-17 2013-06-11 Adobe Systems Incorporated Software installation package with digital signatures
US8819658B2 (en) * 2009-12-17 2014-08-26 Verizon Patent And Licensing Inc. Methods and systems for managing update requests for a deployed software application

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030181242A1 (en) * 2002-03-20 2003-09-25 Se-Wai Lee Method and apparatus for sotfware delivery and management
US7305669B2 (en) * 2002-09-27 2007-12-04 Sun Microsystems, Inc. Software upgrades with multiple version support
CN1617099A (zh) * 2003-10-24 2005-05-18 微软公司 软件产品的应用程序身份
US20060184932A1 (en) * 2005-02-14 2006-08-17 Blazent, Inc. Method and apparatus for identifying and cataloging software assets

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103793248B (zh) * 2014-01-23 2017-02-01 北京奇虎科技有限公司 一种应用程序升级的方法及装置
CN113535221A (zh) * 2020-04-16 2021-10-22 北京沃东天骏信息技术有限公司 应用版本管理的方法和装置
CN114936031A (zh) * 2022-07-22 2022-08-23 浙江中控技术股份有限公司 组件的调用方法及电子设备

Also Published As

Publication number Publication date
KR101643022B1 (ko) 2016-07-26
WO2010147926A3 (en) 2011-03-03
JP2012530322A (ja) 2012-11-29
CN102804132B (zh) 2014-11-12
WO2010147926A2 (en) 2010-12-23
US8495621B2 (en) 2013-07-23
KR20120037397A (ko) 2012-04-19
EP2443549A2 (en) 2012-04-25
US20100318968A1 (en) 2010-12-16
US20130305239A1 (en) 2013-11-14

Similar Documents

Publication Publication Date Title
CN102804132B (zh) 基于目录的软件组件管理
CN102349062B (zh) 浏览器缓存与远程仓库同步的方法和***
TWI498744B (zh) 用於在主機與行動裝置間之任務的雙向動態卸載之方法、系統及電腦可讀儲存裝置
US8645672B2 (en) Configuring a computer system for a software package installation
JP2016529599A (ja) コンテンツクリップボードの同期
US20090300601A1 (en) Methods and systems for providing a hosted appliance and migrating the appliance to an on-premise environment
AU2015289740A1 (en) Unregistered user account generation for content item sharing
CN105453037A (zh) 维持用于更新的已知相关性
CN109522751B (zh) 访问权限控制方法、装置、电子设备及计算机可读介质
CN103036986A (zh) 在分布式应用对象上提供更新通知
CN102938784A (zh) 应用于分布式存储***中的数据存储方法和***
CN104106060A (zh) 支持通知阻塞的功率高效代理通信
US20130067080A1 (en) Storage and Communication De-Duplication
CN113342475B (zh) 一种服务器集群构建方法、计算设备及存储介质
CN104396219A (zh) 用户专用漫游设置
EP3374858B1 (en) Creating and modifying applications from a mobile device
CN102419753B (zh) 信息处理设备、信息处理方法和信息处理***
CN116783581A (zh) 在云平台中配置的数据中心上部署软件发布
US20140136708A1 (en) Orchestration management of information technology
CN107526838B (zh) 数据库集群扩容的方法和装置
CN110263006A (zh) 一种在用户设备上下载文件的方法与设备
TWI571754B (zh) 用來進行檔案同步控制之方法與裝置
CN115794253A (zh) 应用集成方法、装置、电子设备及计算机可读存储介质
US20180341475A1 (en) Just In Time Deployment with Package Managers
US10015248B1 (en) Syncronizing changes to stored data among multiple client devices

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: 20150430

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

Effective date of registration: 20150430

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: 20141112

Termination date: 20210615

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