CN1313923C - 软件分发方法与系统 - Google Patents
软件分发方法与系统 Download PDFInfo
- Publication number
- CN1313923C CN1313923C CNB038082187A CN03808218A CN1313923C CN 1313923 C CN1313923 C CN 1313923C CN B038082187 A CNB038082187 A CN B038082187A CN 03808218 A CN03808218 A CN 03808218A CN 1313923 C CN1313923 C CN 1313923C
- Authority
- CN
- China
- Prior art keywords
- action
- object computer
- configuration
- bag
- condition
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 230000009471 action Effects 0.000 claims abstract description 134
- 230000004048 modification Effects 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 abstract description 6
- 230000001143 conditioned effect Effects 0.000 abstract 1
- 230000000875 corresponding effect Effects 0.000 description 35
- 238000004891 communication Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000003578 releasing effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 241000270295 Serpentes Species 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000015654 memory Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/64—Retargetable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
提出了一种软件分发方法(300b)与相应的系统。在软件分发应用中,在中心站点准备包含指明为安装或去除所选择的软件产品而要在每一个目标计算机上执行的动作的指令的包;一般地,这些动作以对于目标计算机的硬件配置为条件。向目标计算机发送每个包,并且解释相应的指令以实施符合目标计算机当前配置的所希望的软件产品。在本发明的解决方案中,监视目标计算机的配置以检测(337)任何硬件更新。作为对此的响应,目标计算机生成(339-351)用来去除不再符合新配置的软件产品的动作列表以及用来安装现在符合新配置的动作列表。
Description
技术领域
本发明有关于数据处理领域,更具体地讲,涉及软件分发方法与相应的系统。
背景技术
软件产品(例如新的软件产品)的分发是一项很耗时的活动,尤其在包含软件必须分发到的大量目标计算机的系统中。例如,在包括成千上万个工作站的大型组织中,这是一种经常性的活动,因为在其中要定期更新软件产品以与信息技术的发展同步或者符合组织变化。
在最近几年中人们已经提出了软件分发应用用来帮助系统管理员有效地管理软件产品从系统中心站点的分发。软件分发应用控制建立包含以下指令的包,这些指令指明要在目标计算机上执行的行动以安装或者去除所选择的软件产品;每个包还嵌入了待安装到目标计算机上的软件产品的拷贝。该包被发送到每个目标计算机,并且相应的指令被解释以实施所希望的软件产品。
为了增加软件分发应用的灵活性,一般将所述指令以目标计算机的配置(例如,由一系列硬件参数定义)为条件。然后,使该包对于具有不同硬件配置的目标计算机通用,从而对于系统管理员要求较少的维护。
现有技术的软件分发应用基于实施模型(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=型号_1
Action_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上提供的计算机程序应用来实现根据本发明的解决方案。
该应用具有客户端-服务器的体系结构;具体地讲,该应用包含安装在源主机上的程序以及安装在每个终点上的程序。另外,应该注意在终点上程序适合于分离地实现,甚至作为独立产品投放市场。
可替换地,这些程序在软盘上提供,并且被预先加载在硬盘上,或者存储在任何其他计算机可读介质上,并且通过网络(一般为因特网)发送给计算机,被广播,或者更一般地以可直接载入计算机工作存储器的任意其他形式提供。然而,根据本发明的方法也可以使用以下执行:具有不同体系结构的应用,甚或硬件结构(例如集成在一或多个半导体材料芯片中)。
自然地,为了满足本地以及特定需求,本领域技术人员可以对上述解决方案进行许多修改与变化,但是这些修改与变化都落入权利要求所限定的范围内。
Claims (9)
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至3中任一项的软件分发方法(300a、300b),其中所述执行修改动作的步骤(357-363)包括:
向源计算机发送(357)对于修改动作的指示;
建立(360)另一包以使之在目标计算机上执行修改动作,以及
向目标计算机发送(363)该另一包。
8.一种软件分发系统(100),包含源计算机(105)与多个目标计算机(125),源计算机具有用来提供包含对于为实施相应的软件产品而要在多个目标计算机中的每一个上执行的动作的指示的包的部件(210),至少一个所述动作的条件为目标计算机的配置;其中所述系统还包括用于将该包从源计算机传送到目标计算机的部件(220、230),并且目标计算机包含用于执行符合目标计算机配置的动作的部件(235),
特征在于目标计算机还包括用于检测导致目标计算机新配置的变化的部件(250),用于确定修改动作以实施符合新配置的软件产品的部件(250),以及用于执行修改动作的部件(235)。
9.一种用于软件分发系统(100)的目标计算机(125),所述软件分发系统包含源计算机(105),源计算机具有用来提供包含对于为实施相应的软件产品而要在目标计算机上执行的动作的指示的包的部件(210),至少一个所述动作的条件为目标计算机的配置,其中目标计算机包含用于从源计算机接收该包的部件(230),用于执行符合目标计算机配置的动作的部件(235),特征在于目标计算机还包含用于检测导致目标计算机新配置的变化的部件(250),用于确定修改动作以实施符合新配置的软件产品的部件(250),以及用于执行修改动作的部件(235)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP02368036 | 2002-04-11 | ||
EP02368036.6 | 2002-04-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1647038A CN1647038A (zh) | 2005-07-27 |
CN1313923C true CN1313923C (zh) | 2007-05-02 |
Family
ID=28686028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038082187A Expired - Fee Related CN1313923C (zh) | 2002-04-11 | 2003-02-13 | 软件分发方法与系统 |
Country Status (7)
Country | Link |
---|---|
US (2) | US7490322B2 (zh) |
EP (1) | EP1497721B1 (zh) |
JP (1) | JP4524113B2 (zh) |
CN (1) | CN1313923C (zh) |
AU (1) | AU2003210427A1 (zh) |
CA (1) | CA2481712C (zh) |
WO (1) | WO2003085513A2 (zh) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6751794B1 (en) * | 2000-05-25 | 2004-06-15 | Everdream Corporation | Intelligent patch checker |
WO2003085513A2 (en) * | 2002-04-11 | 2003-10-16 | International Business Machines Corporation | A software distribution method and system |
US7577948B2 (en) * | 2003-07-02 | 2009-08-18 | Upgradedetect, Inc. | System and method for providing computer upgrade information |
GB2413407B (en) * | 2004-04-22 | 2007-11-07 | Ibm | Method and system for software or data distribution |
US8413134B2 (en) * | 2005-05-10 | 2013-04-02 | International Business Machines Corporation | Method, system and computer program for installing software products based on package introspection |
US8166458B2 (en) * | 2005-11-07 | 2012-04-24 | Red Hat, Inc. | Method and system for automated distributed software testing |
CN101657793B (zh) * | 2007-04-05 | 2014-08-13 | 国际商业机器公司 | 用于配置防火墙的方法、系统和计算机程序 |
US8739131B2 (en) | 2007-05-04 | 2014-05-27 | International Business Machines Corporation | Completing functional testing |
US20080294777A1 (en) * | 2007-05-25 | 2008-11-27 | Alexei Karve | Method and apparatus for template-based provisioning in a service delivery environment |
US8239505B2 (en) * | 2007-06-29 | 2012-08-07 | Microsoft Corporation | Progressively implementing declarative models in distributed systems |
US8250169B2 (en) * | 2007-09-24 | 2012-08-21 | Sap Ag | Business context data companion tool |
US8127237B2 (en) | 2007-09-24 | 2012-02-28 | Sap Ag | Active business client |
US8572580B2 (en) * | 2008-07-28 | 2013-10-29 | Microsoft Corporation | Computer application packages with customizations |
US20100031249A1 (en) * | 2008-08-04 | 2010-02-04 | International Business Machines Corporation | Method for policy based enforcement of business requirements for software install |
US7721279B1 (en) * | 2009-01-28 | 2010-05-18 | International Business Machines Corporation | Packaging information integration applications |
US8712953B2 (en) * | 2009-03-25 | 2014-04-29 | Sap Ag | Data consumption framework for semantic objects |
US8782530B2 (en) * | 2009-03-25 | 2014-07-15 | Sap Ag | Method and system for providing a user interface in a computer |
US20100262953A1 (en) * | 2009-04-14 | 2010-10-14 | Barboni Michael P | Systems and methods for automatically enabling and disabling applications and widgets with a computing device based on compatibility and/or user preference |
US10656931B2 (en) * | 2009-05-26 | 2020-05-19 | Comcast Cable Communications, Llc | Network event triggered software updates |
US8661433B2 (en) | 2009-10-30 | 2014-02-25 | Hewlett-Packard Development Company, L.P. | Systems and methods of creating a restorable computer installation |
US9176898B2 (en) * | 2009-11-09 | 2015-11-03 | Bank Of America Corporation | Software stack building using logically protected region of computer-readable medium |
US20110113424A1 (en) * | 2009-11-09 | 2011-05-12 | Bank Of America Corporation | Distribution Of Software Updates |
US8584113B2 (en) * | 2009-11-09 | 2013-11-12 | Bank Of America Corporation | Cross-updating of software between self-service financial transaction machines |
US20110113422A1 (en) * | 2009-11-09 | 2011-05-12 | Bank Of America Corporation | Programmatic Creation Of Task Sequences From Manifests |
US8972974B2 (en) * | 2009-11-09 | 2015-03-03 | Bank Of America Corporation | Multiple invocation points in software build task sequence |
US20110113416A1 (en) * | 2009-11-09 | 2011-05-12 | Bank Of America Corporation | Network-Enhanced Control Of Software Updates Received Via Removable Computer-Readable Medium |
US9122558B2 (en) * | 2009-11-09 | 2015-09-01 | Bank Of America Corporation | Software updates using delta patching |
US8600996B2 (en) * | 2009-12-08 | 2013-12-03 | Tripwire, Inc. | Use of inference techniques to facilitate categorization of system change information |
US8996684B2 (en) * | 2009-12-08 | 2015-03-31 | Tripwire, Inc. | Scoring and interpreting change data through inference by correlating with change catalogs |
US9741017B2 (en) | 2009-12-08 | 2017-08-22 | Tripwire, Inc. | Interpreting categorized change information in order to build and maintain change catalogs |
US8868987B2 (en) * | 2010-02-05 | 2014-10-21 | Tripwire, Inc. | Systems and methods for visual correlation of log events, configuration changes and conditions producing alerts in a virtual infrastructure |
US8875129B2 (en) * | 2010-02-05 | 2014-10-28 | Tripwire, Inc. | Systems and methods for monitoring and alerting events that virtual machine software produces in a virtual infrastructure |
US8566823B2 (en) * | 2010-02-05 | 2013-10-22 | Tripwire, Inc. | Systems and methods for triggering scripts based upon an alert within a virtual infrastructure |
US20110238572A1 (en) * | 2010-03-25 | 2011-09-29 | Bank Of America Corporation | Remote Control Of Self-Service Terminal |
US20130191495A1 (en) * | 2012-01-23 | 2013-07-25 | Cristian Almstrand | Framework and system to distribute applications for heterogeneous platforms |
JP5533935B2 (ja) * | 2012-05-10 | 2014-06-25 | トヨタ自動車株式会社 | ソフトウェア配信システム、ソフトウェア配信方法 |
US9342317B2 (en) * | 2012-08-09 | 2016-05-17 | International Business Machines Corporation | Importing profiles for configuring specific system components into a configuration profile for the system |
US9223592B2 (en) | 2012-08-09 | 2015-12-29 | International Business Machines Corporation | Configuring a system with various system components utilizing a configuration profile |
US9766873B2 (en) | 2012-08-17 | 2017-09-19 | Tripwire, Inc. | Operating system patching and software update reconciliation |
US9367301B1 (en) * | 2013-03-06 | 2016-06-14 | Attivio Inc. | Dynamic update of a distributed message processing system |
US9329854B2 (en) * | 2013-03-07 | 2016-05-03 | Telefonaktiebolaget L M Ericsson (Publ) | Staging calculation for upgrade campaign generation |
US20140357357A1 (en) | 2013-05-30 | 2014-12-04 | Microsoft Corporation | Game bundle package |
US20140359605A1 (en) * | 2013-05-30 | 2014-12-04 | Microsoft Corporation | Bundle package signing |
US9766870B2 (en) * | 2013-05-30 | 2017-09-19 | Microsoft Technology Licensing, Llc | Bundle package generation |
US9323514B2 (en) | 2013-05-30 | 2016-04-26 | Microsoft Technology Licensing, Llc | Resource package indexing |
US9690564B2 (en) * | 2013-09-10 | 2017-06-27 | International Business Machines Corporation | Runtime detection of software configurations and upgrades |
TW201521403A (zh) * | 2013-11-19 | 2015-06-01 | Inst Information Industry | 軟體漫遊系統、方法與其電腦可讀取記錄媒體 |
CN105515806A (zh) * | 2014-09-24 | 2016-04-20 | 中兴通讯股份有限公司 | 软件版本处理方法及装置 |
US9116777B1 (en) * | 2014-09-25 | 2015-08-25 | International Business Machines Corporation | In-flight process instance migration between business process execution language (BPEL) suites |
US9740473B2 (en) | 2015-08-26 | 2017-08-22 | Bank Of America Corporation | Software and associated hardware regression and compatibility testing system |
JP6855348B2 (ja) * | 2017-07-31 | 2021-04-07 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置およびダウンロード処理方法 |
US10255065B1 (en) * | 2017-12-29 | 2019-04-09 | Semmle Limited | Automatically building software projects |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5361360A (en) * | 1991-12-13 | 1994-11-01 | Hitachi, Ltd. | Method for generating software development environment |
US20020010910A1 (en) * | 2000-07-15 | 2002-01-24 | International Business Machines Corporation | Preferable modes of software package deployment |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1994025913A2 (en) * | 1993-04-30 | 1994-11-10 | Novadigm, Inc. | Method and apparatus for enterprise desktop management |
JPH10177473A (ja) * | 1996-12-18 | 1998-06-30 | Japan Airlines Co Ltd | コンピュータ・プログラムのインストール方法及びシステム |
US6684397B1 (en) * | 1997-09-08 | 2004-01-27 | Novell, Inc. | Auto-install apparatus and method |
US6117187A (en) * | 1997-09-30 | 2000-09-12 | Hewlett-Packard Company | Automatic generation of a software installation package |
DE69941142D1 (de) * | 1998-05-06 | 2009-09-03 | Sun Microsystems Inc | Verarbeitungsmaschine und verarbeitungsverfahren |
US6080207A (en) * | 1998-06-04 | 2000-06-27 | Gateway 2000, Inc. | System and method of creating and delivering software |
US6966060B1 (en) * | 1999-07-02 | 2005-11-15 | Microsoft Corporation | Method and system for remote client installation |
US7219332B2 (en) * | 2000-07-07 | 2007-05-15 | Microsoft Corporation | Configuring software components(merge) with transformation component using configurable and non-configurable data elements |
US7103650B1 (en) * | 2000-09-26 | 2006-09-05 | Microsoft Corporation | Client computer configuration based on server computer update |
US6832372B1 (en) * | 2000-09-29 | 2004-12-14 | Hewlett-Packard Development Company, L.P. | Updating system ROM configuration utility using NVRAM |
US7213231B1 (en) * | 2001-01-11 | 2007-05-01 | Cisco Technology, Inc. | Cross-spectrum application model for dynamic computing environments in software lifecycle |
US20020147974A1 (en) * | 2001-02-09 | 2002-10-10 | Wookey Michael J. | Networked installation system for deploying systems management platforms |
US6901580B2 (en) * | 2001-06-22 | 2005-05-31 | Intel Corporation | Configuration parameter sequencing and sequencer |
CA2357087C (en) * | 2001-09-06 | 2009-07-21 | Cognos Incorporated | Deployment manager for organizing and deploying an application in a distributed computing environment |
WO2003085513A2 (en) | 2002-04-11 | 2003-10-16 | International Business Machines Corporation | A software distribution method and system |
US7219344B2 (en) * | 2002-04-30 | 2007-05-15 | Accenture Global Services Gmbh | Method and apparatus for deploying programs and computing platforms to selected computers |
-
2003
- 2003-02-13 WO PCT/EP2003/002300 patent/WO2003085513A2/en active Search and Examination
- 2003-02-13 AU AU2003210427A patent/AU2003210427A1/en not_active Abandoned
- 2003-02-13 CA CA2481712A patent/CA2481712C/en not_active Expired - Fee Related
- 2003-02-13 CN CNB038082187A patent/CN1313923C/zh not_active Expired - Fee Related
- 2003-02-13 JP JP2003582632A patent/JP4524113B2/ja not_active Expired - Fee Related
- 2003-02-13 US US10/510,547 patent/US7490322B2/en not_active Expired - Fee Related
- 2003-02-13 EP EP03745759.5A patent/EP1497721B1/en not_active Expired - Lifetime
-
2009
- 2009-01-14 US US12/353,685 patent/US8266617B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5361360A (en) * | 1991-12-13 | 1994-11-01 | Hitachi, Ltd. | Method for generating software development environment |
US20020010910A1 (en) * | 2000-07-15 | 2002-01-24 | International Business Machines Corporation | Preferable modes of software package deployment |
Also Published As
Publication number | Publication date |
---|---|
US20090158268A1 (en) | 2009-06-18 |
US7490322B2 (en) | 2009-02-10 |
JP2005522757A (ja) | 2005-07-28 |
CA2481712A1 (en) | 2003-10-16 |
WO2003085513A3 (en) | 2004-04-15 |
CN1647038A (zh) | 2005-07-27 |
JP4524113B2 (ja) | 2010-08-11 |
US20050149925A1 (en) | 2005-07-07 |
WO2003085513A2 (en) | 2003-10-16 |
EP1497721B1 (en) | 2015-04-01 |
US8266617B2 (en) | 2012-09-11 |
AU2003210427A8 (en) | 2003-10-20 |
AU2003210427A1 (en) | 2003-10-20 |
EP1497721A2 (en) | 2005-01-19 |
CA2481712C (en) | 2011-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1313923C (zh) | 软件分发方法与系统 | |
CN1291313C (zh) | 操作系统的自动安装和配置的系统和方法 | |
US6757893B1 (en) | Version control system for software code | |
CN1191526C (zh) | 用于计算机系统的可恢复软件安装方法和装置 | |
CN1959640A (zh) | 在软件包管理系统将用户进程表示为软件包的系统和方法 | |
CN1858704A (zh) | 升级程序的方法 | |
CN101042645A (zh) | 统一软件开发环境的方法、设备及系统 | |
CN1500243A (zh) | 使用可移动存储器收集和恢复用户环境数据 | |
CN1668010A (zh) | 用来在更新分发系统中分发更新元数据的基于标记模式 | |
CN1578943A (zh) | 用于应用配置的智能目录的方法和设备 | |
CN104360892B (zh) | 创建虚拟机的系统及方法 | |
CN1323416A (zh) | 模型效果分析 | |
CN1670708A (zh) | 一种计算机日志的管理方法 | |
CN1577242A (zh) | 用于自动配置的系统和方法 | |
CN1804840A (zh) | 数据访问层类生成器 | |
CN1673972A (zh) | 数据库表更新的动态监控系统及方法 | |
CN1404587A (zh) | 使用虚拟驱动的分区的再生成方法、数据处理装置和数据存储装置 | |
CN1103083C (zh) | 用于管理软件系统开发的设备和方法 | |
CN1549178A (zh) | 分配和更新杂散资源的方法和系统 | |
JPH0798649A (ja) | 固定オブジェクト記憶システム | |
CN1629817A (zh) | 复制设备、复制方法和块标识数据获取方法 | |
CN1295778C (zh) | 一种验证芯片硬件行为与软件模拟行为的一致性的方法 | |
CN1848083A (zh) | 一般软件要求分析器 | |
CN115391427A (zh) | Impala自动化伸缩的系统、方法、介质及设备 | |
CN1841336A (zh) | 计算机测试方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070502 Termination date: 20190213 |
|
CF01 | Termination of patent right due to non-payment of annual fee |