专利名称:软件分发方法与系统的制作方法
技术领域:
本发明有关于数据处理领域,更具体地讲,涉及软件分发方法与相应的系统。
背景技术:
软件产品(例如新的软件产品)的分发是一项很耗时的活动,尤其在包含软件必须分发到的大量目标计算机的系统中。例如,在包括成千上万个工作站的大型组织中,这是一种经常性的活动,因为在其中要定期更新软件产品以与信息技术的发展同步或者符合组织变化。
在最近几年中人们已经提出了软件分发应用用来帮助系统管理员有效地管理软件产品从系统中心站点的分发。软件分发应用控制建立包含以下指令的包,这些指令指明要在目标计算机上执行的行动以安装或者去除所选择的软件产品;每个包还嵌入了待安装到目标计算机上的软件产品的拷贝。该包被发送到每个目标计算机,并且相应的指令被解释以实施所希望的软件产品。
为了增加软件分发应用的灵活性,一般将所述指令以目标计算机的配置(例如,由一系列硬件参数定义)为条件。然后,使该包对于具有不同硬件配置的目标计算机通用,从而对于系统管理员要求较少的维护。
现有技术的软件分发应用基于实施模型(enforcement model),其中从系统的中心站点管理所有的操作;不支持中心站点与目标计算机之间任何类型的合作。在几种情景中,这种合作的缺乏产生了不一致。
具体地,目标计算机的硬件更新可能改变对在包中定义的条件的评估结果;换而言之,在过去分发时为真的条件可能变为伪,反之亦然。结果,安装在目标计算机上的软件产品不再与其硬件配置一致。在最好的情况下,目标计算机的硬件资源也会利用不充分。然而,这些不一致可能造成运行时错误(例如,由于缺少存储分配);在最坏的情况下,这些不一致可能破坏整个目标计算机的运行(例如,当安装在目标计算机上的软件产品的版本与其硬件不兼容时)。
在高度动态的环境下,这些缺点尤其严重,其中目标计算机的硬件配置经常变动。
发明内容
本发明的目的在于提供一种软件分发方法与相应的系统,其支持中心站点与目标计算机之间某种类型的合作。
本发明的另一目的在于避免目标计算机中的不一致性。
本发明的另一目的在于确保目标计算机的运行不会被与其配置不兼容的软件产品破坏。
这些以及其他有关目的通过包含以下步骤的软件分发方法达到在源计算机上提供包含对于为实施相应的软件产品而要在多个目标计算机中的每一个上执行的动作的指示的包,至少一个所述动作的条件为目标计算机的配置;将该包从源计算机传送到目标计算机;执行符合目标计算机配置的动作;检测导致目标计算机新配置的变化,确定修改动作以实施符合新配置的软件产品,以及执行修改动作。
本发明还提供了一种用来执行该方法的计算机程序应用,以及存储该程序应用的产品。另外,本发明提供了相应的软件分发系统。
根据本发明的一个方面,提供了一种可直接载入目标计算机工作存储器的计算机程序,当该程序在目标计算机上运行时,用来执行软件分发方法,其中目标计算机与源计算机耦合,源计算机提供包含对于为实施相应的软件产品而要在目标计算机上执行的动作的指示的包,并且其中至少一个所述动作的条件为目标计算机的配置;所述方法包含以下步骤从源计算机接收该包,执行符合目标计算机配置的动作;检测导致目标计算机新配置的变化,确定修改动作以实施符合新配置的软件产品,以及执行修改动作。
本发明还提供了一种存储该程序的产品,以及相应的用于软件分发系统的目标计算机。
在权利要求中列出了本发明的新颖特征。然而,本发明自身及其以上与其他相关目的与优点最好通过结合附图与以下描述进行了解。
图1a为可以使用本发明方法的系统的示意方框图;
图1b显示本系统的通用计算机的功能块;图2a显示本系统源主机以及终点(endpoint)的工作存储器的部分内容;图2b显示软件分发过程中使用的包的分层结构;图3a-3b为描述软件分发过程不同阶段的逻辑的流程图。
具体实施例方式
具体参考图1a,显示了具有分布式体系结构的数据处理系统100。主机计算机105运行为待在整个系统100中分发的软件产品的准备与测试中心站点。(源)主机105连接到服务器计算机110,服务器计算机110管理软件分发过程。一或多个网关计算机115将服务器与网络基础结构120耦合,网络基础结构120一般基于因特网。多个终点计算机(endpoint computer)125访问网络基础结构120;每个终点125定义了软件分发过程的目标。
终点125借助诸如TCP/IP之类的对等协议与相应的网关通信。服务器110与网关115之间的通信通过ORB建立,ORB为作为服务器与客户端之间的中间件的COBRA编程模型中的组件。每个终点125由服务器110通过在相关网关115上的相应对象来访问,由此使终点125能够直接由服务器110访问。通过这种方式,服务器110可以调用驻留于终点125的应用的方法。
如图1b所示,本系统的通用计算机由并行连接到通信总线130的几个单元形成。详细地说,中央处理单元(CPU)135控制计算机的运行,RAM 140由CPU 135直接用作工作存储器,ROM 145存储计算机自举的基本程序。还有几个外围单元连接到总线130(借助各自的接口)。具体地讲,海量存储器包含磁硬盘150与读取CD-ROM 160的驱动器155。另外,该计算机包含输入设备165(例如,包含键盘与鼠标),以及输出设备170(例如,包含监视器与打印机)。NIC 175用来控制网络通信。
如果计算机具有另一拓扑结构,如果提供了两个或多个源主机和/或服务器,如果源主机与服务器组合为单一计算机,如果终点以不同方式与服务器耦合,如果计算机具有不同的结构或者包含不同的单元等等,类似的考虑也同样适用。
现在考虑图2a,显示了源主机与通用终点的工作存储器的部分内容;该信息(程序与数据)一般存储在相应的硬盘上,并且当程序运行时与操作系统及其他应用程序(在该图中未显示)一道被(至少部分地)加载到工作存储器中。程序起初被从CD-ROM安装到硬盘上。
具体地,源主机存储用来向终点分发软件产品的包205。每个包205包含指令部分205i与数据部分205d。数据部分205d嵌入了待安装在每个终点上的实体,然而指令部分205i包含待在终点上执行的一系列动作的定义;每个动作都与可能的条件相关联,条件指明何时可以执行该动作。
更具体地,如图2b所示,包205在逻辑上组织为从根结点开始的分层结构。该分层结构的每个叶子结点都对应于一个动作。某些动作是自包含的,然而其他动作采用被称为可安装对象的对象;可安装对象为待安装到终点或者待从终点去除的实体。例如,自包含的动作指明终点的重新启动,而具有可安装对象的动作指明添加或去除文件、图标等等。分层结构的分枝结点包括包含共享容器缺省值得子动作的集合的容器。
分层结构的每个结点使类实例化。没有(待添加或者待去除的)可安装对象的动作对应于扩展通用ACTION(行动)类205p的类。ACTION类205p揭示一系列属性,这些属性指明当评估为真时允许执行动作的条件。例如,动作的条件设置为终点的不同硬件参数(诸如CPU型号或者RAM大小)、其上安装的操作系统等等;比较运算符、布尔运算符、常量以及变量可用于定义条件。ACTION类205p还揭示了CAN_EXECUTE方法,该方法使之可能验证是否可以在终点上执行动作;然后,使用DO_EXECUTE执行动作。CAN_EXECUTE方法与DO_EXECUTE方法两者都通过指明EXECUTE操作(用来执行动作)或者REVERSE操作(用来解除动作)调用。
具有指明的待从终点去除的实体的可安装对象的动作实例化REMOVE_OBJECT类205r;REMOVE_OBJECT类205r扩展ACTION类205p,从而其继承了它的所有属性。在另一方面,指明待添加到终点的实体的动作实例化ADD_OBJECT类205a,其也扩展ACTION类205p。ADD_OBJECT类205a揭示一系列属性,用于实体版本控制(其值在创建包205时设置)目的。例如,REPLACE_IF_EXISTING属性指明可以替换预先存在的实体,REPLACE_IF_NEWER属性指明只可以替换实体的旧版本,REMOVE_IF_MODIFIED属性指明当预先存在的实体被修改时必须被去除。
ADD_OBJECT类205a与REMOVE_OBJECT类205r对于(待添加或待去除的)相应实体具有关联的INSTALLABLE_OBJECT类205o。INSTALLABLE_OBJECT类205o揭示属性IS_SHARED,当实体可以在多个包之间共享时声明该属性。
容器对应于CONTAINER类205c,该类扩展ACTION类205p。CONTAINER类205c揭示另外的属性STOP_ON_FAILURE(其值在创建包时设置);该属性动作的结果可以设置其子动作的执行条件。
返回图2a,模块集合210用来准备包205。详细地说,集合210包含使操作人员能够使用图形界面定义包的编辑器。该包自身被定义为第一动作;然后,提示操作人员输入包的中间别名、名称以及版本属性。从可能选择的菜单中添加子动作,并且通过对话框设置其属性。
一旦定义了包的分层结构,就可以生成包的指令部分205i;指令部分205i包含文件(被称为软件包文件),该文件将分层结构串行化为二进制表示。为此,编辑器自顶向下遍历分层结构,并且调用与每个动作相关的ENCODE方法。所调用的方法生成一系列记录,每个记录包含为该类的属性设置的值、各个条件的定义以及依赖于其的孩子(如果有的话)。
可替换地,用正常文本文件描述该包(被称为软件包定义文件)。该文本文件的语法基于小节(stanza)的顺序,从相应于包的顶层小节开始。每个小节都表示一个动作;小节可以嵌套,其中包含其他小节的小节表示容器。集合210的转换模块通过使用常规的分析技术解释该文本文件而生成指令部分205i。
从指令部分205i建立包205。包205包含压缩的存档文件,向该存档文件添加指令部分205i。然后,解码指令部分205i。为此,读取指令部分205i,并且使用分配给每个记录的名称来访问指明相应类的查找表;一旦实例化了类,就调用与其相关的DECODE方法。所调用的方法生成包的相应分层结构。然后,遍历该分层结构,并且在每个类上调用BUILD方法。这些方法从库215(例如,存储文件、库等等)检索待安装到终点上的实体;然后,向包205添加所检索到的实体。
可以以两种不同格式准备包205。在BUILT格式,待安装到终点的实体从库215采集并且在准备时导入包的数据部分205d;通过这种方式,实体被冻结,从而在任意时间所有终点检索到包的同一拷贝。相反,在NOT_BUILT格式,只有当必须分发包时才采集实体(从而不同的终点总是接收到每个实体的最后版本)。
NOT_BUILT格式还用来以修复模式向已经收到同一包的终点分发实体。该包(由相应选项标志标识)将使每个终点遍历相应的分层结构,以在每个类上调用方法从而验证各个实体是否正确安装在终点上。生成待修复的实体列表(例如,因为这些实体缺失或者这些实体的版本不对)并且返回给源主机。然后,源主机建立相应的(增量)包以在终点上安装正确实体。使用来检测并修复终点中的不一致,尤其是从被终点用户(例如,错误地或者在安装其他软件产品时)删除或者更新而产生的不一致。也只使用相同的技术来分发在最后一次分发过程之后已经被修改的实体。
集合210还包括使能自动生成包205的工具。具体地,该工具通过以下方式运行记录相应于必须向其分发软件产品的终点的原始工作站的瞬态。然后,将软件产品安装在工作站上,并且记录新瞬态。该工具检测两个瞬态之间的差异,以生成相应的包205。优选地,解码并检查包的结果指令集合205i,以查找不希望的动作,并且设置条件。
通信服务220提供了访问包205的接口。服务220还与修复模块225耦合,该模块作为对从终点接收的相应请求的响应的控制增量包205的建立和分发。
驻留于终点的另一通信服务230与引擎235通信,引擎235在终点上实施从源主机接收的包。引擎235访问存储终点的当前硬件配置的库237;配置库237包含一系列记录,每个记录都指明相应硬件参数的值(诸如CPU型号、RAM大小等等)。引擎235管理软件分发过程的日志240;日志240包含为每个分发到终点的包存储动作以及相应条件的定义的目录;另外,使用标志来表示分发时每个条件的评估结果。引擎235还制作作为分发过程的结果而被更新或者从终点去除的实体的备份拷贝。
用于向终点添加实体的动作列表247a以及用于从终点去除实体的动作列表247r由引擎235生成,作为对以修复模式分发的包的响应。监视器250通过配置库237检测任何变化(导致终点的新配置)。相应地,监视器250生成用于添加现在符合终点新配置的实体的动作列表247a以及用于从去除现在不再符合新配置的实体的动作列表247r。(通过服务230)向源主机通报添加列表247a与去除列表247r,以触发建立相应的增量包。
在以下情况下适用类似的考虑如果整个应用以及相应的数据以不同方式构造,如果包具有另一结构(例如,如果支持逐个用户动作的概念),如果分发等效软件产品(诸如多媒体作品),如果提供不同的模块或者功能(例如,如果源主机存储用于在断开连接的计算机上测试包的模块);可替换地,包以不同的方式准备,配置库和/或包目录被替换为等效的存储结构,其他参数(硬件或者软件)用来定义终点的配置,终点配置的变化以不同方式检测(例如,每次打开终点时都检测其配置),添加动作列表与去除动作列表被替换为等效信息等等。
现在考虑图3a,方法300a表示相应于包部署的逻辑流程,该方法开始于块303。在块306通过定义待在终点上执行的动作以及相应的条件来准备包;然后将待在终点上安装的实体嵌入包中。移动到块309,操作人员向服务器提交分发请求。分发请求被传送到源主机,源主机向服务器返回标识代码,从而使操作人员能够监视并且控制分发过程。具有允许操作人员暂停或者取消分发过程的命令;还有命令使操作人员能够在分发过程完成之后请求详细报告。
现在参考块312,包被发送给终点。在达到终点之前,分发过程在多层网关中发生;网关运行为转发器(或者仓库),在其中加载并存储包。向终点上的引擎提供包的标签;然后,终点打开至最近网关的通信信道,从而直接使用同步多路复用技术下载包。包的指令部分是由终点接收的第一个文件;在块315,同时读取并解码指令部分,以在终点的工作存储器内创建包的分层结构。
引擎读取并且自顶向下地遍历如此获得的分层结构(通过在位于分层顶部的包的实例上调用所希望的方法,其方法进而在其孩子上调用相同的方法)。对于每个动作,引擎在块318检查终点配置是否符合相关条件。如果不能执行动作,则该方法进入块321(以下描述)。相反,如果终点配置是否符合与动作相关的条件,则该方法转到块324。如果动作涉及更新在终点上预先存在的实体(例如,擦除或者替换文件),则块327执行实体的备份拷贝;然后,该方法继续到块330。相反(例如,当动作涉及添加新文件时),该方法直接进入块330。
在块330执行该动作;如果动作指明可安装对象,则向终点添加该实体或者从终点去除该实体。如果实体在多个包之间共享,则引擎将该实体与计数器相关联,以指示多少包正在使用该实体。添加共享实体将增加该计数器值,而去除则减少计数器值;只有当计数器变为零时(即不再有包使用该实体),才将实体从终点物理地去除。然后,该方法转到块321。
现在考虑块321,具有相应条件的动作及其评估结果记录在包目录日志中。在块333进行测试以确定是否已经处理了包的最后一个动作。如果不是,则方法返回块318,以验证并且可能执行下一个动作。相反,当已经处理了包的最后一个动作时,分发过程在最终块335处结束。
现在转到图3b,在终点上运行的监视器执行另一方法300b,该方法开始于块336。监视器在块337循环等待事件发生。每当检测到终点配置变化时,执行步骤339-363;相反,如果关闭终点,则该方法在最终块369结束。
现在考虑块339,在相应库中记录所发生的导致终点新配置的任何变化(例如硬件更新);这使监视器检测硬件参数列表中的变化以及相关新值。作为对此的响应,监视器触发对包目录的扫描,以标识具有基于由该更新所修改的一或多个硬件参数的条件的所有动作。
对于这些动作的每一个,在块342再次评估相应的条件。如果该条件在新配置下变为有效,则在块345将该动作插入添加动作列表,然后该方法转到块348(以下描述)。如果该条件在新配置下不再有效,则在块351将动作插入去除动作列表,然后该方法继续到块348。如果评估结果为未改变(即条件保持有效或者无效),则该方法直接进入块348。在判定块348进行测试以确定是否已经处理了最后一个动作。如果不是,则该方法返回块342以评估与下一动作相关的条件。
一旦处理了所有动作,该方法就进入块357,在其中向源主机通报添加动作列表与去除动作列表。作为对此的响应,在块360建立相应的增量包。该增量包的指令部分指明安装添加动作列表的动作所要求的实体,以及解除去除动作列表的动作;该增量包的数据部分嵌入了待安装在终点上的实体(由添加动作列表指明)。现在参考块363,向终点分发增量包(重复上述操作)。结果,与添加动作列表相关的实体被安装到终点上;同时,与去除动作列表相关的实体被删除(如果这些实体已经被添加到终点上的话),或者从其备份拷贝恢复这些实体(如果这些实体已经被去除或者替换为不同的版本的话)。然后,该方法返回块337,等待新事件发生。
例如,请考虑指明以下具有相应条件的动作的包的分发Action_1添加File_1如果CPU=型号_1Action_2去除File_2如果RAM≤64M字节Action_3添加File_3如果RAM≤64M字节Action_4添加File_4如果RAM>64M字节假设该包被分发给具有不同于型号_1的CPU以及32M字节RAM的终点,则只有与Action_2和Action_3相关的条件为真。因此,引擎从终点去除File_2(在制作备份拷贝之后),然后安装File_3(而File_1与File_4甚至没有传送给终点)。
在终点上进行硬件更新;该更新涉及安装新的型号_1的CPU类型以及安装一些内存使RAM大小变为128M字节。这些变化使Action_1与Action_4的条件变为真,但是Action_2和Action_3的条件不再有效。作为对此的响应,向源主机发送对于执行Action_1与Action_4以及对于解除Action_2和Action_3的请求。相应地,源主机建立相应的增量包,然后将该增量包分发给终点。结果,File_2被(从其备份拷贝)恢复,File_3被去除;同时接收并在终点上安装File_1与File_4。
以下情况下也适用类似的考虑如果执行等效方法(例如,使用检查点,在软件分发过程中周期性地写入该检查点以使之能够在终点故障或者重启之后重新开始),如果利用不同的技术部署包,如果以交易模式分发包(其中每个动作首先被准备然后再提交,从而如果在准备阶段出现某种错误,则使之能够回滚到一致状态)等等。
更一般地,本发明提出了一种软件分发方法。该方法开始的步骤(在源计算机上执行)为提供包含对于为实施相应的软件产品而要在多个目标计算机中的每一个上执行的动作的指示的包;一或多个动作的条件为目标计算机的配置。将该包从源计算机传送到目标计算机,并且执行符合目标计算机配置的动作。通过本发明的方法,检测导致目标计算机新配置的变化。确定用来实施符合新配置的软件产品的修改动作;然后执行该修改动作。
所提出的方案基于支持源计算机与目标计算机之间合作的模型。
本发明的方法避免了目标计算机中的不一致性。
具体地讲,所提出的方案保证目标计算机的运行不会受到与其配置不兼容的软件特征的损害。
具体地讲,本发明的解决方案在高度动态环境(其中目标计算机的配置经常变化)下尤其有利,甚至不排除在不同应用中使用该方案。
上述本发明的实施方式还提供了其他优点。
具体地讲,扫描每个待分发给终点的包以标识其配置变化所影响的所有动作;再次评估这些条件,并且执行现在符合终点新配置的相应动作。
通过这种方式,以非常简单的方式确定修改动作,而不需要再次评估包的所有条件。
优选地,在包目录中与分发时的相应评估结果一道记录包的所有动作与条件。
所设想的解决方案提高了软件分发过程的有效性。
有利的是,为新配置而从源主机请求安装在终点的实体。
所提出的特征避免了终点上存储空间的浪费。
然而,本发明的解决方案即使在以下情况下也可以执行以不同方式定义条件,评估新配置中每个包的所有条件,记录不同信息的日志,在终点上存储整个包,在源主机的控制下确定待执行的动作等等。
优选地,修改动作还指明解除不再符合终点新配置的、已执行的动作。
该附加步骤使之能够在终点上恢复一致状态(具有新配置所需的所有实体)。
作为进一步的改进,将已执行的动作所影响的实体从其备份拷贝恢复。
因此,可以将在分发过程中删除或者更新的任何实体恢复到其原始版本。
可替换地,在不要求任何备份拷贝的情况下解除动作,将备份拷贝存储在其他地方,不能恢复实体,或者不以不可解除的方式执行动作。
在本发明的优选实施方式中,将添加动作列表与去除动作列表传送给源主机,源主机相应地建立增量包以使之执行相应的修改动作。
所提出的解决方案提供了对在终点上执行的所有动作的集中控制。使用增量包使之可能防止终点中的任何不一致(确保执行添加动作列表与去除动作列表两者中的所有动作)。另外,可以通过利用已经在源主机上可得的修复模块而实现该特征。
然而,本发明的方法还适用于以以下方式执行以不同方式执行修改动作,直接在终点上解除去除动作列表的动作,甚至在源主机上提供用来建立增量包的专门模块。
有利的是,使用在CD-ROM上提供的计算机程序应用来实现根据本发明的解决方案。
该应用具有客户端-服务器的体系结构;具体地讲,该应用包含安装在源主机上的程序以及安装在每个终点上的程序。另外,应该注意在终点上程序适合于分离地实现,甚至作为独立产品投放市场。
可替换地,这些程序在软盘上提供,并且被预先加载在硬盘上,或者存储在任何其他计算机可读介质上,并且通过网络(一般为因特网)发送给计算机,被广播,或者更一般地以可直接载入计算机工作存储器的任意其他形式提供。然而,根据本发明的方法也可以使用以下执行具有不同体系结构的应用,甚或硬件结构(例如集成在一或多个半导体材料芯片中)。
自然地,为了满足本地以及特定需求,本领域技术人员可以对上述解决方案进行许多修改与变化,但是这些修改与变化都落入权利要求所限定的范围内。
权利要求
1.一种软件分发方法(300a、300b),包含以下步骤在源计算机上提供(306)包含对于为实施相应的软件产品而要在多个目标计算机中的每一个上执行的动作的指示的包,至少一个所述动作的条件为目标计算机的配置;将该包从源计算机传送(312)到目标计算机;执行(315-333)符合目标计算机配置的动作,特征在于以下步骤检测(337)导致目标计算机新配置的变化,确定(339-351)修改动作以实施符合新配置的软件产品,以及执行(357-363)修改动作。
2.根据权利要求1的软件分发方法(300a、300b),其中所述包还包含对于基于目标计算机的至少一个配置参数的至少一个条件的指示,每个条件都与至少一个动作相关,以及其中所述执行(315-333)符合目标计算机配置的动作的步骤包含根据目标计算机配置执行(318)每个条件的第一评估,以及当第一评估的相应结果为肯定时执行(324-330)所述与条件相关的至少一个动作,以及所述确定(339-351)修改动作的步骤包含根据由所述变化影响的至少一个配置参数标识(339)条件,根据新配置执行(342)每个所标识的条件的第二评估,以及当第一评估的相应结果为否定并且第二评估的相应结果为肯定时,选择(345)所述与所标识的条件相关的至少一个动作。
3.根据权利要求2的软件分发方法(300a、300b),还包括以下步骤在目标计算机上存储(321)对于所述行为的指示以及对于具有第一评估的相应结果的所述至少一个条件的指示。
4.根据权利要求3的软件分发方法(300a、300b),其中至少一个修改动作涉及在目标计算机上安装相应实体,该方法还包括向源计算机请求(357)每个实体的步骤。
5.根据权利要求2至4中任一项的软件分发方法(300a、300b),其中所述确定(339-351)修改动作的步骤还包括对于每一个所标识的条件,定义(351)至少一个解除动作以在第一评估的相应结果为肯定并且第二评估的相应结果为否定时解除所述与所标识的条件相关的至少一个动作。
6.根据权利要求5的软件分发方法(300a、300b),还包括以下步骤在所执行的动作影响的目标计算机上制作(327)每个预先存在的实体的备份拷贝,至少一个解除动作涉及恢复相应的已执行动作所影响的每个预先存在实体的备份拷贝。
7.根据权利要求1至6中任一项的软件分发方法(300a、300b),其中所述执行修改动作的步骤(357-363)包括向源计算机发送(357)对于修改动作的指示;建立(360)另一包以使之在目标计算机上执行修改动作,以及向目标计算机发送(363)该另一包。
8.一种可直接载入数据处理系统(100)的工作存储器(140)的计算机程序应用(210、225、235、250),当该应用在该数据处理系统上运行时,用来执行根据权利要求1至7中任一项的方法。
9.一种包含计算机可读介质的计算机应用产品(160),在该产品上存储了根据权利要求8的程序应用(210、225、235、250)。
10.一种可直接载入目标计算机(125)工作存储器(140)的计算机程序(235、250),当该程序在目标计算机上运行时,用来执行软件分发方法(300a、300b),其中目标计算机与源计算机(105)耦合,源计算机提供包含对于为实施相应的软件产品而要在目标计算机上执行的动作的指示的包,并且其中至少一个所述动作的条件为目标计算机的配置;所述方法包含以下步骤从源计算机接收(312)该包,执行(315-333)符合目标计算机配置的动作,特征在于以下步骤检测(337)导致目标计算机新配置的变化,确定(339-351)修改动作以实施符合新配置的软件产品,以及执行(357-363)修改动作。
11.一种包含其上存储了根据权利要求10的程序(235、250)的计算机可读介质的程序产品(160)。
12.一种软件分发系统(100),包含源计算机(105)与多个目标计算机(125),源计算机具有用来提供包含对于为实施相应的软件产品而要在多个目标计算机中的每一个上执行的动作的指示的包的部件(210),至少一个所述动作的条件为目标计算机的配置;其中所述系统还包括用于将该包从源计算机传送到目标计算机的部件(220、230),并且目标计算机包含用于执行符合目标计算机配置的动作的部件(235),特征在于目标计算机还包括用于检测导致目标计算机新配置的变化的部件(250),用于确定修改动作以实施符合新配置的软件产品的部件(250),以及用于执行修改动作的部件(235)。
13.一种用于软件分发系统(100)的目标计算机(125),所述软件分发系统包含源计算机(105),源计算机具有用来提供包含对于为实施相应的软件产品而要在目标计算机上执行的动作的指示的包的部件(210),至少一个所述动作的条件为目标计算机的配置,其中目标计算机包含用于从源计算机接收该包的部件(230),用于执行符合目标计算机配置的动作的部件(235),特征在于目标计算机还包含用于检测导致目标计算机新配置的变化的部件(250),用于确定修改动作以实施符合新配置的软件产品的部件(250),以及用于执行修改动作的部件(235)。
全文摘要
提出了一种软件分发方法(300b)与相应的系统。在软件分发应用中,在中心站点准备包含指明为安装或去除所选择的软件产品而要在每一个目标计算机上执行的动作的指令的包;一般地,这些动作以对于目标计算机的硬件配置为条件。向目标计算机发送每个包,并且解释相应的指令以实施符合目标计算机当前配置的所希望的软件产品。在本发明的解决方案中,监视目标计算机的配置以检测(337)任何硬件更新。作为对此的响应,目标计算机生成(339-351)用来去除不再符合新配置的软件产品的动作列表以及用来安装现在符合新配置的动作列表。
文档编号G06F9/445GK1647038SQ03808218
公开日2005年7月27日 申请日期2003年2月13日 优先权日2002年4月11日
发明者克劳迪奥·马里内利, 卢吉·皮切蒂 申请人:国际商业机器公司