根据各版本将更新应用于程序和数据文件集合的方法

文档序号:6557086阅读:158来源:国知局
专利名称:根据各版本将更新应用于程序和数据文件集合的方法
技术领域
本发明一般涉及计算机软件领域和具体地涉及根据各版本更新程序和数据文件的方法和系统。
软件开发是建立计算机中使用的各软件应用程序例如字处理程序、网络浏览器软件或表格处理程序的过程。为建立这些软件应用程序,软件开发商(或编程人员)利用软件开发商的工具包例如可从SunMicrosystems,Inc.得到的Java开发商工具包(JDK)。工具包提供给软件开发商或编程人员一套软件子程序和应用程序的集合,用于帮助编程人员编写和开发软件应用程序和/或建立和维护数据库。例如,工具包可以为图形接口提供用于建立菜单、对话框、字体和图标的工具和库。工具包还提供用于将应用程序连至软件子程序库及将程序与操作环境例如WindowsTM实行连接的装置。Windows是华盛顿州Redmond的微软公司的产品和注册商标。
技术革新和变更的当今步伐比以前任何时候都快。尤其半导体和其他计算机硬件技术的发展每日都在提供更快和更强有力数据处理系统。这些发展为软件开发商提供了新的机会和能力来提供更好和更快的具有更多用户所希望特征的软件应用程序。
为跟上和利用计算机系统中这些技术发展以及跟上或提前于竞争,软件开发商经常更新和修改他们的程序以便增加更多特征和使这些程序运行得更快和更为有效。然而,并非所有数据处理系统都采用相同类型的计算机体系结构,它们也不都采用相同的操作系统。因此,许多应用程序编写成很多版本,每个版本准备用于不同类型的数据处理系统。例如,决定于顾客所拥有计算机的类型,顾客可能购买用于Windows的Quicken或者购买用于MacintoshTM的Quicken。Quicken是一个个人财务管理软件产品,它是加利弗尼亚州Mountain View的Intuit Inc.的注册商标。Macintosh是加利弗尼亚州Cupertino苹果计算机公司的注册商标。
当今,当对一个用于提供对新特征的支持的安装工具包进行更新和修改而该新特征可能对软件应用程序有用时,在应用程序中使用的安装工具包的每个版本必须具有其自己的更新内容,该更新内容是为更新每个应用程序的安装程序而建立的。这是烦琐和费时的,因此很多时候开发商并不在他们的应用程序的一次固定或改进后立即更新应用程序,而是在多次改进之后才进行更新。然而很多时候用户焦急地等待这些变更和改进。因此具有一种用于建立单个更新程序的方法、系统和部件是有利的,该更新程序能够用于更新安装工具包的许多版本并且跨越所有支持的硬件平台和/或操作系统而工作。这一单个更新程序将能使开发商不必再化时间为每个程序版本以及为在其上运行程序的每个硬件平台和操作系统来建立单独的更新程序,因而鼓励更经常地推出更新版本。
本发明提供一种用于更新软件安装程序的代码的方法、系统和部件。在程序例如修补程序的优选实施例中,提供了安装程序的多个版本,其中使用一个安装程序来更新程序和存在安装程序的多个版本。其次,判断该安装程序的版本是否不正确。如果该版本是旧的,则根据修补程序中的文件来更新安装程序。然后使用更新的安装程序将修补程序安装入该程序。
在所附权利要求书中提出了认为有特色的本发明新颖特征。然而,参照附图阅读以下阐述性实施例的详细说明将能很好地理解本发明本身及其优选使用模式、其他目的和优点,附图中

图1阐述其中可以根据本发明优选实施例来实施本发明的数据处理系统的图形表示;图2阐述其中可以实施本发明的数据处理系统的框图;图3阐述根据本发明的用于更新安装文件或程序的方法的框图;及图4阐述根据本发明的使用安装工具包文件的更新版本来更新安装文件或程序的方法的流程图。
现在参照附图,具体地参照图1,它是其中可以根据本发明优选实施例来实施本发明的数据处理系统的图形表示。所阐述的个人计算机100包括一个系统单元110、一个视频显示终端102、一个键盘104、可能包括软盘驱动器和其他类型永久性和可卸式存储媒体的存储设备108以及一个例如鼠标的指点部件106。个人计算机100还可能包括本领域普通技术人员熟知的其他附加输入部件。
个人计算机100可以使用任何合适的计算机来实施。虽然所阐述的表示显示了一个个人计算机,但也可以在其他类型数据处理系统中例如主计算机、工作站、网络计算机、因特网电器、掌上计算机等之中实施本发明的其他实施例。
系统单元110包括存储器、中央处理单元、一个或多个I/O单元等。然而,在本发明中系统单元110优选地包含纯理论计算机,它或者用作中央处理单元(CPU)或者用作系统单元中存在的多个CPU中之一。
现在参照图2,该图阐述其中可以实施本发明的数据处理系统的框图。数据处理系统250是计算机的一个例子,例如图1中的个人计算机100。数据处理系统250采用一个外围部件互连(PCI)局部总线体系结构。虽然所阐述例子采用一条PCI总线,也可使用其他总线体系结构,例如微通道和ISA。处理器252和主存储器254通过PCI桥258连至PCI局部总线256。PCI桥258也可包括处理器252的一个集总存储器控制器和高速缓存。可以通过直接部件互连或通过附加板来实现连至PCI局部总线256的附加连接。在所阐述的例子中,局域网(LAN)适配器260、SCSI主总线适配器262和扩展总线接口264通过直接部件连接连至PCI局部总线256。相反,音频适配器266、图形适配器268和音频/视频适配器(AN)269通过插入扩展槽的附加板连至PCI局部总线266。扩展总线接口264为键盘和鼠标适配器270、调制解调器272和附加存储器274提供连接。SCSI主总线适配器262为所阐述的例子中的硬盘驱动器276、磁带驱动器278和CD-ROM280提供连接。通常的PCI局部总线的实施将能支持三个或四个PCI扩展槽或附加接插件。
一个操作系统在处理器252上运行,用于对图2中的数据处理系统250内的不同部件进行协调和提供控制。该操作系统可以是市场上供应的操作系统例如BusinessTM的JavaOS或OS/2TM。这些是位于纽约州Armonk的国际商业机器公司的产品的注册商标。JavaOS自网上服务器装载至网络客户中,并且支持Java程序和小应用程序。以下将描述的JavaOS的两个有利于完成对于堆栈展开(unwind)的跟踪的一对特性是JavaOS不支持分页或虚拟存储器。面向对象编程系统例如Java可能与操作系统一起运行,以及可能提供从Java程序或从在数据处理系统250上运行的应用程序对操作系统发出调用。操作系统、面向对象的操作系统和应用程序的指令都位于存储设备上,例如硬盘驱动器276上,并且可以装载至主存储器254内以供处理器252执行。当数据处理系统250用作网络客户时,通常没有硬盘驱动器并且存储器是约束的。
本领域普通技术人员知道图2中的硬件可以随不同实现而不同。例如,其他外围设备例如光盘驱动器等可以在图2中阐述的硬件之外使用或替代它们。所阐述例子并不想对本发明施加体系结构限制。例如,本发明的各过程可以应用于多处理器数据处理系统。
现在参照图3,图中阐述根据本发明的用于更新安装文件的部件的框图。通常当软件开发商编写应用程序例如字处理程序、网络浏览器软件或计算机视频游戏程序时,软件开发商将数据文件压缩为单个较小数据文件以便发送至顾客。许多时候未压缩文件无法包含于单个计算机可读媒体内,例如软盘或CD-ROM内。然而,压缩文件通常足够小,因而能够包含于单个计算机可读媒体内以便发送给顾客,从而降低制造和消费费用两者。此外,如果通过网络例如因特网传送应用程序至顾客,则较小的压缩数据文件的下载时间将小于应用程序的未压缩版本的下载时间。
为正确地将准备安装的应用程序安装于具体平台上,必须包括一个安装程序。通常软件开发商并不开发他们自己的安装程序,而是使用先前已经开发出来的安装工具包,例如Java安装工具包。软件开发商将数以百计的与安装工具包相关联的文件与应用程序本身的文件一起放入一个目录302中。此目录可能包含若干安装文件,例如jfile.class,installer.class,uninstall.class,data.zip和program.class,还包含应用程序文件,例如图3中阐述的应用程序文件1和应用程序文件2。一旦将安装和应用程序文件放入目录302中,就将这些文件压缩(步骤M1),即将它们压缩为通常称为“install.class”的单个自提取安装文件304。
当安装工具包的新版本可用时,将称为“fix.class”的更新修补程序310下载或不然就装载至用户计算机中。修补程序是一个临时的或快速固定程序。修补程序用于更新程序而不是替代整个程序。机器代码或目标代码的一部分可被替代而不是将整个程序进行反汇编。修补程序也可替代应用程序中的整个可执行模块或其他文件。安装工具包的整个新版本可以例如附加或改进对具体操作系统的支持。当用户希望将安装程序例如安装文件304更新时,可以使用具有以下参数的命令行来执行更新修补程序304java fix[install.class]-norun执行修补程序后从安装文件304中提取(步骤M2)各文件并装入目录302中。修补程序然后将目录302中各组文件与更新修补程序310的版本进行比较(步骤M3)以便判断是当今安装文件304具有安装工具包的更为新版本,还是更新修补程序310包含安装工具包的更为新版本。在一个实施例中,可从文件program.class中获得每个安装工具包的版本。在这个实施例中,文件program.class包含用于标示安装文件304内的所有安装工具包文件的版本号的信息。例如,在Java代码中,文件program.class中的一行代码可能包含以下字符串String version=“x”在此字符串中,“version”是一个变量名,用于标示包含于安装文件304内的文件的版本是版本“x”,其中“x”可以是任何字符串。因此,在图3中阐述的例子中,在安装文件304的program.class中的字符串出现如下String version=“V1.4”此字符串行在文件program.class中的位置并不重要。
当然,包含安装文件304所利用的安装工具包的版本号的文件可以具有安装工具包开发商所希望要的任何名称。用于将两个安装工具包的版本进行比较的选代方法是将每个准备获得的文件的版本与fix.class 310内的固定文件的版本进行比较,并且将每个文件与其他文件独立地加以更新。
如果安装文件304包含更为新的版本,则从目录302中删除文件并且不采取任何进一步动作。相反,如果安装文件304不包含安装工具包的更为新的版本,即如图3中所阐述,安装文件304是版本V1.4和修补文件包含安装工具包的版本V1.5,则修补文件从fix.class中提取安装工具包(步骤M4),并且将它装入目录302以便使用文件的新版本来改写目录302中的安装工具包文件,从而更新安装文件304(步骤M5)。目录302内更新的文件然后合并为或压缩为新的安装文件308,用于改写先前的安装文件304。然后将目录302中的文件删除以便清理计算机的目录结构,空出磁盘空间和使计算机回至其初始状态,所不同的是具有更新的installer.class 308。
在优选实施例中,更新修补程序310可以将安装文件304的任何数量的版本更新而不管安装程序的版本号多少或该安装文件304准备用于那个平台。相同的fix.class可以更新两种不同安装程序而不必使用中间修补。因此相同的更新修补程序310可以将版本V1.1更新为版本V1.5,以及将安装程序版本V1.3更新为V1.5。此外,并不要求使用fix.class文件将安装程序更新为中间版本,例如自V1.1至V1.4,然后使用第二个fix.class将安装程序的中间版本更新为最后版本,例如自V1.4更新为V1.5。
以上所述命令行参数中的“-norun”标记禁止在完成更新之后运行安装文件308。选代地,“-norun”标记可由“-run”标记替代以便允许在完成更新之后运行安装文件308。
以上所述命令行参数中的[install.class…]标记可以包括目录文件路径和多个安装文件的名称。因此,修补文件310可用于更新计算机中许多不同安装文件。
也可利用以上所给命令行例子以外的其他执行修补文件310的方法。
虽然主要参照java安装工具包进行描述,但本发明也同样可应用于其他编程语言例如C和C++。此外,虽然主要参照对安装程序的安装工具包部分的更新操作进行描述,但本发明也同样可实施于更新应用程序文件以及安装程序内的安装文件。在此情况下,更新程序将不但包含更新的安装工具包文件,而且也同样包含更新的应用程序代码和数据文件。本发明也可用于更新任何文件的组合以便反映一个更新的版本。
应该注意到,虽然主要参照将安装程序更新为安装程序的较新版本的操作进行描述,但本发明也可应用于将安装程序或其他文件的组合更新为正确版本,而不是更为新的版本。该正确版本可以是比准备被更新的安装程序版本更旧的安装程序文件版本。例如,安装程序可能包含一个比更新修补程序更为新的安装文件版本,但始终无法正确工作。因此,此例中更新修补程序将其更旧的但却是正确的版本改写入安装程序中,以使安装程序具有安装文件的正确组合。
现在参照图4,图中阐述根据本发明使用安装工具包文件的更新的版本来更新安装文件的示例性方法的流程图。一旦用户收到修补文件例如图3中所示包含更新的文件的更新修补程序310,用户即执行该修补文件。开始时将需要更新的目标安装程序例如图3中所示安装文件304进行去压缩以便提取安装文件,然后将这些文件放入一个空目录中(步骤402)。接着修补文件判断目标安装程序版本的修补版本是否包含安装工具包的更为新的版本(步骤404)。修补文件可以查找单个文件例如以上所述的program.class来完成比较操作。
如果目标安装程序包含相同或更为新的版本,则修补文件不修改所提取的文件,并且判断是否有用户请求运行该安装程序(步骤410)。另一方面,如果修补版本包含安装工具包的更为新的版本,则从修补文件中提取更为新的文件并且将其放入包含旧安装程序文件的目录中以便改写较旧安装程序文件(步骤406)。更新的包括应用程序文件在内的安装程序文件的组合重新包装为自提取安装程序(步骤408)。
其次,修补程序判断用户是否已经请求运行该目标安装程序(步骤410)。如果是,则运行该自提取安装程序。该自提取安装程序规定将应用程序放于何处及调用那些参数。
在运行自提取安装程序之后,或者如果用户没有请求过运行该自提取安装程序,则修补程序判断是否有更多安装程序需要更新(步骤414)。如果没有更多安装程序需要更新,则从自其中提取过安装程序文件的目录中删除这些安装程序文件,并且结束过程。如果还有更多安装程序需要更新,则仍然删除所有安装程序文件从而清理目录(步骤416),同时过程在步骤402处开始使用新的安装程序。
重要的是注意到,虽然已经在全功能数据处理系统的上下文中描述了本发明,但本领域普通技术人员知道本发明的过程能够以计算机可读媒体的指令形式和不同形式加以传送,以及知道不论实际上用于执行传送操作的信号载体的具体类型如何,都能等同地应用本发明。计算机可读媒体的例子包括可记录型媒体,例如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM,以及包括传输型媒体例如使用传输形式例如射频和光波传输的数字和模拟通信线路、有线或无线通信线路。计算机可读媒体可以采取编码格式的形式,这些编码格式可以在具体数据处理系统的实际使用中进行解码。
本发明的描述是为了解释和说明目的而不是为了限于所公开的本发明形式。对于本领域普通技术人员而言,许多修改和变动是明显的。选择和说明实施例是为了很好地解释本发明及其实际应用的原理,以及为了使其他本领域普通技术人员理解本发明的不同实施例,而它们的不同变动是适合于所设想的具体用途的。
权利要求
1.一种用于更新代码的方法,该方法包括对程序的多个版本提供更新内容,其中由一个安装程序将该程序更新以及存在安装程序的多个版本;判断安装程序的一个版本相对于更新内容而言是否不正确;响应于安装程序的版本不正确的情况而把来自更新内容中的文件的安装程序更新;及使用更新的安装程序在程序中安装更新内容。
2.如权利要求1中所提及的方法,其中作出的安装程序的版本比更新内容更为旧的判断标示安装程序的版本不正确。
3.如权利要求1中所提及的方法,其中作出的安装程序的版本比更新内容更为新的判断标示安装程序的版本不正确。
4.如权利要求1中所提及的方法,其中根据包含于安装程序内的多个文件中的单个文件来确定安装程序的版本。
5.如权利要求1中所提及的方法,其中更新步骤包括从安装程序中提取安装程序文件并且写入一个目录中;使用从更新内容中提取的更新的文件将从安装程序中选择的文件改写;及将更新的文件和其余安装程序文件包装为更新的安装程序。
6.如权利要求5中所提及的方法,其中包装步骤包括将更新的文件和其余安装程序文件压缩以便产生更新的安装程序。
7.如权利要求1中所提及的方法,其中安装程序包括一个安装工具包以及更新内容包括一个对安装工具包的更新内容。
8.如权利要求1中所提及的方法,其中安装程序和更新内容是用面向对象的编程语言编写的。
9.如权利要求1中所提及的方法,其中安装程序包括一个java安装工具包以及更新内容包括一个对java安装工具包的更新内容。
10.一种用于在数据处理系统中更新代码的计算机可读媒体中的计算机程序产品,该计算机程序产品包括用于对程序的多个版本提供更新内容的第一指令,其中由一个安装程序将该程序更新以及存在安装程序的多个版本;用于判断相对于更新内容而言安装程序的一个版本是否不正确的第二指令;响应于安装程序的版本不正确的情况而用于把来自更新内容中的文件的安装程序更新的第三指令;及使用更新的安装程序在程序中安装更新内容的第四指令。
11.如权利要求10中所提及的计算机程序产品,其中作出的安装程序的版本比更新内容更为旧的判断标示安装程序的版本不正确。
12.如权利要求10中所提及的计算机程序产品,其中作出的安装程序的版本比更新内容更为新的判断标示安装程序的版本不正确。
13.如权利要求10中所提及的计算机程序产品,其中根据包含于安装程序内的多个文件中的单个文件来确定安装程序的版本。
14.如权利要求10中所提及的计算机程序产品,其中第三指令包括用于从安装程序中提取安装文件并且装入一个目录中的第五指令;使用从更新内容中提取的相应的更新的文件将从安装程序中选择的文件改写的第六指令;及用于将更新的文件和其余安装程序文件包装为更新的安装程序的第七指令。
15.如权利要求14中所提及的计算机程序产品,其中第七指令包括将更新的文件和其余安装程序文件压缩以便产生更新的安装程序。
16.如权利要求10中所提及的计算机程序产品,其中安装程序包括一个安装工具包以及更新内容包括一个对安装工具包的更新内容。
17.如权利要求10中所提及的计算机程序产品,其中安装程序和更新内容是用面向对象的编程语言编写的。
18.如权利要求10中所提及的计算机程序产品,其中安装程序包括一个java安装工具包以及更新内容包括一个对java安装工具包的更新内容。
19.一种用于更新代码的系统,该系统包括用于对程序的多个版本提供更新内容的第一装置,其中由一个安装程序将该程序更新以及存在安装程序的多个版本;用于判断相对于更新内容而言安装程序的一个版本是否不正确的第二装置;响应于安装程序的版本不正确的情况而用于把来自更新内容中的文件的安装程序更新的第三装置;及使用更新的安装程序在程序中安装更新内容的第四装置。
20.如权利要求19中所提及的系统,其中作出的安装程序的版本比更新内容更为旧的判断标示安装程序的版本不正确。
21.如权利要求19中所提及的系统,其中作出的安装程序的版本比更新内容更为新的判断标示安装程序的版本不正确。
22.如权利要求19中所提及的系统,其中根据包含于安装程序内的多个文件中的单个文件来确定安装程序的版本。
23.如权利要求19中所提及的系统,其中第三装置包括用于从安装程序中提取安装程序文件并且装入一个目录中的第五装置;使用从更新内容中提取的相应的更新的文件将从安装程序中选择的文件改写的第六装置;及用于将更新的文件和其余安装程序文件包装为更新的安装程序的第七装置。
24.如权利要求23中所提及的系统,其中第七装置包括将更新的文件和其余安装程序文件压缩以便产生更新的安装程序。
25.如权利要求19中所提及的系统,其中安装程序包括一个安装工具包以及更新内容包括一个对安装工具包的更新内容。
26.如权利要求19中所提及的系统,其中安装程序和更新内容是用面向对象的编程语言编写的。
27.如权利要求19中所提及的系统,其中安装程序包括一个java安装工具包以及更新内容包括一个对java安装工具包的更新内容。
28.一种用于在数据处理系统中更新代码的方法,该方法包括接收程序的更新文件,其中更新文件包括用于将其中存在安装程序的多个版本的程序进行更新的安装程序;判断安装程序是否是该程序的现有安装程序的较新版本;响应于安装程序是现有安装程序的新版本的情况而把现有安装程序更新以便形成更新的安装程序;及使用更新的安装程序在程序中安装更新文件中的代码。
29.如权利要求28中所提及的方法,其中更新步骤包括从更新的安装程序中提取文件,改写从现有安装程序中提取的相应的较旧文件以便形成更新的文件以及将更新的文件重新包装以便形成更新的安装程序。
30.如权利要求28中所提及的方法,其中更新文件、该程序、安装程序、现有安装程序和更新安装程序包括面向对象的代码。
31.如权利要求30中所提及的方法,其中面向对象的代码是java。
32.一种在数据处理系统中用于更新代码的计算机可读媒体中的计算机程序产品,该计算机程序产品包括用于接收程序的更新文件的第一指令,其中更新文件包括用于将其中存在安装程序的多个版本的程序进行更新的安装程序;用于判断安装程序是否是该程序的现有安装程序的较新版本的第二指令;响应于安装程序是现有安装程序的较新版本的情况而用于把现有安装程序更新以便形成更新的安装程序的第三指令;及使用更新的安装程序在程序中安装更新文件中的代码的第四指令。
33.如权利要求32中所提及的计算机程序产品,其中第三指令包括从更新的安装程序中提取文件,改写从现有安装程序中提取的相应的较旧文件以便形成更新的文件以及将更新的文件重新包装以便形成更新的安装程序。
34.如权利要求32中所提及的计算机程序产品,其中更新文件、该程序、安装程序、现有安装程序和更新安装程序包括面向对象的代码。
35.如权利要求34中所提及的计算机程序产品,其中面向对象的代码是java。
36.一种用于更新代码的系统,该系统包括用于接收程序的更新文件的第一装置,其中更新文件包括用于将其中存在安装程序的多个版本的程序进行更新的安装程序;用于判断安装程序是否是该程序的现有安装程序的较新版本的第二装置;响应于安装程序是现有安装程序的新版本的情况而用于把现有安装程序更新以便形成更新的安装程序的第三装置;及使用更新的安装程序在程序中安装更新文件中的代码的第四装置。
37.如权利要求36中所提及的系统,其中第三装置包括从更新的安装程序中提取文件,改写从现有安装程序中提取的相应的较旧文件以便形成更新的文件以及将更新的文件重新包装以便形成更新的安装程序。
38.如权利要求36中所提及的系统,其中更新文件、该程序、安装程序、现有安装程序和更新安装程序包括面向对象的代码。
39.如权利要求38中所提及的系统,其中面向对象的代码是java。
全文摘要
提供了用于更新软件程序中的代码的方法、系统和部件。在优选实施例中,对程序的多个版本提供修补程序,其中由一个安装程序将该程序更新以及存在安装程序的多个版本。其次,判断安装程序的版本是否不正确。如果是,则根据修补程序的文件更新安装程序。然后使用更新的安装程序将修补程序安装入程序中。
文档编号G06F9/445GK1326135SQ0111906
公开日2001年12月12日 申请日期2001年5月24日 优先权日2000年5月25日
发明者布赖斯·A·柯蒂斯, 吉米·明-德尔·苏 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1