安装设备和安装方法

文档序号:6571039阅读:420来源:国知局
专利名称:安装设备和安装方法
技术领域
本发明总的来说涉及一种安装设备和安装方法,尤其涉及一种用于将多个软件程序连续安装到计算机中的技术。
背景技术
近年来,普遍做法是通过CD-ROM等可交换介质或因特网等网络系统发布程序文件和数据文件。在这种情况下,通常将被称为安装程序(installer)的程序附加到发布目标程序。该安装程序在发布目的地将所发布的文件复制到与计算机系统连接的硬盘等的存储装置中,从而使得可在该计算机系统中执行所发布的程序。该安装程序还具有自动调整操作系统上的必要设置的功能。
专利文献1(日本特开平10-027090号公报)通过准备安装程序可执行文件和存储安装所需的信息的数据文件作为单独文件,来创建安装程序。通过仅重写数据文件而不改变安装程序可执行文件,来创建专用于特定软件的安装程序。该技术简化了安装程序创建过程。
近年来,随着软件规模的增大,将软件分成多个组件并独立开发各组件也已成为普遍做法。该开发方法的优点是不必使所有组件之间的开发和市场发布的日程相匹配。然而,为了提高该开发方法的效率,还独立开发各组件的安装程序。
例如,假定软件A包含调用组件B和C的代码。如果软件A以及组件B和C不具有单独的安装程序,则创建同时安装它们的单个安装程序。如果修改了组件C,则需要修改整个安装程序。因此,即使对于软件A和组件B的未修改的代码,也需要重新发布修改后的安装程序。
在为了避免该问题通常所使用的技术中,在上面的例子中独立设置软件A的安装程序、组件B的安装程序和组件C的安装程序。另外,同时发布用于连续执行多个软件安装程序的被称为主安装程序的程序。
该主安装程序连续启动多个安装程序的某些系统显示窗口以允许用户选择待安装的软件。例如,显示使用户选择是否将各软件程序安装到计算机上的窗口。例如,不需要全景图像合成的用户可以省略全景图像合成软件的安装。
图24示出软件选择窗口的例子。复选框区域2401使用户选择各软件的安装执行/不执行。用户可以通过单击该区域来选择软件。软件名称显示区域2402显示软件名称。盘容量显示区域2403显示软件安装所需的盘容量。在此显示软件所需的盘容量的总和。软件说明文本区域2404显示对从软件列表中选择的软件的说明。
通过上述主安装程序显示该窗口。例如,如果某软件安装所需的盘容量改变,则主安装程序显示的信息也需要改变。主安装程序必须始终掌握各软件的最新信息,并将该信息连续更新成最新版本。这需要开发者花费巨大劳力。
例如,为了在主安装程序执行多个软件安装程序的系统中仅提取特定软件并将该软件发布给用户,需要将该主安装程序附加到该软件。然而,该主安装程序不是为安装单个软件设计的,因此需要为单个软件安装修改主安装程序。
上述连续启动多个安装程序的系统还存在其它问题。由于该系统连续执行多个安装处理,因此直到完成整个安装处理为止需要较长时间。在许多情况下,主安装程序向用户示出安装处理的进度状态。
例如,传统上,控制整个安装处理的主安装程序使各软件的安装程序显示安装的进度状态,然而不显示整个安装处理的进度状态。用户可以掌握各软件的安装处理的进度状态,但却不清楚整个安装处理的进度状态。
专利文献2(日本专利号03578135)提出了一种用于解决该问题的技术。将待安装的驱动程序的总数用100%来表示,用待安装的驱动程序的数量对100%进行分割。当实际开始安装时,基于所安装的驱动程序的数量,进度状态向100%靠近。这样,基于驱动程序的数量表示装置驱动程序的整个安装处理的进度状态。该提案允许用户基于驱动程序的数量了解整个安装处理的进度状态。
然而,该提案具有以下问题。仅在少数情况下待安装的软件具有相同大小。由于软件程序间进度程度不同,因而有时不可能通过软件程序的数量准确示出整个安装处理的进度状态。

发明内容
考虑到上述问题做出了本发明,并且本发明的目的是即使当修改了要安装的多个软件程序中的一个软件程序时,也不需要更新主安装程序。
本发明的另一目的是即使当提取和发布了多个软件程序中的一个软件程序时,也不需要修改主安装程序。
本发明的又一目的是在连续安装多个软件程序时,以用户可容易识别的形式,显示整个安装处理的进度状态。
为了解决上述问题和实现这些目的,根据本发明的第一方面,提供一种用于安装多个程序的安装设备,该设备包括第一存储部件,用于为各程序存储相互对应的安装设置文件和安装目标文件;读取部件,用于根据一个安装可执行文件,读取多个程序的安装设置文件;以及第二存储部件,用于根据安装可执行文件和安装设置文件,按顺序存储与安装设置文件相对应的安装目标文件。
根据本发明的第二方面,提供一种用于安装多个程序的方法,该方法包括第一存储步骤,用于为各程序存储相互对应的安装设置文件和安装目标文件;读取步骤,用于根据一个安装可执行文件,读出多个程序的安装设置文件;以及第二存储步骤,用于根据安装可执行文件和安装设置文件,按顺序存储与安装设置文件相对应的安装目标文件。
通过以下参照附图对典型实施例的说明,本发明的其它特征显而易见。


图1A是示出根据本发明实施例的系统结构的图;图1B是示出图1A中所示的计算机系统配置的框图;图2是示出记录在光盘106上的程序和数据文件的结构的例子的图;图3是示出根据该实施例的系统的整个软件安装处理的流程图;图4是示出根据该实施例的记录在光盘106上的安装程序运行设置文件202的部分记载的图;图5是详细示出根据该实施例的系统的软件安装处理的步骤S302中的软件列表生成处理的流程图;图6是示出通过使用图4中的安装程序运行设置文件202对图2中的文件夹结构执行图5中的软件列表生成处理而生成的软件列表的例子的图;图7是详细示出根据该实施例的系统的软件安装处理的步骤S303中的软件选择窗口显示处理的流程图;
图8是示出另一光盘107的文件夹结构的图;图9是示出作为软件安装设置文件的例子的软件安装设置文件210的图;图10是示出作为软件安装设置文件的另一例子的软件安装设置文件216的图;图11是示出作为软件安装设置文件的又一例子的软件安装设置文件809的图;图12是示出通过使用图4中的运行设置文件202对图8中的文件夹结构执行图5中的软件列表生成处理而生成的软件列表的例子的图;图13是示出通过使用图12中的软件列表执行图7中的处理而显示的软件选择窗口的图;图14是详细示出步骤S305中的安装进度窗口初始化处理的流程图;图15是示出通过在图13中的软件选择窗口上选择所有软件程序并执行图14中所述的安装进度窗口初始化处理而显示的安装进度窗口的例子的图;图16是示出通过在图13中的软件选择窗口上取消软件A的选择并执行图14中所述的安装进度窗口初始化处理而显示的安装进度窗口的例子的图;图17A是详细示出步骤S309中的安装执行处理的流程图;图17B是详细示出步骤S309中的安装执行处理的流程图;图18是示出根据图17A和17B中的处理在软件A的安装过程中的安装进度窗口的图;图19是示出当在步骤S1701中开始安装组件D时所显示的安装进度窗口的图;图20是示出根据图17A和17B中的处理在组件D的安装过程中的安装进度窗口的图;图21是示出操作系统中所保持的且用于安装处理的文件参考计数数据库的内部结构的图;图22是示出通过图14中的安装处理所创建的安装日志的一部分的图;图23是详细示出根据该实施例的卸载处理的流程图;以及图24是示出传统软件的软件选择窗口的图。
具体实施例方式
以下将参照附图详细说明本发明的优选实施例。
图1A是示出根据本发明实施例的系统结构的图。
在该系统中,显示器102、光盘驱动器103、硬盘104、以及鼠标105与计算机101连接。可交换光盘106记录程序和数据。计算机101执行从插入光盘驱动器103的光盘106读出的程序。计算机101在所连接的显示器102上进行绘制以向系统用户显示确认消息或通知他/她系统状态。系统用户可以通过使用鼠标105对显示器102上所显示的确认消息做出应答。计算机101可以根据程序内容,将记录在光盘106上的数据复制到硬盘104或重写记录在硬盘104中的数据。在该系统中,光盘106是可交换的。例如,还可使用另一光盘107。
图1B是示出图1A中所示的计算机系统配置的框图。
参照图1B,中央处理单元(CPU)3001控制整个计算机系统。只读存储器(ROM)3002存储不需改变的程序和参数。随机存取存储器(RAM)3003临时存储从例如外部装置提供的程序和数据。外部存储装置3004包括固定安装在计算机101中的硬盘和存储卡、以及可从计算机101拆卸的软盘(floppy disk,FD)、紧凑型光盘(compact disk,CD)等光盘、磁卡、光卡和IC卡以及存储卡。外部存储装置3004还包括图1A中所示的光盘驱动器103和硬盘104。接口3005与根据用户操作输入数据的指示装置和键盘等输入装置3009连接。输入装置3009包括图1A中所示的鼠标105。接口3006与显示器102连接以显示计算机101所保持的数据和所提供的数据。网络接口3007与因特网等网络线路3011连接。图像输入接口3008将图像数据从数字照相机或扫描仪等图像输入装置3012输入到计算机101。系统总线3013连接单元3001~3008以使它们可进行通信。
图2是示出记录在光盘106上的程序和数据文件的结构的例子的图。
在光盘106上,存在记录于该光盘上的作为唯一可执行文件的安装程序可执行文件201和用以控制该安装程序可执行文件的运行细节的安装程序运行设置文件202。以下有时将安装程序可执行文件201称为主安装程序。在光盘106上还存在应用程序文件夹203和组件文件夹204。应用程序文件夹203包含文件夹205。组件文件夹204包含四个子文件夹206~209。
文件夹205包含安装软件A所需的数据和信息。更具体地,文件夹205包含软件安装设置文件210和作为安装目标的软件配置文件211。文件夹206~208分别包含安装软件A的组件B、C和D所需的数据和信息。
更具体地,文件夹206包含软件安装设置文件212和软件配置文件213。
文件夹207包含软件安装设置文件214和软件配置文件215。
文件夹208包含软件安装设置文件216和软件配置文件217。
文件夹209包含安装使软件A的组件B运行所需要的子组件E所需的数据和信息。更具体地,文件夹209包含软件安装设置文件218和软件配置文件219。
当在该系统上执行记录在该实施例的光盘106上的安装程序可执行文件201时,软件A、软件A的组件B、C和D、以及组件B的子组件E被安装到硬盘104中。
图3是示出该系统的整个软件安装处理的流程图。
在步骤S301,初始化安装程序可执行文件。CPU 3001根据安装程序可执行文件201的内容读出安装程序运行设置文件202,并初始化安装处理。
在步骤S302,生成软件列表。CPU 3001读出记录在光盘106上的多个软件安装设置文件,并根据这些软件安装设置文件的内容生成软件列表。
在步骤S303,显示软件选择窗口。CPU 3001基于在步骤S302生成的软件列表,在显示器102上显示软件选择窗口。系统用户可以在该窗口上选择安装目标软件。
在步骤S304,显示安装确认窗口。CPU 3001在显示器102上显示安装所需的许可协议的文本,以仅允许同意该许可协议的用户执行安装。
在步骤S305,CPU 3001初始化安装进度窗口。
在步骤S306,CPU 3001检查是否安装了在步骤S302中所生成的软件列表中的所有软件。如果在步骤S306中为是,则处理进入步骤S310。如果仍有未处理的软件,则处理进入步骤S307。
在步骤S307,CPU 3001确认是否在软件选择窗口上选择了正处理的软件。CPU 3001在步骤S308中判断该结果。如果选择该软件,则处理进入步骤S309。如果不选择该软件,则处理返回到步骤S306以处理软件列表中的下一个软件。
在步骤S309,CPU 3001读出正处理的软件的软件安装设置文件,基于所记载的内容将软件配置文件复制到硬盘104中,并将安装处理内容记录到日志上。
在该实施例中,通过以上述方式重复执行步骤S306~S309中的处理,可以通过使用一个安装可执行文件来安装多个所选择的软件程序。
当安装了所有软件程序时,执行步骤S310。CPU 3001基于直到前一步骤为止的各软件的安装结果,在显示器102上显示安装结果输出窗口。当用户在该窗口上进行完成操作时,该系统的软件安装处理结束。
图4是示出根据该实施例的记录在光盘106上的安装程序运行设置文件202的部分记载的图。安装程序运行设置文件202包含文件部分401和文件夹部分402。文件夹部分402包含搜索目标文件名403和搜索目标文件夹列404。搜索目标文件表示可由安装程序可执行文件201(主安装程序)安装的所有文件。在软件列表生成处理(下面说明)中,从光盘106搜索该搜索目标文件。这是因为光盘106不总是记录所有可由主安装程序安装的多个软件文件。因此,为了生成仅包括记录在光盘106上的软件文件的列表,执行上述搜索处理。
图5是详细示出该系统的软件安装处理的步骤S302中的软件列表生成处理的流程图。
在步骤S501,从光盘106搜索将被添加到软件列表的软件安装设置文件。更具体地,CPU搜索安装程序运行设置文件202的文件部分401中所记载的所有文件和文件夹部分402中所记载的搜索目标文件夹列404中所包括的文件夹。搜索目标包括具有与搜索目标文件名403相匹配的名称的文件。将在光盘106上所找到的文件添加到软件列表。
在步骤S502,CPU判断是否为软件列表中的所有软件安装设置文件获取了排序关键字(sort key)。如果对所有软件程序完成了该处理,则处理进入步骤S507。如果仍有未处理的软件,则处理进入步骤S503以检查软件安装设置文件的内容。
在步骤S504,获取检查结果。如果该文件不存在,或如果该文件存在但在文件格式或内容上有问题,则处理进入步骤S506以从软件列表删除该软件。如果该文件没有问题,则处理进入步骤S505以从软件安装设置文件获取用于对软件列表进行排序的“排序关键字”字符串,并将该软件记录在软件列表中。然后,处理返回到步骤S502以处理下一个软件。
当处理了所有软件程序时,在步骤S507,基于所获取的软件的排序关键字字符串,即通过比较字符串的字符码并按照大小的升序对字符码进行排序,来确定软件列表中软件程序的顺序。该顺序被记录在软件列表中,并且处理进入步骤S508。在从步骤S508开始的处理中,根据所记录的顺序,即软件程序的升序,执行软件处理。
在步骤S508,CPU确认软件列表中的所有软件程序是否都已经过了父软件搜索(parent software search)。如果该处理结束,则CPU完成软件列表生成处理。如果仍有未经过搜索的软件,则处理进入步骤S509。
在步骤S509~S515,在软件列表中搜索第n个软件的父软件。
在步骤S509,初始化变量。获取第n个软件的排序关键字字符串,并且将1设置给循环变量i。在步骤S510,比较循环变量i和n以判断是否i=n。如果i=n,则未找到第n个软件的父软件。在步骤S514,在软件列表的“父软件”项中写入0。结束第n个软件的父软件搜索处理,并且处理返回到步骤S508。如果i≠n,则在步骤S511获取软件列表中的第i个软件的排序关键字字符串。在步骤S512,CPU判断在前缀搜索(prefix search)时第n个软件的关键字字符串是否与第i个软件的关键字字符串相匹配。也就是说,CPU判断第n个软件的关键字字符串的头是否与第i个软件的关键字字符串相匹配。如果字符串不匹配,则在步骤S513使循环变量i增加1,并且处理返回到步骤S510。如果字符串相匹配,则在步骤S515将i写入软件列表的“父软件”项中。结束第n个软件的父软件搜索处理,并且处理返回到步骤S508。
图6是示出通过使用图4中的安装程序运行设置文件202对图2中的文件夹结构执行图5中的软件列表生成处理而生成的软件列表的例子的图。
该软件列表包含用作软件的软件安装设置文件的名称列的文件名列601和用作软件安装设置文件中所记载的排序关键字列的排序关键字列602。该软件列表还包含作为软件列表生成处理的结果的序列列603和表示父软件的父软件列604。文件名列601包含图2中的文件夹结构中所包括的软件安装设置文件。该软件列表不包含任何在图4中的安装程序运行设置文件202的文件部分401中所记载的、但实际未包括在图2中的文件夹结构中的文件。
序列列603基于排序关键字列602的值确定软件程序的顺序。在图2所示的文件夹结构中,将1设置给软件A,2设置给软件A的组件B,3设置给软件A的组件B的子组件E,4设置给软件A的组件C,5设置给软件A的组件D。在父软件列604中,对软件A记录0,而对其余组件记录1。在这种情况下,“1”表示在序列列中的值为“1”的软件A。
图7是详细示出该系统的软件安装处理的步骤S303中的软件选择窗口显示处理的流程图。
在步骤S701,CPU对软件列表中不具有父软件的软件程序,即用作父软件的软件程序的数量n进行计数。在步骤S702,CPU判断是否n=0。如果n=0,则在软件列表中不存在用作父软件的软件。在步骤S703,输出出错消息,并中断安装处理。如果n≠0,则处理进入步骤S704。
在步骤S704,CPU判断是否n=1。如果n=1,则在软件列表中仅存在一个用作父软件的软件。因此,不必显示软件选择对话框。如果n=1,则结束选择窗口显示处理,并且处理进入接着的确认窗口显示处理(步骤S304)。
如果n>1,则处理进入步骤S705以初始化软件选择窗口。从步骤S706开始,在软件选择窗口上显示软件列表中所包括的所有软件程序。
在步骤S706,CPU判断是否处理了所有软件程序。如果该处理结束,则选择窗口显示处理完成。如果仍有未处理的软件,则在步骤S707从记录在软件列表中的软件安装设置文件中获取将在软件安装时呈现给用户的信息。在该实施例中,获取关于软件名称、软件版本号、代表软件的图标、软件的详细说明和安装软件所需的盘容量等的多条信息。
在步骤S708,CPU检查记录在软件列表中的“父软件”信息是否为0。如果对“父软件”记录除0以外的信息,则处理进入步骤S712。如果“父软件”为0,也就是说,不存在父软件,则处理进入步骤S709。
在步骤S709,在所显示的软件选择窗口上将新的软件行添加到末尾。在步骤S710,在步骤S709中所添加的软件行的开头显示复选框。在步骤S711,在步骤S707中所获取的各类信息中,将除关于安装所需的盘容量的信息以外的多条信息绘制在步骤S709中所添加的软件行中。
在步骤S712,在软件选择窗口中绘制软件容量。更具体地,将当前正处理的软件的盘容量添加到在软件选择窗口中最后的软件行的末尾处所记载的软件的盘容量,并且更新绘制。当更新完成时,处理返回到步骤S706。
在具有图2中所示的文件夹结构的光盘中,仅软件A具有“父软件”的0。在这种情况下,当执行图7中的处理时,作为步骤S703中的处理结果,在软件选择窗口显示处理中什么也不显示,并且处理进入接着的确认窗口显示处理。
图8是示出另一光盘107的文件夹结构的图。
通过向光盘106的结构添加几个文件夹和文件,获得光盘107的结构。安装程序可执行文件201、安装程序运行设置文件202、应用程序文件夹203、组件文件夹204和文件夹205~209与光盘106中的相同。软件安装设置文件210、212、214、216和218以及软件配置文件211、213、215、217和219也与光盘106中的相同。
在光盘107中,应用程序文件夹203包括包含安装软件F所需的数据和信息的文件夹801。文件夹801包含软件安装设置文件802和作为安装目标的软件配置文件803。组件文件夹204包括包含安装组件G所需的数据和信息的文件夹804。文件夹804包含软件安装设置文件805和作为安装目标的软件配置文件806。
在与应用程序文件夹203和组件文件夹204相同的层上,存在用以存储附加软件的附加应用程序文件夹807。附加应用程序文件夹807包括包含安装软件H所需的数据和信息的文件夹808。除软件安装设置文件809和软件配置文件810以外,文件夹808还包含外部安装程序可执行文件811和外部安装程序配置文件812。
图9是示出作为软件安装设置文件的例子的软件安装设置文件210的图。
软件安装设置文件210是文本文件,包括概要部分901、排序部分902、信息部分903、安装目的地指定部分904、进度信息部分905、以及文件部分906。
概要部分901记载安装程序类型。在软件安装设置文件210中,将“标准(NORMAL)”指定为表示标准安装程序的类型。
排序部分902记载在软件列表生成处理中使用的排序关键字。在软件安装设置文件210中,指定“SoftA”。
信息部分903记载将在软件选择窗口上显示的软件信息。该部分记载软件名称907、软件版本号908、光盘上代表软件的图标的位置909、以及软件的详细说明910。还记载软件的盘容量911和光盘上软件说明图像的位置912。
安装目的地指定部分904在硬盘104上指定软件安装目的地的位置。
进度信息部分905记载显示安装进度窗口所使用的信息。更具体地,该部分记载分割进度条所使用的软件安装量及其单位。该部分还记载用作各文件的安装量的参考,以在各软件安装期间的每一文件复制中,使进度条前进的文件安装单位。在软件安装设置文件210中,使用大小来表示软件安装量,并且将100指定为软件A的安装量。另外,使用安装时间来表示各文件的安装量。
文件部分906记载待安装的文件列。各文件项都记载复制目的地文件名913、软件配置文件压缩文件名914、复制源文件名915、以及文件安装量916。
图10是示出作为软件安装设置文件的另一例子的软件安装设置文件216的图。
与图9中的软件安装设置文件210一样,软件安装设置文件216也是文本文件。类似地,软件安装设置文件216包括概要部分1001、排序部分1002、信息部分1003、安装目的地指定部分1004、进度信息部分1005、以及文件部分1006。
概要部分1001将“标准”记载为安装程序类型。
排序部分1002指定“SoftA-CompD”。
信息部分1003记载软件名称1007、软件版本号1008、光盘上代表软件的图标的位置1009、以及软件的详细说明1010。还记载软件的盘容量1011和光盘上软件说明图像的位置1012。
安装目的地指定部分1004在硬盘104上指定软件安装目的地的位置。
与图9中的软件安装设置文件210不同,进度信息部分1005的记载省略了软件安装量及其单位。进度信息部分1005记载了使用大小作为各文件的安装量。
文件部分1006在各文件项中都记载了复制目的地文件名1013、软件配置文件压缩文件名1014、复制源文件名1015、以及文件安装量1016。注意,将值“0”记载为文件安装量1016以表示省略记载。
图11是示出作为软件安装设置文件的又一例子的软件安装设置文件809的图。
与图9中的软件安装设置文件210一样,软件安装设置文件809也是文本文件。类似地,软件安装设置文件809包括概要部分1101、排序部分1102、信息部分1103、以及进度信息部分1104。不包括安装目的地指定部分或文件部分。软件安装设置文件809还包括外部软件部分1105。
概要部分1101记载表示启动外部安装程序的类型的“外部(EXTERNAL)”。
排序部分1102指定“SoftH”。
信息部分1103记载软件名称1106、软件版本号1107、光盘上代表软件的图标的位置1108、以及软件的详细说明1109。还记载软件的盘容量1110和光盘上软件说明图像的位置1111。
进度信息部分1104记载软件安装量及其单位。
外部软件部分1105记载光盘上作为启动目标的外部软件的位置。
图12是示出通过使用图4中的运行设置文件202对图8中的文件夹结构执行图5中的软件列表生成处理而生成的软件列表的例子的图。
该软件列表包括用作软件的软件安装设置文件的名称列的文件名列1201和用作软件安装设置文件中所记载的排序关键字列的排序关键字列1202。该软件列表还包含作为软件列表生成处理的结果的序列列1203和表示父软件的父软件列1204。
文件名列1201包含图8中的文件夹结构中所包括的软件安装设置文件。基于排序关键字列1202中的值来确定序列列1203。在这种情况下,将1设置给软件A,2设置给软件A的组件B,3设置给软件A的组件B的子组件E,4设置给软件A的组件C,5设置给软件A的组件D。另外,将6设置给软件F,7设置给软件F的组件G,8设置给软件H。在父软件列1204中,对没有父软件的软件A、F和H记录0。另一方面,对以软件A为父软件的组件B、C、D和E记录1,对以软件F为父软件的组件G记录6。
图13是示出通过使用图12中的软件列表执行图7中的处理而显示的软件选择窗口的图。
软件选择窗口包括复选框区域1301、软件图标区域1302、软件名称区域1303、以及软件版本号区域1304。软件选择窗口还包括软件说明文本区域1305和软件盘容量区域1306。
在该选择窗口上仅显示软件列表中不具有父软件的软件的名称。显示了图12的软件列表中的三个软件A、F和H的名称。
在图7的步骤S710中在复选框区域1301中绘制与软件相对应的复选框。以如下方式绘制软件图标区域1302、软件名称区域1303、软件版本号区域1304、以及软件说明文本区域1305。也就是说,在图7的步骤S711中,通过使用从各软件的软件安装设置文件中读出的信息,来绘制这些区域。
软件盘容量区域1306显示以下容量。在图7的步骤S712中,将从各行的软件的软件安装设置文件中读出的所需盘容量的值加到以该行的软件为父软件的所有软件的所需盘容量上。将总和显示在软件盘容量区域1306中。更具体地,软件盘容量区域1306中软件A的行的盘容量区域1307显示以下值。将软件A本身的盘容量加上以软件A为父软件的软件即组件B、C、D和E的盘容量,并显示该总和。类似地,软件F的行的盘容量区域1308显示软件F本身的盘容量和以软件F为父软件的组件G的盘容量的总和。因为没有以软件H为父软件的软件,所以软件H的行的盘容量区域1309显示软件H的盘容量。
图14是详细示出步骤S305中的安装进度窗口初始化处理的流程图。
在安装进度窗口初始化处理中,首先,计算所有软件程序的安装量。然后,根据该安装量分割安装进度窗口上的进度条。
在步骤S1401,CPU检查是否获取了所有软件程序的安装量。如果获取了安装量,则处理进入步骤S1406。如果仍有获取安装量的软件,则处理进入步骤S1402。
在步骤S1402,CPU检查在软件选择窗口上是选择正处理的软件还是选择正处理的软件的父软件。如果选择正处理的软件,则处理进入步骤S1403。如果不选择正处理的软件,则认为软件安装量为0,并且处理返回到步骤S1401以获取下一个软件的安装量。
在步骤S1403,从软件的软件安装设置文件获取该软件的安装量。在步骤S1404,CPU判断软件安装量获取是否成功。如果成功,则处理返回到步骤S1401以获取下一个软件的安装量。如果获取失败,即如果软件安装设置文件没有对软件安装量的记载,则处理进入步骤S1405。获取软件安装设置文件中所记载的各软件配置文件的安装量。将所有文件的安装量的总和当作该软件的安装量。处理返回到步骤S1401以获取下一个软件的安装量。
在步骤S1406,对直到此时所获取的软件安装量求和以获得所有软件的总安装量。
在步骤S1407,在安装进度窗口上将所有软件的总安装量定义为进度条的100%,并且基于各软件的安装量分割进度条。在步骤S1408,记录当前时间。使用该时间来计算安装经过的时间以计算估计剩余时间。当结束上述处理时,CPU完成安装进度窗口初始化处理。
图15是示出通过在图13中的软件选择窗口上选择所有软件程序并执行图14中所述的安装进度窗口初始化处理而显示的安装进度窗口的例子的图。
在该窗口中存在软件说明图像显示区域1501、进度条1502、剩余软件计数显示区域1503、以及估计剩余时间显示区域1504。软件说明图像显示区域1501显示用于解释软件内容的图像。在刚初始化之后,该区域是空白的。
进度条1502被分成八个区域1505~1512。这些区域对应于包括在图8所示的文件夹结构中的八个软件,即软件A、组件B、组件E、组件C、组件D、软件F、组件G 以及软件H。在该例子中,将40%、12%、4%、12%、12%、8%、4%和8%(总共100%)分配给各个区域。剩余软件计数显示区域1503在软件安装过程中显示剩余软件程序的数量。在刚初始化之后,该区域显示进度条的分割数量,即“8”。估计剩余时间显示区域1504在软件安装过程中显示估计剩余安装时间。在刚初始化之后,该区域显示“初始化进行中”。
图16是示出通过在图13中的软件选择窗口上取消软件A的选择并执行图14中所述的安装进度窗口初始化处理而显示的安装进度窗口的例子的图。
该窗口结构与图15所示的例子中的几乎相同。存在软件说明图像显示区域1601、进度条1602、剩余软件计数显示区域1603、以及估计剩余时间显示区域1604。作为不同点,进度条1602被分成三个区域1605、1606和1607。这三个区域分别对应于软件F、组件G和软件H。在该例子中,将40%、20%和40%(总共100%)分配给各个区域。由于在图13中所示的软件选择窗口上取消了软件A的选择,因而将软件A及其组件B、C、D和E的安装量计算为0。为此,分配进度条中0%的区域。也就是说,不分配区域。
图17A和17B是详细示出步骤S309中的安装执行处理的流程图。
在步骤S1701,CPU初始化安装进度窗口中的软件说明图像显示区域。更具体地,CPU读出软件安装设置文件中所记载的软件说明图像,并将该软件说明图像显示在安装进度窗口中的软件说明图像显示区域中。
在步骤S1702,CPU判断软件安装设置文件中所记载的安装程序类型是否表示启动外部安装程序的类型。如果是启动外部安装程序的类型,则在步骤S1703中CPU启动软件安装设置文件中所指定的外部软件,并等待软件的结束。在步骤S1705,将剩余软件程序的数量减1。该软件的安装处理结束,并且处理进入下一个软件的安装处理。
如果软件安装设置文件中所记载的安装程序类型不表示启动外部安装程序的类型,则处理进入步骤S1704。在步骤S1704,CPU检查是否安装了软件安装设置文件中的所有文件。如果安装了所有文件,则处理进入步骤S1705,以将安装进度窗口上的剩余软件计数显示区域1603中的值减1,并更新该值。该软件的安装处理结束,并且处理进入下一个软件的安装处理。如果仍未安装所有文件,则处理进入步骤S1706,以从软件安装设置文件读出下一个文件安装指令。
在步骤S1707,CPU将读出的文件安装指令中所记载的复制源文件从光盘106或107上的软件配置文件复制到硬盘104上的临时工作文件夹。
在步骤S1708,CPU检查所读出的文件安装指令中所记载的复制目的地文件的存在。如果复制目的地文件不存在,则在步骤S1710,将复制到临时工作文件夹的复制源文件复制到复制目的地文件,并且处理进入步骤S1711。
如果复制目的地文件存在,则在步骤S1709,将复制到临时工作文件夹的复制源文件与现有复制目的地文件进行比较。如果复制源文件较新,则在步骤S1710,将复制到临时工作文件夹的复制源文件复制到复制目的地文件,并且处理进入步骤S1711。如果复制目的地文件较新,则处理进入步骤S1711而不复制该文件。
在步骤S1711,将操作系统所保持的文件参考计数数据库中的复制目的地文件参考计数加1。
在步骤S1712,删除在步骤S1707中复制到临时工作文件夹的复制源文件。
在步骤S1713,CPU检查正安装的软件在软件列表中是否具有父软件。如果该软件没有父软件,则在步骤S1714中,CPU向操作系统发出指令,以将“安装了复制目的地文件”另外记录在正安装的软件的安装日志中。然后,处理进入步骤S1716。
如果该软件具有父软件,则在步骤S1715中,CPU向操作系统发出指令,以将“安装了复制目的地文件”另外记录在该父软件的安装日志中。然后,处理进入步骤S1716。
在步骤S1716,CPU检查所读出的文件安装指令是否包含对文件安装量的记载。如果记载了文件安装量,则在步骤S1719,CPU获取该文件安装量。在步骤S1721,CPU获得该软件中所包含的所有文件的安装量的总和,并使用该总和作为软件的安装量来进行步骤S1723中的计算。
如果在步骤S1716中CPU判断出所读出的文件安装指令不包含对文件安装量的记载,则处理进入步骤S1717。
在步骤S1717,CPU确认软件安装设置文件中所记载的文件安装单位是否为文件大小。如果是文件大小,则即使当软件安装设置文件不包含文件安装量时,也通过使用文件大小作为安装量来执行处理。更具体地,在步骤S1718,获取文件大小作为文件安装量。在步骤S1721,获得该软件中所包含的所有文件的安装量的总和。使用该总和作为软件的安装量来进行步骤S1723中的计算。
如果在步骤S1717中CPU判断出软件安装设置文件中所记载的文件安装单位不是文件大小,则处理进入步骤S1720。在步骤S1720,将文件安装量设置成1。在步骤S1722,将该软件中所包含的文件数量定义为该软件的安装量,并用其进行步骤S1723中的计算。
在步骤S1723,CPU计算复制文件时进度条的进度量。更具体地,计算在图14中的安装进度窗口初始化处理中所分割的与该软件相对应的区域的、在上述步骤中所计算的(文件安装量/软件安装量)的比。
在步骤S1724,进度条前进在步骤S1723中所计算的量。
当步骤S1724中的处理结束时,在步骤S1725中,CPU检查进度条的当前位置是否表示低于整个区域5%的量。如果该量低于5%,则在步骤S1727中,在安装进度窗口的估计剩余时间显示区域中显示“计算进行中”,并且处理返回到步骤S1701。
如果该量等于或高于5%,则在步骤S1726中,在安装进度窗口的估计剩余时间显示区域中显示估计剩余时间。更具体地,基于当前时间和安装进度窗口初始化处理的时间,获得开始安装后的经过时间T。基于进度条的当前比P%,将T×(100-P)/P作为估计剩余时间显示。然后,处理返回到步骤S1701。
以下通过使用在软件选择对话框上选择所有软件程序后软件A的安装例子,来说明根据图17A和17B中所示的处理在安装过程中的进度条的进度。
已参照图9说明了软件A的软件安装设置文件210。
如图12所示,软件A是软件列表中的第一项。在开始软件A的安装处理前,安装进度窗口具有图15中所示的状态。首先,开始图9中文件部分906的开头处所记载的文件MainExecFile.exe的处理。
在直到步骤S1714的文件复制处理结束后,处理进入步骤S1716。软件安装设置文件210包含对文件MainExecFile.exe的安装量的记载。为此,在步骤S1719获取该文件的安装量(4)。
在步骤S1721,获得该软件中所包含的所有文件的安装量的总和(4+1=5)。在步骤S1723,计算在复制文件MainExecFile.exe时的进度量。在该实施例中,分配给软件A的进度条区域为40%,如图15中所示。进度条以(文件安装量/软件安装量)的比即4/5=0.8前进。在步骤S1724,进度条前进40%×0.8=32%。如果直到该时间点为止的文件复制需要T=32秒,则在步骤S1726中,将32×(100-32)/32=68秒作为估计剩余时间显示在安装进度窗口的估计剩余时间显示区域中。图18示出此时在安装进度窗口上的显示。
还将说明组件D的处理。
已参照图10说明了组件D的软件安装设置文件216。
图19示出当在步骤S1701中开始组件D的安装时所显示的窗口。如图12所示,组件D是软件列表中的第五项。因此,在安装了第一到第四软件之后,进度条表示68%。
首先,开始图10中的文件部分1006的开头处所记载的文件ComponentDMain.dll的处理。在完成直到步骤S1714的文件复制处理之后,处理进入步骤S1716。在软件安装设置文件216中,文件ComponentDMain.dll的安装量为0。也就是说,没有对安装量的记载。因此,处理进入步骤S1717。由于文件安装单位是文件大小,因而在步骤S1718中获取文件ComponentDMain.dll的文件大小。在步骤S1721,获取光盘106中所记载的所有文件的文件大小,并对该文件大小求和以获得软件安装量。在步骤S1723,计算在复制文件ComponentDMain.dll时的进度量。假定文件ComponentDMain.dll的大小为20MB,并且CompShare.lib的大小为10MB。在该实施例中,如图15所示,分配给组件D的进度条区域为12%。进度条以(文件安装量/软件安装量)的比即20/30=0.67前进。在步骤S1724,进度条前进12%×0.67=8%,并表示76%。如果直到该时间点为止的文件复制需要T=38秒,则在步骤S1726,将38×(100-76)/76=12秒作为估计剩余时间显示在安装进度窗口的估计剩余时间显示区域中。图20示出此时在安装进度窗口上的显示。
使与正安装的组件相对应的进度条区域闪烁或改变该区域的颜色以明确表示“进行中”、或对各组件的进度条区域分配不同颜色可以有效地使用户识别显示。
图21是示出操作系统中所保持的且用于安装处理的文件参考计数数据库的内部结构的图。
数据库的各记录都具有文件名字段2101和与文件名相对应的参考计数字段2102。当安装程序请求增加已具有记录的文件的参考计数时,将参考计数字段的值加1。如果安装程序请求增加没有记录的文件的参考计数,则重新创建记录,并且将参考计数字段的值加1。如果安装程序请求减小文件的参考计数,则减小该文件的记录。
如果作为该减小的结果参考计数字段为0或更小,则自动删除该记录。
在该实施例中,通过使用操作系统的功能来实现参考计数数据库。然而,通过其它方法计算参考计数可以获得与上述相同的效果。参考计数是引入以防止错误卸载多个软件程序共享的文件的机制。如果可获得相同的效果,本发明不局限于使用参考计数。
图22是示出通过图14中的安装处理所创建的安装日志的一部分的图。
安装日志记录通过安装程序安装哪个软件的哪个文件、以及文件的安装顺序。在该实施例中,安装日志是文本文件。该文本文件被分成针对软件的部分,并以时间顺序记载所安装的文件。例如,图22中的部分2201记录用于安装软件A和以软件A作为父软件的其它软件的文件列。类似地,部分2202记录用于安装软件F和以软件F作为父软件的其它软件的文件列。
每一部分包括部分名称和文件列。例如,部分2201包括标题2203和文件列2204。文件列2204以安装的顺序,记录用于安装软件A和以软件A作为父软件的其它软件的文件列。
图23是详细示出根据该实施例的卸载处理的流程图。
在步骤S2301,执行卸载处理初始化处理。更具体地,为了卸载软件,将作为卸载目标的软件的标识符给予用于执行卸载的程序,即卸载程序。在步骤S2301获取该标识符。
在步骤S2302,显示使用户检查是否执行卸载的消息,以要求用户进行输入。如果用户输入取消,则什么也不执行而结束卸载处理。如果用户输入确定,则处理进入步骤S2303以开始卸载处理。
在步骤S2303,CPU获取该软件的安装日志的最新项作为卸载目标。在步骤S2304,CPU判断是否获取了该软件的安装日志。如果没有获取日志,也就是说,如果该软件的安装日志为空,则处理进入步骤S2310。如果获取了安装日志,则在步骤S2305,CPU就目标文件参考计数询问参考计数数据库。
在步骤S2306,CPU确认返回值是否为1。如果该值为1,则在步骤S2307删除目标文件,并且处理进入步骤S2308。如果从参考计数数据库返回的值大于1,则处理在不删除该文件的情况下进入步骤S2308。
在步骤S2308,将目标文件的参考计数减1。在步骤S2309,从安装日志删除所处理的安装日志项,并且处理返回到步骤S2303。
在步骤S2310,向用户显示表示卸载处理结束的消息。当完成消息显示时,结束卸载处理。
其它实施例还可以通过以下方法获得该实施例的目的。将记录实现上述实施例的功能的软件程序代码的存储介质(或记录介质)提供给系统或设备。该系统或设备的计算机(或CPU或MPU)读出并执行存储在该存储介质中的程序代码。在这种情况下,从该存储介质读出的程序代码本身实现上述实施例的功能。存储该程序代码的存储介质构成本发明。不仅通过使计算机执行读出的程序代码来实现上述实施例的功能。本发明还包含以下配置。运行在计算机上的操作系统(OS)基于该程序代码的指令,执行全部或部分实际处理,从而实现上述实施例的功能。
本发明还包含以下配置。将从该存储介质读出的程序代码写入插入计算机的功能扩展卡或与计算机连接的功能扩展单元的存储器中。该功能扩展卡或功能扩展单元的CPU基于该程序代码的指令,执行全部或部分实际处理,从而实现上述实施例的功能。
应用本发明的存储介质存储与上述过程相对应的程序代码。
作为本发明的另一特征,存储介质可以是图1A中所示的光盘106或107、或能够交换或发布的卡状存储介质。
尽管参照典型实施例说明了本发明,但是应该理解,本发明不局限于所公开的典型实施例。以下权利要求书的范围符合最宽的解释,以包含所有这类修改和等同结构和功能。
权利要求
1.一种用于安装多个程序的安装设备,其包括第一存储部件,用于为各程序存储相互对应的安装设置文件和安装目标文件;读取部件,用于根据一个安装可执行文件,读取所述多个程序的所述安装设置文件;以及第二存储部件,用于根据所述安装可执行文件和所述安装设置文件,按顺序存储与所述安装设置文件相对应的所述安装目标文件。
2.根据权利要求1所述的安装设备,其特征在于,还包括生成部件,用于根据由所述读取部件读取的所述安装设置文件,生成显示多个程序的列表窗口;以及显示控制部件,用于显示由所述生成部件生成的所述列表窗口。
3.根据权利要求2所述的安装设备,其特征在于,所述列表窗口包括各程序的选择允许/禁止设置、图标、名称、版本号、说明和盘容量中的至少一个。
4.根据权利要求1所述的安装设备,其特征在于,还包括获取部件,用于根据由所述读取部件读出的所述安装设置文件,获取各程序的安装目标文件的数量和各安装目标文件的文件大小;计算部件,用于计算由所述获取部件获取的所述文件大小的总和;确定部件,用于基于由所述获取部件获取的所述文件数量和由所述计算部件计算出的所述总和,来确定各程序的安装进度量;以及更新部件,用于每当所述第二存储部件存储所述安装目标文件时,基于由所述确定部件确定的所述安装进度量,来更新安装进度状态。
5.根据权利要求4所述的安装设备,其特征在于,还包括通知部件,该通知部件用于将由所述更新部件更新后的所述安装进度状态通知给用户。
6.一种用于安装多个程序的方法,其包括第一存储步骤,用于为各程序存储相互对应的安装设置文件和安装目标文件;读取步骤,用于根据一个安装可执行文件,读出所述多个程序的所述安装设置文件;以及第二存储步骤,用于根据所述安装可执行文件和所述安装设置文件,按顺序存储与所述安装设置文件相对应的所述安装目标文件。
全文摘要
一种安装设备和安装方法。本发明的目的是即使当修改了要安装的多个软件程序中的一个软件程序时,也不需要更新主安装程序。将均具有安装设置文件的多个软件程序安装到计算机中的安装方法,通过连续读出多个软件程序的安装设置文件的内容,连续安装该多个软件程序,其中该安装设置文件记载用于安装该软件的处理内容。
文档编号G06F9/445GK101017437SQ20071000288
公开日2007年8月15日 申请日期2007年2月9日 优先权日2006年2月9日
发明者熊谷笃, 宫崎成幸 申请人:佳能株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1