维护基于组件的软件产品的制作方法

文档序号:6419789阅读:244来源:国知局
专利名称:维护基于组件的软件产品的制作方法
技术领域
本发明的实施例涉及维护软件产品的领域。特别地,本发明的实施例涉及贯穿软件产品的整个生命周期用服务包来更新基于组件的操作系统和应用程序。
背景技术
操作系统映像与计算机中的硬件交互来执行许多功能。常规计算机一般执行操作系统以在计算机运行时管理它的各个方面。通常,操作系统负责管理对存储设—备以及输入和/或输出设备的访问、以及控制一个或多个其它应用程序的执行。在计算机可执行操作系统以前,通常必须将它安装在计算机上,这是通常涉及将多个文件从分发介质(例如,CDROM)复制到计算机的存储设备(例如,硬盘)上的过程。
典型的操作系统包括大量文件,它们可能包括指令和/或数据。当由计算机执行这些指令时,它们提供操作系统功能。可由各种各样的人(例如,用户、管理员、操作系统开发者以外的软件开发者等等)中的任何人通过诸如添加或替换一个或多个特定文件来以各种各样的方式中的任何方式来修改(例如,更新)操作系统。要对产生故障的计算机进行故障检修或对操作系统进行更新变得困难,因为用户或管理员很难确切知道计算机上安装了或应安装什么功能。
在现有系统中,维护构成软件产品(例如,操作系统或应用程序)的二进制文件常常是软件产品生命周期中成本最高的方面。示例性的软件产品生命周期包括预部署阶段(例如,预安装)、部署阶段(例如,安装)、以及后部署阶段(例如,在运行系统上)。二进制文件的大小、通常为任何单个问题维护的二进制文件的数量、以及二进制文件在软件产品生命周期的每个阶段的不同位置使二进制文件的分发和创建很困难。同样,跨系统维护多个二进制文件无法提供关于系统上任何较大的功能集结件的当前版本的具体信息。
例如,当创建服务包来补救存储在二进制文件中的软件代码中的问题时,现有的系统通常创建该二进制文件的更新副本或补丁,它修改该软件代码而不修改其它软件。但是,现有系统通常基于软件产品生命周期的当前阶段需要补丁和二进制文件的不同版本一个版本用于预部署、一个版本用于部署期间、一个版本用于运行的系统。
在另一个示例中,一些现有技术的系统为终端用户提供替换运行系统上或是预部署期间的单个文件或库(例如,library.dll)的“热”修补(例如,补丁)。其它系统通过指导客户机器从安装介质或经由网络获得更新的文件或库(例如,library.dll)并安装所获得的更新来提供安装期间的更新。但是,此类系统对客户机器生命周期的每个阶段需要单独的脚本,这些阶段是预部署、部署、以及后部署。此外,对单个文件的改变可能使对其它依存文件的改变成为必要。现有技术的系统无法提供更新过程期间的智能依存关系解析。
由此,需要用于在软件产品的整个生命周期上维护软件产品的系统来解决这些及其它缺点中的一个或多个。
发明概述本发明的实施例包括用服务包来更新软件产品。服务包包括与组件相关联的一个或多个文件、以及用于安装这些文件的多个指令集。在一个实施例中,本发明确定与组件相关联的状态或其它操作上下文,基于所确定的状态而选择其中一个指令集,并且根据所选择的指令集将其中一个或多个文件应用于该组件。例如,状态可对应于软件产品生命周期的以下阶段中的一个软件产品的预部署、软件产品的部署、以及软件产品的后部署。
本发明为消费者和原始设备制造商提供用于在软件产品生命周期的所有部分期间维护该软件产品的单个服务包。因为软件产品有越来越多的二进制文件要维护,所以本发明降低了维护的成本,并使系统的简单查询能够确定系统上所维护的二进制文件的版本。
根据本发明的一个方面,一种计算机化的方法更新软件产品。该方法包括将软件产品定义为多个组件。该方法还包括基于要被更新的软件产品的生命周期阶段,来访问与服务包相关联的多个指令集中的一个。该方法还包括根据所访问的指令集来修改该软件产品中的至少一个组件。
根据本发明的另一个方面,一种方法用服务包来更新软件产品。软件产品包括多个组件。其中每个组件都有一与之相关联的状态。状态表示组件的操作上下文。服务包包括与所选择的组件相关联的一个或多个文件。服务包还包括用于安装这些文件的多个指令集。该方法包括确定与所选择的组件相关联的状态。该方法还包括基于所确定的状态选择其中一个指令集。该方法还包括根据所选择的指令集将其中一个或多个文件应用于所选择的组件。
根据本发明的又一个方面,一个或多个计算机可读介质具有用于以服务包来更新软件产品的计算机可执行模块。该软件产品包括多个组件。其中每个组件具有一与之相关联的状态。状态表示组件的操作上下文。服务包包括与所选择的组件相关联的一个或多个文件。服务包还包括用于安装这些文件的多个指令集。这些模块包括配置模块,它确定与所选择的组件相关联的状态,并基于所确定的状态来选择其中一个指令集。这些模块还包括安装模块,它通过根据由配置模块选择的指令集将一个或多个文件应用于所选择的组件来修改所选择的组件。
根据本发明的另一个方面,一种方法为软件产品创建服务包。软件产品包括生命周期的多个阶段中有一个阶段与其相关联的组件。该方法包括选择要与软件产品相关联的一个或多个文件。该方法还包括将所选择的文件存储在计算机可读介质上。该方法还包括将多个安装脚本存储在该计算机可读介质上。每个安装脚本对应于生命周期中的一个阶段。基于组件的生命周期阶段执行这些安装脚本,以将已存储的所选择的文件应用于该软件产品。
根据本发明的又一个方面,一种服务包更新存储在计算机可读介质上的软件产品。软件产品包括生命周期的多个阶段中有一个阶段与其相关联的组件。该服务包包括要与该组件相关联的一个或多个文件。该服务包还包括对应于该组件的生命周期中的多个阶段的多个指令集。响应于与该组件相关联的生命周期阶段来选择和执行多个指令集中的一个,以将这些文件应用于该组件。
或者,本发明可包括各种其它方法和装置。
其它特征部分将是明确的,部分将在下文中指出。
附图简述

图1是示出应用于存储在计算设备上的软件产品的示例性服务包的框图。
图2是示出具有组件化的操作系统的计算设备的示例性框图。
图3是示出将更新应用于图1的组件化操作系统中的组件的示例性框图。
图4是示出组件安装器应用程序的操作的示例性流程图。
图5是示出服务包的创建的示例性流程图。
图6是示出可在其中实现本发明的合适的计算系统环境的一个示例的框图。
所有附图中,对应的参考标号指示对应的部分。
发明详述首先参考图1,框图示出应用于基于组件的软件产品106的示例性服务包104,该软件产品106具有一个或多个组件108,诸如存储在计算设备102上的组件#1到组件#X。在一实施例中,本发明包括在计算设备102上执行以更新软件产品106(例如,操作系统或应用程序)的软件。软件产品106中的每个组件108包括诸如二进制文件等至少一个文件,并且有描述组件108的清单或其它信息与之相关联。本发明使用软件产品106的基于组件的定义以提供用于更新组件108的单个方法。即,本发明提供一种组件安装器,它应用或安装服务包104中诸如二进制文件#1到二进制文件#Y等所有二进制文件110。
服务包104还包括诸如指令集#1到指令集#Z等多个指令集112(例如,包括安装步骤的声明性描述),它们指定在软件产品生命周期中与组件108相关联的任何阶段或状态处文件110的正确安装。例如,软件产品生命周期的阶段包括,但不限于,软件产品106的预部署、软件产品106的部署、以及软件产品106的后部署。其它生命周期阶段也在本发明的范围之内。本发明根据对应于软件产品106的当前生命周期阶段的指令集112来应用文件110。由此,本发明提供允许在软件产品生命周期的任何阶段、状态、或者操作上下文或环境处安装服务包104的单个服务包104。
在一个实施例中,本发明确定与组件108相关联的状态,基于所确定的状态来选择其中一个指令集112,并根据所选择的指令集112来将其中一个或多个文件110应用于组件108以修改组件108(例如,添加或移除组件或组件中的文件)。本发明还用与更新过程相关的数据来更新与被更新的组件108相关联的清单。诸如管理员等用户查询为每个组件108存储的清单,以获取随软件产品106一起安装的所有组件108的所有版本的列表、以及已对软件产品106进行的改变的列表。
接下来更详细地描述图1的系统。
组件化的软件产品接下来参考图2,框图示出根据本发明的某些实施例的示例性计算设备201。计算设备201被示为具有诸如操作系统202以及一个或多个应用程序204等软件产品。
操作系统202是计算设备201的基础软件控制程序,它执行各种功能,包括提供用户界面、管理一个或多个应用程序204的执行、以及控制从/向各个输入/输出(I/O)设备输入和输出数据。应用程序204表示可在计算设备201上执行的各种各样的软件应用程序中的一个或多个。此类应用程序204的示例包括教育程序、参考程序、生产程序(例如,文字处理器、电子表格、数据库)、娱乐程序、实用程序(例如,通信程序)等等。应用程序204可由用户安装在计算设备201上,或可由计算设备201的制造商和/或分发商预装。
操作系统202将其功能分为多个组件206,诸如组件#1到组件#N。每个组件206分别有一个对应的清单208,诸如清单#1到清单#N。组件206包括一个或多个文件(或文件标识符)的集合。这些文件可包括诸如可执行文件等软件指令、动态链接库(DLL)或组件对象模块(COM)。这些文件还可包括供一个或多个组件206使用的数据。在一个实施例中,对应于操作系统202的特定功能的文件(例如,数据和/或指令)被一起分组到同一个组件206中。例如,可能有游戏组件、通信组件、以及文件系统组件。导致组件化的文件分组可以是静态的或可随时间改变。在一个示例中,对操作系统202的更新可能导致从某些组件206中选择的文件被移除并被添加到其它组件206中。
每个清单208包括描述对应组件206的信息。关于对应组件206的各种各样的元数据中的任一个都可被包括在每个清单文件208中。在一个实现中,清单208标识对应组件206的版本、以及对应组件206依赖于其它哪些组件206(若有)。作为示例,为使组件206中的一个或多个文件正确执行,可能需要在计算设备201上安装来自另一个组件的一个或多个其它文件(例如,DLL文件)。在此例中,清单208将指示组件206依赖于其它组件。
在一种形式中,与计算设备201相关联的一个或多个计算机可读介质具有用于以诸如服务包104等服务包更新软件产品106(例如,操作系统202)的计算机可执行模块。这些计算机可执行模块被具体化为组件安装器210。组件安装器210包括配置模块212、安装模块214、脚本模块216、报告模块218、以及依存关系模块220。配置模块212确定与要被更新的组件206相关联的状态,并基于所确定的状态选择其中一个指令集。安装模块214根据所选择的指令集,通过将其中一个或多个文件应用于组件206来修改组件206。脚本模块216用与应用这一个或多个文件相关的数据来更新组件206的脚本208。报告模块218从用户接收对清单208中的数据的请求。报告模块218还响应于所接收的请求而查询清单208以生成查询结果,并将查询结果提供给用户。依存关系模块220解析服务包中的文件与软件产品中的组件206之间的依存关系。本领域技术人员将会注意,模块212-220可以都是组件安装器210的一部分,或可被存储在单独的应用程序中,或是介于中间的任意组合。此外,模块210-220可本地或远程地执行以提供功能。组件安装器210可包括比本文中示出并描述的更多或更少的功能。
更新组件软件产品接下来参考图3,框图例示根据本发明的某些实施例可如何更新组件化的软件程序。诸如以上参考图2所讨论的计算设备201等计算机被示为包括组件化操作系统202。服务包经由诸如网络310等耦合而被耦合到计算设备210。服务包302可包括诸如磁盘、光盘、闪存和固态盘等各种源中的任一个。此外,服务包302可以是本地的(例如,由计算设备201的盘驱动器访问的盘)或远程的(例如,通过网络310访问的远程服务器处的盘)。本领域技术人员将会注意,服务包302和计算设备201之间的耦合的确切特性依赖于服务包302的特性(例如,耦合可包括将盘驱动器连接到计算设备201的总线,调制解调器和电话线,网络适配器和网络,或是任何这些的组合)。
服务包302包括多个安装指令集304。如前所述,每个指令集304对应于要被更新的组件(例如,组件206)在软件产品生命周期中的一个状态或阶段。指令集304包括计算机可执行指令(例如,软件代码或脚本)或是诸如图2中的组件安装器210等应用程序在更新过程期间所遵循的声明性安装步骤。服务包302还包括更新的组件306,诸如更新的组件#1到更新的组件#M。服务包302存储分别对应于更新的组件306的更新清单308,诸如更新清单#1到更新清单#M。尽管附图将安装指令集304、更新组件306和更新清单308示为一起在服务包302中,但是可选地,安装指令集304、更新组件306和更新清单308中的任何一个或多个可被存储在不同的位置(对计算设备201而言是远程或本地的位置)。
安装指令集304标识那些是对操作系统202的更新的组件306(例如,包括组件306的版本)。在更新过程期间,假定新组件306尚未被安装成组件206中的一个,则更新组件306和对应的清单308替换或补充对应的组件206。作为示例,而非限制,组件306是组件206的较新版本。在此情况下,组件306和清单308将分别替换操作系统202中的组件206和清单208。组件306可仅仅通过用更新组件306中的一个或多个文件覆盖组件206中的一个或多个文件来替换组件206(被覆盖的文件可在被覆盖以前被可任选地保存在其它地方)。在类似的示例中,如果清单308指示组件306缺少组件206中当前存在的文件(例如,如通过检查清单208所指示),则在更新过程期间,该文件从存储操作系统202的计算机可读介质中删除。
在另一个示例中,更新组件306中的文件可以仅仅是对其它文件的引用。例如,为将服务包302的大小最小化,并确保安装的是最新的更新组件306,更新组件306可包括指向要被安装的实际文件的超链接。组件安装器210在更新过程期间下载与更新组件306相关联的文件。
可因各种各样原因中的任一种来更新操作系统202。例如,可能有对某些组件的某些文件的故障修补可用,组件206可能有新的功能(例如,替换或添加的文件),或是有新的组件306可用。
此外,可将新组件306作为操作系统202中除先前的组件206以外的部分来安装,而不是代替先前的组件206。在此例中,清单208被修改以指示新组件306和先前的组件206两者都被安装。这允许不同的应用程序使用组件206、306中它们优选的(或是被编程为要使用的)任何版本。本领域技术人员将会注意到,在一些实施例中,指令集304是对于每个组件的清单308的一部分。以此方式,组件安装器访问每个清单308以确定如何安装与其相关联的组件306。
组件安装器的操作现在参考图4,示例性流程图示出组件安装器的操作。图4的过程由诸如组件安装器210等可在诸如计算设备201或者在耦合到计算机的另一计算机上执行的应用程序来实现。组件安装器可以是正被更新的软件产品(例如,操作系统202)的一部分,或是单独的应用程序。图4的更新过程可在软件、硬件、固件或其组合中执行。
更新过程包括接收服务包、在402确定与组件相关联的状态,在404基于所确定的状态选择其中一个指令集,以及在406根据所选择的指令集将一个或多个文件应用于该组件。应用文件包括将其中每个文件从服务包复制到存储该组件的计算机可读介质中,并将所复制的文件与该组件集成。作为替代或除此之外,应用文件包括执行文件动作和/或数据动作。执行文件动作包括复制、删除和替换文件。执行数据动作包括更新诸如注册表条目等系统设置。
更新过程还包括用与应用这一个或多个文件相关的数据来更新对于该组件的清单,并在408将对于该组件的更新后的清单与该组件存储在一起。所存储的数据包括以下各项中的至少一个版本号、更新时间、服务包的描述、对组件所进行的改变的描述、软件产品的当前生命周期阶段、以及组件的存储位置。更新过程还包括在410接收来自用户的对清单中的数据的请求,在412响应于所接收的请求而查询清单以生成查询结果,并在414将查询结果提供给用户。
更新过程还解析更新组件和软件产品中现有组件之间的依存关系。依存关系解析包括访问所选择的指令集以标识依赖于该更新组件或其所依赖的一个或多个其它组件。作为依存关系解析的结果,组件安装器可按需请求和接收其它组件。
一种或多种计算机可读介质可具有用于执行图4中所示方法的计算机可执行指令。
创建服务包接下来参考图5,示例性流程图示出服务包的创建。原始设备制造商(OEM)、供应商、系统管理员、独立软件供应商、或其它用户创建服务包以供在计算机可读介质上或通过网络分发。该方法包括在502选择要与软件产品相关联的一个或多个文件,并在504将所选择的文件存储在计算机可读介质上。该方法在506还将多个安装脚本存储在该计算机可读介质上。其中每个安装脚本对应于要被更新的组件的诸状态中的一个。基于组件的状态执行这些安装脚本以将已存储的所选择的文件应用于该软件产品。一种或多种计算机可读介质具有用于执行图5中所示的方法的计算机可读指令。
示例性操作环境图6示出计算机130形式的通用计算设备的一个示例。在本发明的一个实施例中,诸如计算机130等计算机适于在本文中示出并描述的其它附图中使用。计算机130具有一个或多个处理器或处理单元132以及系统存储器134。在所示实施例中,系统总线136将包括系统存储器134在内的各种系统组件耦合到处理器132。总线136表示数种总线结构中的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任一种的处理器或局部总线。作为示例,而非限制,此类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及也称为Mezzanine总线的外围部件互连(PCI)总线。
计算机130通常至少具有某种形式的计算机可读介质。包括易失性和非易失性介质、可移动和不可移动介质的计算机可读介质可以是可由计算机130访问的任何可用介质。作为示例而非限制,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机存储介质包括RAM、ROM、EEPROM、闪存或其它存储器技术,CD-ROM、数字多功能盘(DVD)或其它光盘存储,磁带盒、磁带、磁盘存储或其它磁存储设备,或可被用来存储所需信息并可由计算机130访问的任何其它介质。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传递介质。本领域技术人员熟知已调制数据信号,它以在信号中将信息编码的方式设置或改变其一个或多个特性。诸如有线网络或直接连线连接等有线介质,以及诸如声学、RF、红外及其它无线介质等无线介质是通信介质的示例。以上任何组合也应被包括在计算机可读介质的范畴之内。
系统存储器134包括可移动和/或不可移动、易失性和/或非易失性存储器形式的计算机存储介质。在所示实施例中,系统存储器134包括只读存储器(ROM)138和随机存取存储器(RAM)140。包含诸如在启动期间帮助在计算机130内诸元件之间传递信息的基本例程的基本输入/输出系统(BIOS)142通常被存储在ROM 138中。RAM 140通常包含可由处理单元132立即访问和/或现在正由其操作的数据和/或程序模块。作为示例,而非限制,图6示出操作系统144、应用程序146、其它程序模块148和程序数据150。
计算机130还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,图6示出读或写不可移动、非易失性磁介质的硬盘驱动器154。图6还示出读或写可移动、非易失性磁盘158的磁盘驱动器156,以及读或写诸如CD-ROM或其它光介质等可移动、非易失性光盘162的光盘驱动器160。可在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,磁带盒、闪存卡、数字多功能盘、数码录像带、固态RAM、固态ROM、等等。硬盘驱动器154、以及磁盘驱动器156和光盘驱动器160通常由诸如接口166等非易失性存储器接口连接到系统总线136。
以上所讨论并在图6中示出的各驱动器或其它大容量存储设备及其相关联的计算机存储介质为计算机130提供计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图6中,硬盘驱动器154被示为存储了操作系统170、应用程序172、其它程序模块174和程序数据176。注意,这些组件可与操作系统144、应用程序146、其它程序模块148和程序数据150相同或不同。此处操作系统170、应用程序172、其它程序模块174和程序数据176被赋予不同的标号以说明至少它们是不同的副本。
用户可通过诸如键盘180和定位设备182(例如鼠标、轨迹球、笔或触摸垫)等输入设备或用户界面选择设备将命令和信息输入到计算机130中。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些及其它输入设备通过被耦合到系统总线136的用户输入接口184连接到处理单元132,但也可由诸如并行端口、游戏端口或通用串行总线(USB)等其它接口和总线结构连接。监视器188或其它类型的显示设备也经由诸如视频接口190等接口连接到系统总线136。除了监视器188以外,计算机常常包括诸如打印机和扬声器等其它外围输出设备,它们可通过输出外围接口(未示出)连接。
计算机130可使用到诸如远程计算机194等一个或多个远程计算机的逻辑连接在联网环境中操作。远程计算机194可以是个人计算机、服务器、路由器、网络PC、对等设备或其它普通网络节点,并通常包括以上相对于计算机130所描述的许多或全部元件。图6中所示的逻辑连接包括局域网(LAN)196和广域网(WAN)198,但还可包括其它网络。LAN 136和/或WAN 138可以是有线网络、无线网络、这两者的组合、等等。此类网络环境常见于办公室、企业范围的计算机网络、内联网以及全球计算机网络(例如,因特网)。
当在局域网环境中使用时,计算机130通过网络接口或适配器186连接到LAN196。当在广域网环境中使用时,计算机130通常包括调制解调器178或其它用于通过WAN 198(诸如因特网)建立通信的装置。可内置或外置的调制解调器178可经由用户输入接口184或其它适当机制连接到系统总线136。在联网环境中,相对于计算机130所描述的程序模块或其部分可被存储在远程记忆存储设备(未示出)中。作为示例,而非限制,图6示出远程应用程序192驻留在记忆设备上。可以认识到,所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它装置。
一般而言,计算机130的数据处理器是通过在不同时间存储在计算机的各个计算机可读存储介质中的指令来编程的。程序和操作系统通常被分布在例如磁盘或CD-ROM上。它们从那里被安装或加载到计算机的次级存储器中。在执行时,它们至少被部分地加载到计算机的主电子存储器中。当这些及其它各种类型的计算机可读存储介质包含用于实现以下联合微处理器或其它数据处理器描述的步骤的指令或程序时,本文中所描述的发明包括此类介质。当根据本文中所描述的方法和技术来对计算机编程时,本发明还包括该计算机本身。
为说明起见,本文中将诸如操作系统等程序及其它可执行程序组件示为离散的框。但是,要认识到,此类程序和组件在各个时候驻留在计算机的不同存储组件中,并且由计算机的(一个或多个)数据处理器执行。
尽管结合包括计算机130的示例性计算系统环境描述了本发明,但是本发明可配合各种其它通用或专用计算系统环境或配置而操作。该计算系统环境并不试图对本发明的使用或功能范围提出任何限制。此外,不应将该计算系统环境解释为对该示例性操作环境中所示出的任一组件或其组合具有任何依赖性或要求。可能适用于本发明的公知的计算系统、环境、和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、移动电话、网络PC、小型机、大型机、包括以上任何系统或设备的分布式计算环境、等等。
可在诸如程序模块等由一个或多个计算机或其它设备执行的计算机可执行指令的通用上下文中描述本发明。一般而言,程序模块包括,但不限于,执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件和数据结构。本发明还可在分布式计算环境中实施,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可位于包括记忆存储设备的本地和远程计算机存储介质中。
在操作中,计算机130执行诸如图4中所示的计算机可执行指令以更新软件产品。
示例以下示例进一步说明本发明。以下所列出的示例性清单基于如组件安装器所确定的已安装组件(例如,源或运行时)的当前状态来定义要被更新的文件的位置。在下例中,NetworkComponent(网络组件)表示功能的集合。此外,版本(version)1.1指示这是NetworkComponent的升级,它依赖于CoreOperatingSystemComponent(内核操作系统组件)的版本1.0或更新的版本。
<identity>
<name>NetworkingComponent<\name>
<version>1.1<\version>
<\identity>
<files>
fileA.dll<\files>
<install>
<source>%sourcepath%fileA.dl_<\source>
<run-time>%rundir%/fileA.dll<\run-time>
<\install>
<dependencies>
CoreOperatingSystemComponentversion>=1.0<\dependencies>
本领域技术人员将会注意到,本文中示出并描述的方法的执行或实行的顺序不是至关重要的,除非另有指出。即,发明人设想可按任何顺序来执行这些方法的元素,除非另有指出,并且这些方法可包括比本文中公开的元素更多或更少的元素。
当介绍本发明或其实施例的元素时,“一”、“一个”、“该”和“所述”旨在表示有一个或多个元素。术语“包含”、“包括”和“具有”旨在成为包括性的,并表示除所列出的元素之外还可能有其它元素。
考虑到以上,可以看到已达到本发明的数个目标,并且获得了其它有利的结果。
因为可在上述构造、产品和方法中进行各种修改而不会偏离本发明的范围,所以以上说明书中所包含并在附图中示出的所有内容都旨在应按示例性而不是限制性的意义来解释。
权利要求
1.一种更新软件产品的计算机化的方法,所述方法包括将所述软件产品定义为多个组件;基于要被更新的所述软件产品的生命周期阶段,来访问与服务包相关联的多个指令集中的一个;以及根据所访问的指令集来修改所述软件产品中的至少一个组件。
2.如权利要求1所述的计算机化的方法,其特征在于,修改所述软件产品中的组件包括从所述软件产品中移除一个或多个组件。
3.如权利要求1所述的计算机化的方法,其特征在于,修改所述软件产品中的组件包括将一个或多个组件添加到所述软件产品中。
4.如权利要求1所述的计算机化的方法,其特征在于,所述多个指令集中的每一个对应于以下生命周期阶段中的至少一个所述软件产品的预部署、所述软件产品的部署、以及所述软件产品的后部署。
5.一种用服务包来更新软件产品的方法,所述软件产品包括多个组件,每个所述组件都有一状态与其相关联,所述状态表示所述组件的操作上下文,所述服务包包括与所选择的组件相关联的一个或多个文件,所述服务包还包括用于安装所述文件的多个指令集,所述方法包括确定与所选择的组件相关联的状态;基于所确定的状态来选择所述指令集中的一个;以及根据所选择的指令集将所述文件中的一个或多个应用于所选择的组件。
6.如权利要求5所述的方法,其特征在于,还包括用与所选择的组件相关联的清单来定义与所选择的组件相关联的状态。
7.如权利要求6所述的方法,其特征在于,所述组件存储在计算机可读介质上,并且所述方法还包括用与应用一个或多个所述文件相关的数据来更新对应于所选择的组件的清单;以及将所选择的组件的更新后的清单存储在所述计算机可读介质上。
8.如权利要求7所述的方法,其特征在于,更新所述清单包括用以下各项中的至少一个来更新所选择的组件的清单版本号、更新时间、服务包的描述、以及对所述组件所进行的改变的描述。
9.如权利要求7所述的方法,其特征在于,还包括接收来自用户的、对所选择的组件的更新后的清单中的数据的请求;响应于所接收的请求查询所述的更新后的清单以生成查询结果;以及将所述查询结果提供给所述用户。
10.如权利要求6所述的方法,其特征在于,所述清单定义以下各项中的至少一个所述软件产品的生命周期阶段以及所述组件的存储位置。
11.如权利要求5所述的方法,其特征在于,所述组件存储在计算机可读介质上,并且其中,应用一个或多个所述文件包括将每个所述文件从所述服务包复制到所述计算机可读介质中,并将所复制的文件与所述组件集成。
12.如权利要求5所述的方法,其特征在于,所述服务包包括一个或多个更新组件,每一个所述更新组件具有与其相关联的一个更新清单,所述更新清单包括用于安装所述相关联的更新组件的多个指令集。
13.如权利要求5所述的方法,其特征在于,所述多个指令集中的每一个对应于以下各阶段中的至少一个所述软件产品的预部署、所述软件产品的部署、以及所述软件产品的后部署。
14.如权利要求5所述的方法,其特征在于,所述软件产品包括操作系统和应用程序中的至少一个。
15.如权利要求5所述的方法,其特征在于,将一个或多个所述文件应用于所选择的组件包括将一个或多个二进制文件应用于所选择的组件。
16.如权利要求5所述的方法,其特征在于,还包括接收服务包,所述服务包包括更新组件;以及解析所接收的更新组件和所述软件产品中所选择的组件之间的依存关系。
17.如权利要求16所述的方法,其特征在于,还包括接收在所述解析依存关系期间被标识的其它组件。
18.如权利要求16所述的方法,其特征在于,解析依存关系包括访问所选择的指令集以标识依赖于所述更新组件的其它组件。
19.如权利要求18所述的方法,其特征在于,还包括获得所述其它组件,并且其中,应用所述文件中的一个或多个包括将所述更新组件和所获得的其它组件应用于所述软件产品。
20.如权利要求5所述的方法,其特征在于,应用一个或多个包括所述文件执行以下各项中的至少一个文件动作和数据动作。
21.如权利要求20所述的方法,其特征在于,执行所述文件动作包括以下各项中的至少一个复制、删除和替换所述文件。
22.如权利要求20所述的方法,其特征在于,执行所述数据动作包括更新系统设置。
23.如权利要求22所述的方法,其特征在于,更新所述系统设置包括更新注册表条目。
24.一种或多种具有用于执行如权利要求5所述的方法的计算机可执行指令的计算机可读介质。
25.一种或多种具有用于以服务包来更新软件产品的计算机可执行模块的计算机可读介质,所述软件产品包括多个组件,每个所述组件具有一个与其相关联的状态,所述状态标识所述组件的操作上下文,所述服务包包括与所选择的组件相关联的一个或多个文件,所述服务包还包括用于安装所述文件的多个指令,所述模块包括配置模块,用于确定与所选择的组件相关联的状态,并基于所确定的状态来选择所述指令集中的一个;以及安装模块,用于通过根据由所述配置模块选择的指令集将一个或多个所述文件应用于所选择的组件来修改所选择的组件。
26.如权利要求25所述的计算机可读介质,其特征在于,所选择的组件有一清单与其相关联,其中所述清单定义与所述组件相关联的状态。
27.如权利要求26所述的计算机可读介质,其特征在于,所述组件存储在计算机可读介质上,并且所述模块还包括脚本模块,用于用与由所述安装模块应用一个或多个所述文件相关的数据更新所选择的组件的清单;以及将所选择的组件的更新后的清单存储在所述计算机可读介质上。
28.如权利要求27所述的计算机可读介质,其特征在于,还包括报告模块,用于接收来自用户的、对所选择的组件的更新后的清单中的数据的请求;响应于所接收的请求而查询所述更新后的清单以生成查询结果;以及将所述查询结果提供给所述用户。
29.如权利要求25所述的计算机可读介质,其特征在于,所述服务包包括更新组件,并且所述模块还包括依存关系模块,用于解析所述更新组件和所述软件产品中所选择的组件之间的依存关系。
30.如权利要求25所述的计算机可读介质,其特征在于,所述多个指令集中的每一个对应于以下各个阶段中的至少一个所述软件产品的预部署、所述软件产品的部署、以及所述软件产品的后部署。
31.如权利要求25所述的计算机可读介质,其特征在于,所述软件产品包括操作系统和应用程序中的至少一个。
32.一种为软件产品创建服务包的方法,所述软件产品包括多个生命周期阶段中有一个与其相关联的组件,所述方法包括选择要与所述软件产品相关联的一个或多个文件;将所选择的文件存储在计算机可读介质上;以及将多个安装脚本存储在所述计算机可读介质上,每个所述安装脚本对应于所述生命周期阶段中的一个,所述安装脚本是基于所述组件的生命周期来执行的,以将已存储的所选择的文件应用于所述软件产品。
33.如权利要求32所述的方法,其特征在于,选择要与所述软件产品相关联的一个或多个文件包括选择要与表示应用程序和操作系统中的至少一个的映像相关联的一个或多个文件。
34.如权利要求32所述的方法,其特征在于,还包括经由网络分发所述计算机可读介质。
35.如权利要求32所述的方法,其特征在于,存储所述多个安装脚本包括存储用于解析所选择的文件和与所述软件产品相关联的已安装文件之间的依存关系的多个安装脚本。
36.一种或多种具有用于执行如权利要求32所述的方法的计算机可执行指令的计算机可读介质。
37.一种存储在计算机可读介质上的用于更新软件产品的服务包,所述软件产品包括多个生命周期阶段中有一个与其相关联的组件,所述服务包包括要与所述组件相关联的一个或多个文件;以及对应于所述组件的多个生命周期阶段的多个指令集,其中所述多个指令集中的一个是响应于与所述组件相关联的生命周期阶段来选择并执行的,以将所述文件应用于所述组件。
38.如权利要求37所述的服务包,其特征在于,所述多个指令集中的一个通过将每个所述文件从所述服务包复制到所述计算机可读介质中、并将所复制的文件与所述组件集成来将所述文件应用于所述组件。
39.如权利要求37所述的方法,其特征在于,所述生命周期阶段对应于以下各项中的至少一个所述软件产品的预部署、所述软件产品的部署、以及所述软件产品的后部署。
40.如权利要求37所述的方法,其特征在于,所述软件产品包括操作系统和应用程序中的至少一个。
41.如权利要求37所述的方法,其特征在于,所述文件包括二进制文件。
42.如权利要求37所述的方法,其特征在于,所述文件包括对另一个文件的引用。
全文摘要
服务包(302)经由诸如网络(310)等耦合被耦合到计算设备(201)。服务包(302)可包括各种源中的任一个,诸如磁盘、光盘、闪存和固态盘。此外,服务包(302)可以是本地的(例如,由计算机设备(201)的盘驱动器访问的盘)或远程的(例如,通过网络(310)访问的远程服务器处的盘)。服务包(302)包括对应于要被更新的组件的状态或阶段的多个指令集(304)。
文档编号G06F9/445GK1839381SQ03827079
公开日2006年9月27日 申请日期2003年8月22日 优先权日2003年8月15日
发明者R·博克哈德特, J·苛恩, S·罗德维克, R·杰翰沃 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1