软件安装方法及装置制造方法
【专利摘要】本申请提供了一种软件安装方法及装置,其中,软件安装方法包括:将待安装软件中的所有文件划分为核心文件和非核心文件,所述核心文件为用于实现主动触发功能的文件,所述非核心文件为用于实现被动触发功能的文件;生成所述核心文件的子安装包和所述非核心文件的子安装包;当安装所述待安装软件时,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。通过本申请,达到了缩短用户等待软件安装的时间,提高了用户使用体验的效果。
【专利说明】软件安装方法及装置
[0001]本发明专利申请是申请日为2011年12月12日、申请号为201110412482.8、名称为“软件安装方法及装置”的中国发明专利申请的分案申请。
【技术领域】
[0002]本申请涉及计算机【技术领域】,特别是涉及一种软件安装方法及装置。
【背景技术】
[0003]随着计算机技术和网络技术的发展,人们在使用计算机时,越来越多地依赖应用程序进行各种工作和活动,由此,人们对应用程序的要求也越来越高。而要想使用应用程序,则首先需要进行应用程序的安装,也可以称为软件安装。
[0004]软件安装泛指将一组有联系、互相配合完成工作的软件文件合理地放置到系统中,并且和系统完成衔接,让软件正常运行的过程。
[0005]传统的安装软件集合了所有软件运行文件和所有软件运行设置,将所有的运行文件和运行设置都打包到一个安装程序内,在安装时,需要解压文件、解压设置并且执行设置,等将包内文件全部安装完毕后才能开始运行,使得安装时间长,不能满足某些用户的使用需求,如对使用体验要求高,而且缺乏耐心的用户。例如,国内一种MIS软件,安装包大小为400M,整个安装过程需要耗时5分钟以上。
[0006]此外,现有的安装软件在开发时还可能存在需要借助Nsis等类似第三方安装包厂商的支持,可自定义性差;非必要的选择、确认等交互过程太多,而用户并不明白这些选择、交互等等问题。这些问题均会导致软件安装时间冗长,过度消耗用户的等待时间,从而无法为用户带来满意的使用体验。
[0007]目前,这种传统的软件安装过程冗长、示意含糊,用户只能等待漫长的安装过程完成后才能使用软件,已严重影响了用户使用体验。
[0008]总之,目前需要本领域技术人员迫切解决的一个技术问题是:软件安装过程中,如何有效缩短用户等待时间,提升用户使用体验。
【发明内容】
[0009]本申请所要解决的技术问题是提供一种软件安装方法及装置,以解决现有软件安装过程中,需要全部文件安装完毕才能正常使用软件导致用户等待时间长,使用体验低的问题。
[0010]为了解决上述问题,本申请公开了一种软件安装方法,包括:将待安装软件中的所有文件划分为核心文件和非核心文件,所述核心文件为用于实现主动触发功能的文件,所述非核心文件为用于实现被动触发功能的文件;生成所述核心文件的子安装包和所述非核心文件的子安装包;当安装所述待安装软件时,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
[0011]优选地,所述当安装所述待安装软件时,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行的步骤包括:当开始安装所述待安装软件时,仅使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
[0012]优选地,软件安装方法还包括:当所述核心文件安装后开始运行时,使用所述非核心文件的子安装包安装所述非核心文件。
[0013]优选地,软件安装方法还包括:当所述核心文件安装完成后,接收到输入的安装所述非核心文件的指令,使用所述非核心文件的子安装包安装所述非核心文件。
[0014]优选地,所述使用所述核心文件的子安装包安装所述核心文件的步骤包括:使用所述核心文件的子安装包,利用多个线程安装所述核心文件,所述多个线程包括主线程和逻辑线程,所述主线程用于所述核心文件的安装初始化操作,所述逻辑线程用于执行所述核心文件的安装过程。
[0015]优选地,所述多个线程还包括界面线程,所述界面线程用于所述核心文件的安装界面展现。
[0016]优选地,所述使用所述核心文件的子安装包,利用多个线程安装所述核心文件的步骤包括:所述逻辑线程启动所述主线程,在所述主线程启动的过程中,发送消息通知所述界面线程设置定时器并开始展现安装界面;所述界面线程使用所述定时器控制所述安装界面中安装进度的显示;在所述安装进度显示安装完成时,所述界面线程向所述逻辑线程发送消息,通知所述逻辑线程所述核心文件安装完成。
[0017]优选地,所述运行所述核心文件的步骤包括:动态加载所述核心文件中的动态链接库DLL文件,运行所述核心文件。
[0018]优选地,在所述当安装所述待安装软件时,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件的步骤之前,还包括:设定所述待安装软件的安装环境和安装路径;所述当安装所述待安装软件时,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件的步骤包括:当安装所述待安装软件时,在所述安装环境和安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件。
[0019]优选地,所述安装路径包括默认安装路径和备用安装路径;所述当安装所述待安装软件时,在所述安装环境和安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件的步骤包括:当安装所述待安装软件时,在所述安装环境和所述默认安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件;若在所述安装环境和所述默认安装路径下,安装所述核心文件失败,则在所述安装环境和所述备用安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件。
[0020]优选地,软件安装方法还包括:在安装所述待安装软件的过程中,接收输入的安装路径,撤销在所述设定的安装环境和安装路径下已安装的核心文件,在所述输入的安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件。
[0021]优选地,所述用于实现主动触发功能的核心文件为所述待安装软件安装并运行后,不需要除所述待安装软件启动运行以外的因素即运行的文件;所述实现被动触发功能的非核心文件为所述待安装软件安装并运行后,需要除所述待安装软件启动运行以外的因素运行的文件。
[0022]为了解决上述问题,本申请还公开了一种软件安装装置,包括:划分模块,用于将待安装软件中的所有文件划分为核心文件和非核心文件,所述核心文件为用于实现主动触发功能的文件,所述非核心文件为用于实现被动触发功能的文件;生成模块,用于生成所述核心文件的子安装包和所述非核心文件的子安装包;安装模块,用于当安装所述待安装软件时,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
[0023]优选地,所述安装模块,用于当所述开始安装所述待安装软件时,仅使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
[0024]优选地,软件安装装置还包括:继续安装模块,用于当所述核心文件安装后开始运行时,使用所述非核心文件的子安装包安装所述非核心文件;或者,用于当所述核心文件安装完成后,接收到输入的安装所述非核心文件的指令,使用所述非核心文件的子安装包安装所述非核心文件。
[0025]优选地,所述安装模块,用于当安装所述待安装软件时,使用所述核心文件的子安装包,利用多个线程安装所述核心文件,使所述待安装软件的主动触发功能正常运行,其中,所述多个线程包括主线程和逻辑线程,所述主线程用于所述核心文件的安装初始化操作,所述逻辑线程用于执行所述核心文件的安装过程。
[0026]优选地,所述多个线程还包括界面线程,所述界面线程用于所述核心文件的安装界面展现。
[0027]优选地,所述安装模块在使用所述核心文件的子安装包,利用多个线程安装所述核心文件时,由所述逻辑线程启动所述主线程,在所述主线程启动的过程中,发送消息通知所述界面线程设置定时器并开始展现安装界面;所述界面线程使用所述定时器控制所述安装界面中安装进度的显示;在所述安装进度显示安装完成时,所述界面线程向所述逻辑线程发送消息,通知所述逻辑线程所述核心文件安装完成。
[0028]优选地,所述安装模块在运行所述核心文件时,通过动态加载所述核心文件中的动态链接库DLL文件,运行所述核心文件。
[0029]优选地,软件安装装置还包括:设定模块,用于在所述安装模块使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件之前,设定所述待安装软件的安装环境和安装路径;所述安装模块用于当安装所述待安装软件时,在所述安装环境和安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
[0030]优选地,所述安装路径包括默认安装路径和备用安装路径;所述安装模块,用于当安装所述待安装软件时,在所述安装环境和所述默认安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件;若在所述安装环境和所述默认安装路径下,安装所述核心文件失败,则在所述安装环境和所述备用安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
[0031]优选地,软件安装装置还包括:接收模块,用于在所述安装模块安装所述待安装软件的过程中,接收输入的安装路径,撤销在所述设定的安装环境和安装路径下已安装的核心文件,并将所述输入的安装路径发送给所述安装模块,由所述安装模块在所述输入的安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
[0032]优选地,所述用于实现主动触发功能的核心文件为所述待安装软件安装并运行后,不需要除所述待安装软件启动运行以外的因素即运行的文件;所述实现被动触发功能的非核心文件为所述待安装软件安装并运行后,需要除所述待安装软件启动运行以外的因素运行的文件。
[0033]与现有技术相比,本申请具有以下优点:
[0034]本申请的软件安装方案通过对被安装软件中的文件按照主、被动触发功能进行划分,明确核心文件和非核心文件,在安装时,安装核心文件并运行,将软件运行时所需的必要文件减小到最小。这样,用户在安装了核心文件的情况下即可正常运行软件,与软件进行交互,使用其基本功能,而在这一过程中,再在系统后台继续安装非核心文件或在用户需要时发出指令安装非核心文件。因为核心文件在整个软件中比例较小,安装快速,从而有效减少了用户等待软件安装的时间;在安装非核心文件时,用户已经可以使用核心文件运行软件,而不必焦急等待所有文件安装完毕,大大提高了用户使用体验。例如,在安装360浏览器时,将实现360浏览器的主动触发功能的文件,如完成网页加载和显示功能的360浏览器的主程序文件360se.exe文件等作为核心文件首先安装,安装后,用户即可使用360浏览器的主界面与设定的地址通信等,而在该主界面显示供用户使用的同时,在系统后台继续安装360浏览器的非核心文件,如实现更新功能的文件等,但这一过程可能不被用户感知,使用户主观上感觉软件安装速度加快了。
[0035]通过本申请的技术方案,有效解决了现有软件安装过程中,需要全部文件安装完毕才能正常使用软件导致用户等待时间长,使用体验低的问题,达到了缩短用户等待软件安装的时间,提高了用户使用体验的效果。
【专利附图】
【附图说明】
[0036]图1是根据本申请实施例一的一种软件安装方法的步骤流程图;
[0037]图2是根据本申请实施例二的一种软件安装方法的步骤流程图;
[0038]图3是根据本申请实施例三的一种软件安装方法的步骤流程图;
[0039]图4是根据本申请实施例四的一种软件安装装置的结构框图。
【具体实施方式】
[0040]为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本申请作进一步详细的说明。
[0041]实施例一
[0042]参照图1,示出了根据本申请实施例一的一种软件安装方法的步骤流程图。
[0043]本实施例的软件安装方法包括以下步骤:
[0044]步骤S102:将待安装软件中的所有文件划分为核心文件和非核心文件。
[0045]其中,核心文件为用于实现主动触发功能的文件,例如,这些文件可以为待安装软件安装并运行后,不需要除待安装软件启动运行以外的因素即运行的文件,如在软件安装后不需要任何用户输入即可开始执行的文件,以360浏览器为例,其核心文件可以包括完成网页加载和显示功能的360浏览器的主程序文件360se.exe文件;非核心文件为用于实现被动触发功能的文件,例如,这些文件可以为待安装软件安装并运行后,需要除待安装软件启动运行以外的因素运行的文件,如在软件安装后,需要用户进一步的输入或确定才能执行,可以是一般浏览器或软件的执行下载功能或升级功能的文件等。
[0046]步骤S104:生成核心文件的子安装包和非核心文件的子安装包。
[0047]在划分了核心文件和非核心文件后,将两部分文件分别生成不同的安装包,即核心文件的子安装包和非核心文件的子安装包,两个子安装包组成了整个待安装软件的安装包。其中,非核心文件的子安装包也可以根据一定的规则和需要进一步划分为多个。
[0048]步骤S106:当安装待安装软件时,使用核心文件的子安装包安装核心文件并运行核心文件,使待安装软件的主动触发功能正常运行。
[0049]优选地,当开始安装待安装软件时,仅使用核心文件的子安装包安装核心文件并运行核心文件,使待安装软件的主动触发功能正常运行。
[0050]当开始安装时,仅安装核心文件,而非核心文件则可以在后续安装。安装了核心文件后,软件的相关界面和/或相关逻辑即已安装完成,软件可以基本功能方式正常运行,实现其主动触发功能,与用户交互,从而使用户主观上认为软件已基本安装完成。此时,可以再在后台继续安装非核心文件而不被用户感知,并且,也不影响运行核心文件实现的软件的主动触发功能的正常使用,使用户直观感觉安装速度快,使用体验好。当然,非核心文件的安装也可以以用户可感知但不影响软件运行的方式,或者,在后续由用户输入安装非核心文件指令的形式安装。
[0051]当然,本领域技术人员在安装待安装软件时,还可以采用其它类似形式,以提高安装速度。如,可以同时或先后启动安装核心文件和安装非核心文件两个进程,但在使用安装核心文件的进程安装完核心文件后同,即运行核心文件的形式等,实现安装提速。
[0052]通过本实施例,对被安装软件中的文件按照主、被动触发功能进行划分,明确核心文件和非核心文件,在安装时,首先安装核心文件并运行,将软件运行时所需的必要文件减小到最小。这样,用户在安装了核心文件了情况下即可运行软件,与软件进行交互,使用其基本功能,而在这一过程中,再在系统后台继续安装非核心文件或在用户需要时发出指令安装非核心文件。核心文件在整个软件中比例较小,安装快速,从而有效减少了用户等待软件安装的时间;在安装非核心文件时,用户已经可以使用核心文件运行软件,而不必焦急等待所有文件安装完毕,大大提高了用户使用体验。通过本申请的技术方案,有效解决了现有软件安装过程中,需要全部文件安装完毕才能正常使用软件导致用户等待时间长,使用体验低的问题,达到了缩短用户等待软件安装的时间,提高了用户使用体验的效果。
[0053]实施例二
[0054]参照图2,示出了根据本申请实施例二的一种软件安装方法的步骤流程图。
[0055]本实施例的软件安装方法包括以下步骤:
[0056]步骤S202:明确区分程序第一次运行时的核心文件和非核心文件。
[0057]S卩,根据软件安装后,程序第一次运行时,文件执行的是主动触发功能还是被动触发功能,将待安装软件包括的所有文件区分为必要核心文件和非核心文件。
[0058]以360卫士为例,其核心文件可以包括卫士的主界面;而卫士的导航区域有几大功能,点击每个功能后下面的展示内容都会变化,只要不是需要启动后就显示的功能(此处主要指展示内容区域),都可以作为非核心文件。
[0059]步骤S204:尽量保证核心文件和非核心文件的比例够大。
[0060]也就是从软件运行角度保障核心文件数量较少,该比例可以由本领域技术人员根据软件实际情况进行划分和控制。核心文件越少,安装的速度就会越快,安装后程序启动也会越快。通常来说,核心文件和非核心文件的比例应该保持在4:6及以下,优选地,为3:7。
[0061]步骤S206:使用较高的压缩比技术将两块文件压缩到安装包内。
[0062]因为目前客观硬件条件下的安装包耗时主要消耗在了文件从安装包到目的地的传输效率上,因此本领域技术人员可以采用适当的具有较高的压缩比的技术,如zip或者7z技术,将核心文件和非核心文件这两块文件分别进行压缩,然后再组成为一个安装包。
[0063]步骤S208:执行安装、核心文件包释放且直接执行程序运行,再释放非核心文件包。
[0064]在进行软件安装时,先使用核心文件的压缩包进行核心文件的安装,安装后直接运行,使用户能够使用核心文件的功能,然后,再进行非核心文件的安装。
[0065]本实施例中,在安装完360卫士核心文件后,即运行360卫士及相关逻辑,显示360卫士主界面,然后,再进行360卫士的非核心文件安装,如安装实现卫士的导航区域的功能的非核心文件。
[0066]步骤S210:程序运行后会再自动去加载非核心文件完成相关功能。
[0067]在程序运行后,一方面,安装程序可以在程序开始运行即可自行继续安装非核心文件;另一方面,安装程序也可以将非核心文件的安装交给用户,通过用户输入的安装非核心文件的指令,确定安装非核心文件的时机,进而安装非核心文件。通过不同的后续非核心文件安装方式,为用户安装软件提供了更多选择,也使软件安装更灵活,进一步提升了用户的使用体验。
[0068]通过本实施例,将待安装软件中的文件进行了核心文件和非核心文件的划分,在软件安装时,先安装核心文件并运行;并且控制核心文件在整个待安装软件中的比例;使用较高的压缩比技术对核心文件和非核心文件进行压缩,从而有效保证了软件安装时的传输效率和必要的核心文件的大小,有效提高了软件安装速度,缩短了用户等待时间,提高了用户使用体验。
[0069]实施例三
[0070]参照图3,示出了根据本申请实施例三的一种软件安装方法的步骤流程图。
[0071]本实施例的软件安装方法包括以下步骤:
[0072]步骤S302:确立良好的程序必要运行流程。
[0073]本步骤在待安装软件打包前,由该软件技术人员确立。包括:确定程序需要具备的功能特性,去除多余重复的功能;明确划分主动和被动触发功能特性;严格执行以上两类功能特性的构造,尽量减少对其他模块的引用和依赖等。
[0074]步骤S304:划分核心文件和非核心文件,生成安装包。
[0075]本步骤中,根据软件安装后实现的是主动触发功能还是被动触发功能将文件划分为核心文件和非核心文件。以360浏览器的安装为例,实现主动触发功能类型的文件,也就是安装360浏览器的核心文件可以包括:360se.exe (主程序文件,完成网页加载、显示功能)、Favorites, dll (收藏夹模块,因启动后需要显示用户添加过的收藏夹而被划归到核心包)、Safecentral.dll (安全红绿灯模块,因需要实时保护上网安全,所以需要启动时就运行)、Pluginbar.dll (插件栏,因启动后需要显示用户添加过的插件而被划归到核心包)等;而实现被动触发功能类型的文件,也就是安装360浏览器的非核心文件可以包括:Download, dll (下载模块,如用户不进行下载则无需立即启动)、Seup.exe (程序升级模块,升级时间为每天一次,故划分到非核心包)等。
[0076]在划分核心文件和非核心文件后,生成安装包。安装包中包括核心文件子安装包和非核心文件子安装包,其中,将主动触发的功能特性和文件划分为核心文件类型,生成核心文件子安装包;将被动触发的功能特性和文件划分为非核心文件类型,生成非核心文件子安装包。
[0077]步骤S306:确立软件运行条件的假定基础。
[0078]包括:设定软件正常运行时需要被安装到的路径;设定软件正常运行时需要用到的系统环境,如磁盘可写入,有足够剩余空间等。
[0079]设定安装环境和安装路径,确定一批大多数用户都不会去设置的项,默认执行,使得待安装软件可以直接在设定的安装环境和安装路径下安装,无须用户输入,减少了不必要的待安装软件和用户的交互,缩短了安装时间,提高了安装效率,提升了用户体验。
[0080]优选地,还可以设定一个备用安装路径,以便在设定的默认安装路径下安装失败时,使用该备用安装路径,在该备用安装路径下安装软件。通过备用安装路径,保证了软件能够快速准确安装,在一定程度上避免了软件安装失败。
[0081]需要说明的是,步骤S306和步骤S304的执行可以不分先后顺序,也即,可以先划分核心文件和非核心文件,进而生成安装包,然后再设定安装环境和安装路径;或者,也可以先设定安装环境和安装路径,然后再划分核心文件和非核心文件,进而生成安装包。
[0082]此外,本步骤为可选步骤,在实际应用中,也可以向用户提供输入安装路径的接口或界面,由用户输入自定义安装路径。
[0083]步骤S308:基于假定基础执行释放逻辑。
[0084]S卩,运行安装包以后,立马按照之前既定的安装环境和安装路径释放核心文件。
[0085]需要说明的是,在安装过程中,如果用户自定义安装路径,则需要撤销之前释放的文件。如果用户第一既定安装路径释放失败,需要写入备用安装路径,如果全部失败,则提示用户无法安装。通过向用户提供输入自定义安装路径的接口,使得用户有了灵活选择安装路径的机会,但相比较与设定的安装路径,该种方式将增加软件安装时间。
[0086]步骤S310:基于释放逻辑运行程序实现安装效果。
[0087]包括:立即启动程序,供用户使用;同时,用户可使用主动触发功能,也即通过安装核心文件实现的功能(例如,主页需要加载,所以必需启动时必需具备网页加载功能);同时,后台继续释放非核心文件,供用户使用其他被动触发功能,即通过安装非核心文件实现的功能(例如下载)。
[0088]在具体实现时,安装程序引用了多线程技术开发,使用多线程安装核心文件和非核心文件。
[0089]安装程序使用的多线程包括:主线程和逻辑线程,其中,主线程用于核心文件和/或非核心文件的安装初始化操作,逻辑线程用于执行核心文件和/或非核心文件的安装过程。优选地,多线程还可以包括用于核心文件和/或非核心文件的安装界面展现的界面线程。通过多线程,进一步提高了软件安装速度和效率。
[0090]本实施例中,安装程序维护了三个线程:主线程、界面线程、逻辑线程。主线程负责安装程序的初始化操作,界面线程负责UI (用户界面,即安装界面)的展现,逻辑线程负责安装过程的执行。
[0091]安装核心文件时,逻辑线程调用CreateProcess启动主线程,在主线程的启动过程中,发送消息通知界面线程设置定时器,并开始工作,展现安装界面。定时器控制安装界面中的安装进度的显示度,以360浏览器为例,在一秒钟内保证进度条的匀加速效果处理。安装进度显示核心文件安装完成时,界面线程通过发送消息,通知逻辑线程核心文件安装完成,逻辑线程完成后续收尾工作。通过界面线程,可以使用户了解软件的安装进度,增强界面使用感觉,提升用户使用体验。当然,在实际应用中,也可以不使用界面线程,不展现安装界面,当核心文件安装完成时,由主线程发送消息通知逻辑线程,或者由逻辑线程自动获知等方式获知核心文件安装完成信息。
[0092]在核心文件安装完成后,加载安装的相应模块开始运行。程序采用动态加载方式加载DLL (动态链接库)模块,通过LoadLibrary函数将指定的可执行模块(即DLL模块)映射到调用进程的地址空间。调用GetProcAddress函数获取该动态链接库中相关导出函数的地址,通过地址调用使用该模块实现的功能。通常情况下,在程序运行过程中只是在某个条件满足时才需要访问某个DLL中的某个函数,其它情况下都不需要访问这些DLL中的函数。采用动态加载方式,需要时DLL模块才被加载到内存中,并被映射到调用进程的地址空间中。解决了程序启动过程中,程序进程的内存一次性加载过多的模块,为每个模块分配过多的地址空间,严重浪费了系统资源,导致程序启动时间过长的问题。
[0093]核心文件安装完成后,出现安装的软件的程序界面和用户产生交互,但此时在后台,安装程序并没有退出,直到所有非核心包文件释放完毕。本实施例中,在核心文件安装完成后,非核心文件的释放采用由安装程序自己触发完成的方式,紧跟着核心文件释放。需要说明的是,非核心文件的安装也适用上述的多线程技术,非核心文件的加载运行也同样适用于上述的动态加载DLL技术。
[0094]通过本实施例,对安装资源进行分类处理,能够解决安装程序初始化时间过长、一次性释放文件过多,安装进度不流畅的问题,达到快速安装的效果。本实施例的软件安装方法使程序运行的结构条件较为严谨,与传统程序较为松散的结构不同,尽量地将程序运行时的必要文件减小了到最小。以安装360浏览器为例,通过本实施例,可实现在I秒时间内软件的安装。
[0095]此外,安装过程中可能会存在非核心文件加载失败的问题,此时只需要重启即可解决。
[0096]实施例四
[0097]参照图4,示出了根据本申请实施例四的一种软件安装装置的结构框图。
[0098]本实施例的软件安装装置包括:划分模块402,用于将待安装软件中的所有文件划分为核心文件和非核心文件,其中,核心文件为用于实现主动触发功能的文件,非核心文件为用于实现被动触发功能的文件;生成模块404,用于生成核心文件的子安装包和非核心文件的子安装包;安装模块408,用于当安装所述待安装软件时,使用核心文件的子安装包安装核心文件并运行核心文件,使待安装软件的主动触发功能正常运行。
[0099]优选地,安装模块408用于当开始安装所述待安装软件时,仅使用核心文件的子安装包安装核心文件并运行核心文件,使待安装软件的主动触发功能正常运行。
[0100]优选地,本实施例的软件安装装置还包括:继续安装模块410,用于当核心文件安装后开始运行时,使用非核心文件的子安装包安装非核心文件;或者,当核心文件安装完成后,接收到输入的安装非核心文件的指令,使用非核心文件的子安装包安装非核心文件。
[0101]优选地,安装模块408,用于当安装所述待安装软件时,使用核心文件的子安装包,利用多个线程安装核心文件,并运行核心文件,使待安装软件的主动触发功能正常运行。
[0102]优选地,多个线程包括主线程和逻辑线程,其中,主线程用于核心文件的安装初始化操作,逻辑线程用于执行核心文件的安装过程。
[0103]优选地,多个线程还包括界面线程,界面线程用于核心文件的安装界面展现。
[0104]优选地,安装模块408在使用核心文件的子安装包,利用多个线程安装核心文件时,由逻辑线程启动主线程,在主线程启动的过程中,发送消息通知界面线程设置定时器并开始展现安装界面;界面线程使用定时器控制安装界面中安装进度的显示;在安装进度显示安装完成时,界面线程向逻辑线程发送消息,通知逻辑线程核心文件安装完成。
[0105]优选地,安装模块408在运行核心文件时,通过动态加载核心文件中的DLL文件,运行核心文件。
[0106]优选地,本实施例的软件安装装置还包括:设定模块406,用于在安装模块408使用核心文件的子安装包安装核心文件并运行核心文件之前,设定待安装软件的安装环境和安装路径;安装模块408用于当安装待安装软件时,在设定的安装环境和安装路径下,使用核心文件的子安装包安装核心文件并运行核心文件,使待安装软件的主动触发功能正常运行。设定模块406和划分模块402的执行可以不分先后顺序。
[0107]优选地,设定模块406设定的安装路径包括默认安装路径和备用安装路径;安装模块408在当安装待安装软件时,在安装环境和默认安装路径下,使用核心文件的子安装包安装核心文件并运行核心文件;若在安装环境和默认安装路径下,安装核心文件失败,则在安装环境和备用安装路径下,使用核心文件的子安装包安装核心文件并运行核心文件,使待安装软件的主动触发功能正常运行。
[0108]优选地,本实施例的软件安装装置还包括:接收模块(图中未示出),用于在安装模块408安装待安装软件的过程中,接收到输入的安装路径,撤销在设定模块406设定的安装环境和安装路径下已安装的核心文件,并将输入的安装路径发送给安装模块408,由安装模块408在输入的安装路径下,使用核心文件的子安装包安装核心文件并运行核心文件,使待安装软件的主动触发功能正常运行。
[0109]优选地,用于实现主动触发功能的核心文件为待安装软件安装并运行后,不需要除待安装软件启动运行的因素即运行的文件,如不需要用户进行输入即可运行的文件;实现被动触发功能的非核心文件为待安装软件安装并运行后,需要除待安装软件启动运行以外的因素运行的文件,如需要用户进行输入,根据用户的输入运行的文件。
[0110]本实施例的软件安装装置用于实现前述方法实施例中相应的软件安装方法,并具有相应的软件安装方法的有益效果,在此不再赘述。
[0111]本申请将传统安装包的先向系统塞文件再运行的思路重整为新式安装思路,即尽量向系统少塞文件赶紧运行,再慢慢塞文件。通过本申请的多个软件安装方案,可以达到以下效果:
[0112](I)交互界面友好:在开发被安装软件时,可自行定义控件丰富、展现精致的交互界面。软件安装时,可以向用户提供对这些控件和交互界面的支持,从而为用户安装软件时带来更好的使用体验。
[0113](2)开发手段灵活:不必借助第三方厂商提供的SDK,例NSIS,可以使用和程序同源的C++或者C#等高级变成语言开发。
[0114](3)可维护性、稳定性强:现有安装包技术主要基于脚本语言构造,当程序大小或者逻辑迭代到达一定庞杂程度后,无法很好的维护和表现出较好的稳定性,通过本实施例,可以规避此类风险。
[0115](4)提供良好的用户体验:传统的安装包耗时极长,严重阻碍了用户的软件使用积极性。使用本申请的技术方案,可以提供良好的用户体验,有效提升用户对软件的使用积极性。
[0116]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0117]以上对本申请所提供的一种软件安装方法和装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
【权利要求】
1.一种软件安装方法,其特征在于,包括: 将待安装软件中的所有文件划分为核心文件和非核心文件,所述核心文件为用于实现主动触发功能的文件,所述非核心文件为用于实现被动触发功能的文件; 生成所述核心文件的子安装包和所述非核心文件的子安装包; 当安装所述待安装软件时,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
2.根据权利要求1所述的方法,其特征在于,所述当安装所述待安装软件时,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行的步骤包括: 当开始安装所述待安装软件时,仅使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
3.根据权利要求1或2所述的方法,其特征在于,还包括: 当所述核心文件安装后开始运行时,使用所述非核心文件的子安装包安装所述非核心文件。
4.根据权利要求1或2所述的方法,其特征在于,还包括: 当所述核心文件安装完成后,接收到输入的安装所述非核心文件的指令,使用所述非核心文件的子安装包安装所述非核心文件。
5.根据权利要求1所述的方法,其特征在于,所述使用所述核心文件的子安装包安装所述核心文件的步骤包括: 使用所述核心文件的子安装包,利用多个线程安装所述核心文件,所述多个线程包括主线程和逻辑线程,所述主线程用于所述核心文件的安装初始化操作,所述逻辑线程用于执行所述核心文件的安装过程。
6.根据权利要求5所述的方法,其特征在于,所述多个线程还包括界面线程,所述界面线程用于所述核心文件的安装界面展现。
7.根据权利要求6所述的方法,其特征在于,所述使用所述核心文件的子安装包,利用多个线程安装所述核心文件的步骤包括: 所述逻辑线程启动所述主线程,在所述主线程启动的过程中,发送消息通知所述界面线程设置定时器并开始展现安装界面; 所述界面线程使用所述定时器控制所述安装界面中安装进度的显示; 在所述安装进度显示安装完成时,所述界面线程向所述逻辑线程发送消息,通知所述逻辑线程所述核心文件安装完成。
8.根据权利要求1所述的方法,其特征在于,所述运行所述核心文件的步骤包括: 动态加载所述核心文件中的动态链接库DLL文件,运行所述核心文件。
9.根据权利要求1所述的方法,其特征在于,在所述当安装所述待安装软件时,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件的步骤之前,还包括:设定所述待安装软件的安装环境和安装路径; 所述当安装所述待安装软件时,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件的步骤包括:当安装所述待安装软件时,在所述安装环境和安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件。
10.根据权利要求9所述的方法,其特征在于,所述安装路径包括默认安装路径和备用安装路径; 所述当安装所述待安装软件时,在所述安装环境和安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件的步骤包括:当安装所述待安装软件时,在所述安装环境和所述默认安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件;若在所述安装环境和所述默认安装路径下,安装所述核心文件失败,则在所述安装环境和所述备用安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件。
11.根据权利要求9所述的方法,其特征在于,还包括: 在安装所述待安装软件的过程中,接收输入的安装路径,撤销在所述设定的安装环境和安装路径下已安装的核心文件,在所述输入的安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件。
12.根据权利要求1所述的方法,其特征在于,所述用于实现主动触发功能的核心文件为所述待安装软件安装并运行后,不需要除所述待安装软件启动运行以外的因素即运行的文件;所述实现被动触发功能的非核心文件为所述待安装软件安装并运行后,需要除所述待安装软件启动运行以外的因素运行的文件。
13.一种软件安装装置,其特征在于,包括: 划分模块,用于将待安装软件中的所有文件划分为核心文件和非核心文件,所述核心文件为用于实现主动触发功能的文件,所述非核心文件为用于实现被动触发功能的文件; 生成模块,用于生成所述核心文件的子安装包和所述非核心文件的子安装包; 安装模块,用于当安装所述待安装软件时,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
14.根据权利要求13所述的装置,其特征在于,所述安装模块,用于当所述开始安装所述待安装软件时,仅使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
15.根据权利要求13或14所述的装置,其特征在于,还包括: 继续安装模块,用于当所述核心文件安装后开始运行时,使用所述非核心文件的子安装包安装所述非核心文件;或者,用于当所述核心文件安装完成后,接收到输入的安装所述非核心文件的指令,使用所述非核心文件的子安装包安装所述非核心文件。
16.根据权利要求13所述的装置,其特征在于,所述安装模块,用于当安装所述待安装软件时,使用所述核心文件的子安装包,利用多个线程安装所述核心文件,使所述待安装软件的主动触发功能正常运行,其中,所述多个线程包括主线程和逻辑线程,所述主线程用于所述核心文件的安装初始化操作,所述逻辑线程用于执行所述核心文件的安装过程。
17.根据权利要求16所述的装置,其特征在于,所述多个线程还包括界面线程,所述界面线程用于所述核心文件的安装界面展现。
18.根据权利要求17所述的装置,其特征在于,所述安装模块在使用所述核心文件的子安装包,利用多个线程安装所述核心文件时,由所述逻辑线程启动所述主线程,在所述主线程启动的过程中,发送消息通知所述界面线程设置定时器并开始展现安装界面;所述界面线程使用所述定时器控制所述安装界面中安装进度的显示;在所述安装进度显示安装完成时,所述界面线程向所述逻辑线程发送消息,通知所述逻辑线程所述核心文件安装完成。
19.根据权利要求13所述的装置,其特征在于,所述安装模块在运行所述核心文件时,通过动态加载所述核心文件中的动态链接库DLL文件,运行所述核心文件。
20.根据权利要求13所述的装置,其特征在于,还包括:设定模块,用于在所述安装模块使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件之前,设定所述待安装软件的安装环境和安装路径; 所述安装模块用于当安装所述待安装软件时,在所述安装环境和安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
21.根据权利要求20所述的装置,其特征在于,所述安装路径包括默认安装路径和备用安装路径; 所述安装模块,用于当安装所述待安装软件时,在所述安装环境和所述默认安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件;若在所述安装环境和所述默认安装路径下,安装所述核心文件失败,则在所述安装环境和所述备用安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
22.根据权利要求20所述的装置,其特征在于,还包括: 接收模块,用于在所述安装模块安装所述待安装软件的过程中,接收输入的安装路径,撤销在所述设定的安装环境和安装路径下已安装的核心文件,并将所述输入的安装路径发送给所述安装模块,由所述安装模块在所述输入的安装路径下,使用所述核心文件的子安装包安装所述核心文件并运行所述核心文件,使所述待安装软件的主动触发功能正常运行。
23.根据权利要求13所述的装置,其特征在于,所述用于实现主动触发功能的核心文件为所述待安装软件安装并运行后,不需要除所述待安装软件启动运行以外的因素即运行的文件;所述实现被动触发功能的非核心文件为所述待安装软件安装并运行后,需要除所述待安装软件启动运行以外的因素运行的文件。
【文档编号】G06F9/445GK104166573SQ201410406744
【公开日】2014年11月26日 申请日期:2011年12月12日 优先权日:2011年12月12日
【发明者】赵晨曦, 李锦伟, 陶伟华 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司