软件管理器的软件安装检测方法和系统的制作方法

文档序号:6486449阅读:207来源:国知局
软件管理器的软件安装检测方法和系统的制作方法
【专利摘要】本申请公开了一种软件管理器的软件安装检测方法和系统,主要包括设置检测策略文件,其中包括软件管理器的软件仓库中的所有软件ID及其对应的安装特征信息;在检测时,由枚举模块枚举本地客户机上已经安装的所有软件的安装特征信息;再由检测模块在所述检测策略文件中查找是否有与所枚举出的本地客户机已安装软件的安装特征信息相同的安装特征信息,如果查找到,则判定查找到的安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。利用本发明,可以提高软件管理器在进行软件安装检测时的检测速度。
【专利说明】软件管理器的软件安装检测方法和系统
【技术领域】
[0001]本发明涉及数据处理设备的辅助管理【技术领域】,尤其涉及一种软件管理中所用到的软件安装检测方法和系统。
【背景技术】
[0002]目前,数据处理设备,如计算机、智能手机、掌上电脑、平板电脑等,的使用越来越普及。在数据处理设备上运行的各种软件也呈爆炸式发展。对数据处理设备的硬件和软件的辅助管理要求也越来越高。
[0003]其中对于软件的管理,目前的主要技术方案是软件管理器。软件管理器是一种对数据处理设备的软件进行管理的软件。目前业界比较常用的软件管理器比如360软件管家、金山软件管家等。目前的软件管理器具备的主要功能包括:软件仓库、软件升级、软件卸载、下载管理等。
[0004]软件管理器中的软件仓库中通常集合了目前业界大部分的优秀常用的软件,供用户选择安装和升级。为了给用户提供更丰富、更全面的软件安装和升级,目前软件仓库中支持的软件越来越多,遍及即时通信、音视频播放、网页浏览、输入法等各个门类,总数会达到数千甚至上万种。比如目前的360软件管家,软件仓库中支持的数量为11000多种。使用软件管理器,数据处理设备的用户可以很便捷的获取软件仓库中的软件的安装包,并进行版本升级,解决旧版本中的缺陷和漏洞等问题。
[0005]在软件管理器中,一项基础且关键的技术,就是软件的安装检测。所谓软件安装检测是指判断客户机(即安装软件管理器的用户数据处理设备)上是否已经安装软件仓库中的某一种或多种软件,如果已安装,则获得其版本号,与软件仓库中对应软件的最新版本号对比,并提供升级信息。对于软件仓库中支持的每一种软件,都需要检测客户机是否安装,从而判断对应软件是否需要安装和升级等。当软件仓库中支持的软件数量越来越多(如上万种)时,如何提高批量软件检测的性能,就显得至关重要。
[0006]目前,现有的软件管理器中,软件安装检测的主要技术方案是:
[0007]软件仓库中的每一种软件都至少具有软件名称和版本号信息,还具有对应的描述信息等。并且在软件仓库中为每一种软件分配一个软件ID (即该软件的唯一标识),并提供一个软件检测策略配置文件,用于依次描述各种软件的安装检测方法。图1为现有技术的一种软件检测策略配置文件的结构图。参见图1,其中“软件I”和“软件2”为软件的ID,针对每一种软件ID,都对应配置有相应的软件检测策略,如图中的策略1、策略2、策略3。每种软件检测策略都描述了一种判断客户机上是否已经安装了软件仓库中的该软件(如图1中的“软件I”或“软件2”)的具体检测策略。
[0008]通常一种软件在客户机的操作系统上安装时,除了会向客户机的安装目录拷贝该软件所需的文件外,还会做以下二种处理:
[0009]第一种处理:向注册表中的一个特定位置写入键值。
[0010]例如对于Windows操作系统,所述具体位置是:[0011]HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
[0012]或
[0013]HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
[0014]在上述注册表位置写入键值后,即可在Windows控制面板-添加删除程序列表中看到,如图2所示为Windows操作系统控制面板-添加删除程序列表的一种示意图。
[0015]第二种处理:向操作系统的开始-程序菜单和桌面写入快捷方式。如图3所示为Windows操作系统的开始-程序菜单中的快捷方式示意图,所述快捷方式用于使用户可以方便地启动客户机上已经安装的应用程序。
[0016]因此,主要通过对这上述这二个位置进行检测,即可判断某一种软件是否已经安装到客户机。
[0017]目前常用的软件检测策略,主要有如下三种:
[0018]第一种软件检测策略:描述一种软件在客户机操作系统的开始-程序菜单和桌面中的快捷方式,通过检测客户机是否有相同的快捷方式来判断该客户机是否安装该软件,如果安装则获取到该软件的执行文件,通常是主EXE文件或DLL文件等,从该执行文件中再获取到所安装的软件版本号。
[0019]第二种软件检测策略:描述一种软件在客户机操作系统的注册表节点信息,并描述该软件的安装路径的获取方式,例如Windows操作系统的软件安装路径可以从注册表:
[0020]HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
[0021]节点或
[0022]HKEY_CURRENT_USER\Software\Microsoft\ffindows\CurrentVersion\Uninstall节点下的DisplayIcon键值或InstallLocation键值中获取。
[0023]在检测时,检测客户机是否具有相同的注册表节点信息来判断该客户机是否安装该软件,如果安装则从所述键值中获取到该软件的安装路径,从安装路径中获取执行文件,从该执行文件中再获取到所安装的软件版本号。
[0024]第三种软件检测策略:描述一种软件在客户机操作系统的注册表节点信息,并直接描述该软件版本号所在的注册表特定位置。例如:可以从注册表
[0025]HKEY_LOCAL_MACHINE\Sof tware\Mi crosof t\ff indows\CurrentVer s ion\Uninstall
[0026]节点或
[0027]HKEY_CURRENT_USER\Software\Microsoft\ffindows\CurrentVersion\Un install节点下的DisplayVersion键值中获取版本号。
[0028]检测时,检测客户机是否具有相同的注册表节点信息来判断该客户机是否安装该软件,如果安装则从所述DisplayVersion键值中获取到该软件的版本号。
[0029]图4为现有的软件安装检测的流程图。现有技术中,对于软件仓库中的每一种软件,按照图1所述的软件检测策略配置文件中的各软件的对应策略进行顺序一次检测。即:
[0030]首先检测软件I是否在本地客户机安装,具体是依据图1所示的该软件I的软件检测策略,即策略1、策略2、策略3依次进行检测,如果检测到,则判定该软件I已安装在本客户机,如果通过全部策略都没有检测到,则判定该软件I未安装在本客户机。
[0031]其次,检测软件2是否在本地客户机安装,具体是依据图1所示的该软件2的软件检测策略,即策略1、策略2、策略3依次进行检测,如果检测到,则判定该软件I已安装在本客户机,如果通过全部策略都没有检测到,则判定该软件I未安装在本客户机。
[0032]然后同理顺序依次检测软件3、、、软件N,直到软件仓库中所有的软件都检测完毕。
[0033]现有技术中的软件安装检测技术的主要缺点是:当软件仓库含有大批量的软件数目时,其检测速度非常缓慢,这是因为:
[0034]I)现有技术是从软件仓库中的第一种软件开始到第N种软件依次检测,其总体检测时间,会随支持的软件数目增加而呈线性增加。如果需要检测的软件数量少,如100种,总检测时间一般在0.1秒以内,其速度还可以接收;但是对于软件数量庞大的软件仓库,如含I万、2万种软件时,其总体检测时间就会同比增长,比如达到3秒、5秒,会严重影响软件列表的刷新速度,待升级软件列表显示慢,软件管理器的运行效率降低,严重影响了用户体验。
[0035]2)现有技术中,对于软件仓库中的每一种软件,不论该软件是否安装,都会去尝试读取注册表和快捷方式,判断其注册表项和快捷方式项是否存在,实际大多数情况是没有必要的。比如对于含有I万种软件的软件仓库,每一种软件有一个快捷方式项和一个注册表项,如果要对软件仓库进行软件安装检测,则需要读取I万次注册表和I万次快捷方式,判断每种软件是否已经被安装在客户机,即需要做2万次的注册表和磁盘I/O操作,众所周知,磁盘I/O操作是比较耗时的。而实际上一般用户的机器上安装的软件数不超过百种。这就造成了磁盘I/O操作的冗余,严重降低了软件安装检测的检测速度。

【发明内容】

[0036]有鉴于此,本发明的主要目的在于提供一种软件管理器的软件安装检测方法和系统,以提高软件管理器在进行软件安装检测时的检测速度。
[0037]本发明的技术方案是这样实现的:
[0038]一种软件管理器的软件安装检测方法,包括:设置检测策略文件,其中包括软件管理器的软件仓库中的所有软件ID及其对应的安装特征信息;
[0039]在检测时,包括:
[0040]枚举本地客户机上已经安装的所有软件的安装特征信息;
[0041]在所述检测策略文件中查找是否有与所枚举出的本地客户机已安装软件的安装特征信息相同的安装特征信息,如果查找到,则判定查找到的安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
[0042]一种软件安装检测系统,包括:
[0043]检测策略文件,其中包括软件管理器的软件仓库中的所有软件ID及其对应的安装特征信息;
[0044]枚举模块,用于枚举本地客户机上已经安装的所有软件的安装特征信息;
[0045]检测模块,用于在所述检测策略文件中查找是否有与所枚举出的本地客户机已安装软件的安装特征信息相同的安装特征信息,如果查找到,则判定查找到的安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
[0046]与现有技术相比,本发明设置检测策略文件,其中包括软件管理器的软件仓库中的所有软件ID及其对应的安装特征信息;并在检测时,先枚举本地客户机上已经安装的所有软件的安装特征信息;然后再到所述检测策略文件中查找是否有与所枚举出的安装特征信息相同的安装特征信息,如果查找到,则判定查找到的安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。由于与软件仓库中的软件数量相比,本地客户机通常安装的软件数量较少,因此只需要针对这数量很少的软件从所述检测策略文件中查找对应的安装特征信息即可,总体检测所需要执行的操作更少,并且对本地客户机的磁盘I/O操作也大大降低,因此可以提高软件管理器在软件安装检测时的检测速度。
【专利附图】

【附图说明】
[0047]图1为现有技术的一种软件检测策略配置文件的结构图;
[0048]图2为Windows操作系统控制面板-添加删除程序列表的一种示意图;
[0049]图3为Windows操作系统的开始-程序菜单中的快捷方式示意图;
[0050]图4为现有的软件安装检测的流程图;
[0051]图5为本发明所述软件管理器的软件安装检测方法的一种流程图;
[0052]图6为本发明所述检测策略文件的一种基本格式示意图;
[0053]图7为Windows操作系统的已安装软件注册表节点信息的示意图;
[0054]图8为Windows操作系统的开始-程序菜单中已安装软件的快捷方式列表示意图;
[0055]图9为本发明所述软件安装检测系统的一种组成示意图;
[0056]图10为检测策略文件服务器下发机制的一种示意图;
[0057]图11为本发明所述软件安装检测系统的又一种组成示意图。
【具体实施方式】
[0058]下面结合附图及具体实施例对本发明再作进一步详细的说明
[0059]图5为本发明所述软件管理器的软件安装检测方法的一种流程图,该方法主要包括:
[0060]501、设置检测策略文件,其中包括软件管理器的软件仓库中的所有软件ID及其对应的安装特征信息;
[0061]在检测时,包括:
[0062]502、枚举本地客户机上已经安装的所有软件的安装特征信息;
[0063]503、在所述检测策略文件中查找是否有与所枚举出的本地客户机已安装软件的安装特征信息相同的安装特征信息,如果查找到,则判定查找到的安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
[0064]本发明中,所述客户机是指可以安装软件的数据处理设备,如计算机、智能手机、掌上电脑、平板电脑等。所述软件管理器运行在客户机上。相对于软件管理器来讲,其所运行的客户机被称为本地客户机。
[0065]所述设置检测策略文件通常是在服务器端设置,该检测策略文件中的内容可以由人工运营设置,生成指定格式的文件,例如通常为可扩展标记语言(XML,ExtensibleMarkup Language)格式的文件。在设置好后下发给软件管理器。也可以给软件管理器提供该检测策略文件的下载地址,软件管理器可以主动从所述下载地址下载最新版本的检测策略文件。
[0066]在设置检测策略文件时,包括:
[0067]I).给软件管理器的软件仓库中的每一种软件都分配一个软件ID。
[0068]2).在检测策略文件中,针对软件仓库中的每一种软件,建立从该软件的安装特征信息到该软件的软件ID的映射关系。
[0069]本发明所述的安装特征信息为:软件在客户机操作系统注册表中的注册表节点信息、和/或软件在客户机操作系统的快捷方式信息。
[0070]例如在Windows操作系统中,所述软件在客户机操作系统注册表中的注册表节点信息为:
[0071]HKEY_LOCAL_MACHINE\Software\Microsoft\ffindows\CurrentVersion\Uninstall 或
[0072]HKEY_CURRENT_USER\Software\Microsoft\ffindows\CurrentVersion\Uninstal下的节点信息,如某一种软件“QQ旋风”的注册表节点信息可以是:
[0073]HKEY_LOCAL_MACHINE\Sof tware\Mi crosof t\ff indows\CurrentVer s ion\Uninstall 下的 \QQ 旋风 \。
[0074]所述软件在客户机操作系统的快捷方式信息通常是在客户机操作系统的开始-程序菜单和桌面中的快捷方式信息,具体是快捷方式的路径,如某一种软件QQ影音的快捷方式路径为“腾讯软件\QQ影音\QQ影音.1nk”。
[0075]图6为本发明所述检测策略文件的一种基本格式示意图。参见图6,该检测策略文件中,建立了从软件的注册表节点信息到软件ID的映射,以及从软件的快捷方式信息到软件ID的映射。当然在其它实施例中,所述检测策略文件中也可以只建立从软件的注册表节点信息到软件ID的映射,或者只建立从软件的快捷方式信息到软件ID的映射。只不过图6所示同时建立注册表节点信息和快捷方式信息到软件ID的映射,所检测到的已安装软件会更加全面。
[0076]具体映射关系可通过xml结构表示,如下XML文件I所示:(//后为注释):
[0077]KreglistV/通过注册表项检测,注册表节点信息到软件ID的映射
[0078]2〈item reg="{052CFB79-9D62-42E3-8A15-DE66C2C97C3E}" softid="l" >
[0079]3<item reg="QQ 旋风"softid="2"/>
[0080]4</reglist>
[0081]5<linklist>//通过快捷方式检测,快捷方式信息到软件ID的映射
[0082]6<item link="腾讯软件 \QQ2011\ 腾讯 QQ2011.lnk"softid="lV>
[0083]7<item link="腾讯软件 \QQ2012\ 腾讯 QQ2012.lnk〃softid=〃l"/>
[0084]8<item link=〃腾讯软件 \QQ 影音 \QQ 影音.lnk〃softid=〃2"/>
[0085]9</linklist>
[0086]其中,第2行和第3行分别表示了一种软件的注册表节点信息到软件ID的映射关系,其中reg后为该软件的注册表节点信息,softid后为该软件的ID。所述注册表节点信息为注册表位置
[0087]HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall 或
[0088]HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstal下的节点信息。
[0089]所述第6、7、8行分别表示了一种软件的快捷方式信息到软件ID的映射关系,其中link后为该软件的快捷方式信息,softid后为该软件的ID。
[0090]在所述检测策略文件下发到安装在客户机的软件管理器后,软件管理器执行软件安装检测的过程,即执行所述步骤502和503。
[0091]具体的,在步骤502中,软件管理器需要执行以下步骤521和/或522:
[0092]步骤521)枚举本地客户机操作系统中已安装软件在注册表中的注册表节点信息,生成注册表节点信息的列表。如在Windows操作系统中,即枚举注册表:
[0093]HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall 和
[0094]HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstal下的各个注册表节点信息,就可得到本地客户机已安装软件的安装特征信息。
[0095]图7为Windows操作系统的已安装软件注册表节点信息的示意图。图7只是显不了 注册表 HKEY_L0CAL_MAC HINE\Software\Microsoft\ffindows\CurrentVersion\Uninstall 701下各个注册表节点702,例如图中的“QQsoftMgr”、“QQWubi”、“QQ拼音输入法”、“QQ旋风”等都是对应软件的注册表节点信息。这些注册表节点信息表示对应的软件已安装在本地客户机上,在后续的软件安装检测中,需要检测这些已安装的软件是否属于软件管理器的软件仓库中的软件,以及是否需要升级。枚举这些注册表节点信息的具体方式可以调用操作系统提供的相应的应用程序编程接口(API, Application ProgrammingInterface),例如RegEnumKeyEx。在枚举后,可以将这些枚举出的注册表节点信息生成一个列表,待后续到检测策略文件中查找信息。至于注册表
[0096]HKEY_CURRENT_USER\Software\Microsoft\ffindows\CurrentVersion\Uninsta 下的注册表节点同理,本文不再画图示意。
[0097]步骤522)枚举本地客户机操作系统中开始-程序菜单和桌面的所有快捷方式,生成快捷方式信息的列表。
[0098]图8为Windows操作系统的开始-程序菜单中已安装软件的快捷方式列表示意图。参见图8,在该列表中列出的各个软件的快捷方式都表示对应的软件已安装在本地客户机上,例如快捷方式801表示软件“WinRAR”已经安装在本地客户机上。在后续的软件安装检测中,需要检测这些已安装的软件是否属于软件管理器的软件仓库中的软件,以及是否需要升级。枚举这些快捷方式信息的具体方式可以调用操作系统提供的相应的API,例如FindNextFile。在枚举后,可以将这些枚举出的快捷方式信息生成一个列表,待后续到检测策略文件中查找信息。至于枚举桌面的所有快捷方式信息于此同理,本文不再赘述。
[0099]在步骤502中,当检测策略文件中只包括注册表节点信息到软件ID的映射关系时,软件管理器可以只执行上述步骤521 ;当检测策略文件中只包括快捷方式信息到软件ID的映射关系时,软件管理器可以只执行上述步骤522 ;当检测策略文件中同时包括了注册表节点信息到软件ID的映射关系和快捷方式信息到软件ID的映射关系时,软件管理器可以只执行上述步骤521或522,也可以同时执行步骤521和522。由于有些软件厂商在客户机安装软件时只是写入注册表而不增加快捷方式信息,因此在同时执行步骤521和522的这种情况下,所检测出的结果更加全面。
[0100]具体的,在步骤503中,软件管理器对于步骤502所枚举到的安装特征信息,到所述检测策略文件中查找是否有与所枚举出的安装特征信息相同的安装特征信息,如果查找至IJ,则判定查找到的安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
[0101]对于步骤502所枚举出的本地客户机已安装的软件的注册表节点信息,软件管理器到所述检测策略文件中的注册表节点信息中查找,查看是否有相同的注册表节点信息,例如对于图7所示的注册表节点信息“QQ旋风”,到检测策略文件中依次查找所述注册表节点信息中是否有“QQ旋风”这个注册表节点信息,如果有,则判定该注册表节点信息对应的软件ID所表示的软件(该软件是软件管理器软件仓库中支持的软件)在本地客户机上已经安装。
[0102]对于步骤502所枚举出的本地客户机已安装的软件的快捷方式信息,软件管理器到所述检测策略文件中的快捷方式信息中查找,查看是否有相同的快捷方式信息,对于在本地客户机所枚举出快捷方式信息“腾讯软件\QQ影音\QQ影音.1nk”,到检测策略文件中依次查找所述快捷方式信息中是否有“腾讯软件\QQ影音\QQ影音.1nk”这个快捷方式信息,如果有,则判定该快捷方式信息对应的软件ID所表示的软件(该软件是软件管理器软件仓库中支持的软件)在本地客户机上已经安装。
[0103]由上所述,本发明进行软件安装检测的总体检测时间估算为:
[0104]总体检测时间=枚举本机已装软件时间+在检测策略文件中的查找时间
[0105]其中枚举本机已装软件时间只和本机已装软件数目相关,在检测策略文件中的查找时间依赖查找算法。与现有技术相比,本发明的注册表和磁盘I/o访问次数大幅减少,和软件管理器软件仓库支持的软件数目无关,仅和本地客户机已装软件数目相关,总体检测时间不再和支持的软件数目呈线性增长。而在检测策略文件中的查找时间在不利用特殊算法的情况下也很快速。因此,相对于现有技术,本发明可以提高软件管理器在软件安装检测时的检测速度。
[0106]为了进一步提高检测速度,在优选的实施例中,可以在检测策略文件中的查找信息时采用特殊的查找算法来提高查找效率,从而进一步提高总体检测速度。
[0107]为了配合查找算法,所述在设置检测策略文件时,还需进一步对检测策略文件中的安装特征信息进行预处理。具体的预处理方式可以有多种,最典型的有两种:
[0108]一种是对检测策略文件中的安装特征信息进行排序,以方便在后续的软件安装检测时采用二分法算法进行查找,即:
[0109]后续在检测策略文件中查找是否有与所枚举出的本地客户机已安装软件的安装特征信息相同的安装特征信息,具体包括:
[0110]针对所枚举出的每一项本地客户机已安装软件的安装特征信息Xi,其中1=1,...,η, η为所枚举出的安装特征信息的数量,采用二分法在所述检测策略文件中查找是否有与该安装特征信息Xi相同的安装特征信息,如果查找到,则判定该安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。[0111]所述二分法查找又称折半查找,优点是比较次数少,查找速度快,平均性能好。在查找时,首先将检测策略文件中中间位置记录的安装特征信息与待查找的安装特征信息Xi比较,如果两者相等,则查找成功;否则利用中间位置记录将检测策略文件分成前、后两个子表,如果中间位置记录的安装特征信息大于待查找的安装特征信息Xi,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的安装特征信息,使查找成功,或直到子表不存在为止,此时查找不成功。
[0112]另一种预处理方法是采用哈希算法对检测策略文件中的各条安装特征信息进行哈希计算得到哈希值,并在检测策略文件中进一步包括所述软件仓库中所有软件ID对应的安装特征信息的哈希值,以方便在后续的软件安装检测时采用哈希算法进行查找,即:
[0113]后续在检测策略文件中查找是否有与所枚举出的本地客户机已安装软件的安装特征信息相同的安装特征信息,具体包括:
[0114]针对所枚举出的每一项本地客户机已安装软件的安装特征信息Xi,其中i=l,...,η, η为所枚举出的安装特征信息的数量,采用与所述设置检测策略文件时所采用的相同的哈希算法,计算该安装特征信息Xi的哈希值;然后在所述检测策略文件中查找是否有与该哈希值相同的哈希值,如果是,则从检测策略文件中该哈希值对应的安装特征信息中查找与所述安装特征信息Xi相同的安装特征信息,如果查找到,则判定该安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
[0115]采用上述预处理和特殊查找算法,可以进一步提高查找效率,进而提高检测速度。比如是二分法查找,则所述在检测策略文件中的查找时间为log2~n,其中η表示检测策略文件中注册表或快捷方式的总数,如果是HASH查找则效率更高。
[0116]当然,查找的方法,主要包括但不限于上述二分法查找和HASH查找。除此之外还有其它的查找方法,比如二叉树查找等。
[0117]在另一种实施例中,本发明的方法在步骤503所述判定查找到的安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装之后,还可以进一步包括:
[0118]获取所述查找到的安装特征信息对应的软件在本地客户机上的版本号。在获取该软件在本地客户机上的版本号之后,可以根据软件管理器的策略进行对应处理,例如还可以进一步包括:获取所述查找到的安装特征信息对应的软件在软件管理器软件仓库中的最新版本号,判断所述软件仓库中的最新版本号是否大于所述本地客户机上的对应版本号,如果大于则提示需要更新该软件,否则提示该软件已经安装。
[0119]至于如何获取所述查找到的安装特征信息对应的软件在本地客户机上的版本号,需要看安装特征信息的种类,利用注册表节点信息和快捷方式信息获取对应版本号的方法不尽相同。如果所述安装特征信息为软件在客户机操作系统注册表中的注册表节点信息,则所述检测策略文件中进一步包括注册表节点信息对应的软件安装路径的键名和执行文件名,和/或注册表节点信息对应的软件版本键名。
[0120]例如检测策略文件中的xml结构的内容如下XML文件2所示:
[0121]具体映射关系可通过xml结构表示,示例如下(//后为注释):
[0122]KreglistV/通过注册表项检测,注册表节点信息到软件ID的映射
[0123]2〈item reg="{052CFB79-9D62-42E3-8A15-DE66C2C97C3E}" softid="l" >
[0124]3<item reg="QQ 旋风"softid="2">[0125]4<file keyname= “DisplayIcon,,filename= “bin\QQ 旋风.exe,,/>// 用于取 exe资源里的版本号
[0126]5<reg keyname= “DisplayVersion”/>// 用于取注册表里的版本号
[0127]6〈/item>
[0128]7</reglist>
[0129]8<linklist>//通过快捷方式检测,快捷方式信息到软件ID的映射
[0130]9<item link=〃 腾讯软件 \QQ2011\ 腾讯 QQ2011.lnk〃softid=〃lV>
[0131]10<item link="腾讯软件 \QQ2012\ 腾讯 QQ2012.lnk^softid^lV)
[0132]IKitem link="腾讯软件 \QQ 影音 \QQ 影音.lnk"softid="2"/>
[0133]12〈/linklist>
[0134]其中,第4行表示了所述注册表节点信息"QQ旋风"对应的软件安装路径的键名“Displaylcon” (或者 “ InstallLocation”)和执行文件名“QQ旋风.exe”。所述第5行表示了所述注册表节点信息"QQ旋风〃对应的软件版本键名“DisplayVersion”。
[0135]在获取所述查找到的安装特征信息对应的软件在本地客户机上的版本号时,具体方法是:
[0136]如果所述查找到的安装特征信息包括注册表节点信息,则针对所查找到的每一项注册表节点信息Yi,其中i=l,m为所查找到的注册表节点信息的数量,根据所述检测策略文件中该注册表节点信息Yi对应的软件安装路径的键名和执行文件名,从本地客户机的对应注册表节点的对应安装路径键名中读取安装路径,再到该安装路径下,按照所述执行文件名读取执行文件,并从该执行文件中获取版本号;或者,根据所述检测策略文件中该注册表节点信息Yi对应的软件版本键名,从本地客户机的对应注册表节点的对应软件版本键名中读取版本号。
[0137]例如如图7所示在本地客户机枚举出的注册表节点信息“QQ旋风”,先在所述XML文件2 (即检测策略文件)中查找,找到有相同的注册表节点信息即所述第3行中的"QQ旋风",则该注册表节点信息对应的软件ID即softid="2"的软件(该软件ID是软件仓库中的ID,该软件是软件仓库中的软件)已经在本地客户机安装。接下来获取在本地客户机安装的版本号,具体方法是根据所述XML文件2的第4行中的安装路径键名“Displaylcon”,从图7所示的本地客户机注册表节点的对应安装路径键名“Displaylcon” 703中读取安装路径即“c: \Program Files\Tencent\QQDownload\”,再到该安装路径下,按照所述执行文件名读取执行文件QQ旋风.exe,并从该执行文件中获取版本号,具体的获取方法也可以直接调用操作系统的相关API来实现;或者,根据所述XML文件2第5行所述的软件版本键名“DisplayVersion”,从图7所示的本地客户机的对应注册表节点的对应软件版本键名“DisplayVersion” 704 中读取版本号即 3.9.708.403。
[0138]如果在检测策略文件中查找到的安装特征信息为软件在客户机操作系统的快捷方式信息;则针对所查找到的每一项快捷方式信息Zi (这些快捷方式信息对应的软件已经在本地客户机上安装),其中i=l,…,p,p为所查找到的快捷方式信息的数量,从本地客户机读取该快捷方式信息对应的执行文件,从该执行文件中获取版本号。
[0139]与本发明的上述方法对应,本发明还公开了一种软件安装检测系统,用于执行本发明所述的方法。图9为本发明所述软件安装检测系统的一种组成示意图。参见图9,该系统包括:
[0140]检测策略文件901,其中包括软件管理器的软件仓库中的所有软件ID及其对应的安装特征信息;所述安装特征信息为:软件在客户机操作系统注册表中的注册表节点信息、和/或软件在客户机操作系统的快捷方式信息。
[0141]枚举模块902,用于枚举本地客户机上已经安装的所有软件的安装特征信息。
[0142]检测模块903,用于在所述检测策略文件中查找是否有与所枚举出的本地客户机已安装软件的安装特征信息相同的安装特征信息,如果查找到,则判定查找到的安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
[0143]本发明所述的枚举模块902和检测模块903位于软件管理器中,所述软件管理器安装在客户机上。所述检测策略文件901可以预先在服务器端设置好,然后再下发给软件管理器。也可以给软件管理器提供该检测策略文件的下载地址,软件管理器可以主动从所述下载地址下载最新版本的检测策略文件,也可以在检测时在线从服务器端获取所述检测策略文件。
[0144]图10为检测策略文件服务器下发机制的一种示意图。参见图10,在服务器端利用检测策略配置系统1001配置检测策略文件,主要是采用人工运营配置,然后交给检测策略下发服务器1002下发给客户机上的软件管理器1003。
[0145]为了进一步提高检测速度,在优选的实施例中,可以在检测策略文件中的查找信息时采用特殊的查找算法来提高查找效率,从而进一步提高总体检测速度。
[0146]为了配合查找算法,所述在设置检测策略文件时,还需进一步对检测策略文件中的安装特征信息进行预处理。如图10为设置在服务器端的预处理模块1004,对所述检测策略文件进行预处理后再下发给软件管理器,其中具体包括第一预处理模块1041和/或第二预处理模块1042。
[0147]所述第一预处理模块1041用于对所述检测策略文件中的安装特征信息进行排序,之后下发给所述软件管理器,在所述软件安装检测系统的检测模块903中具体包括二分法检测子模块,用于针对所枚举出的每一项本地客户机已安装软件的安装特征信息Xi,其中i=l,...,η,η为所枚举出的安装特征信息的数量,采用二分法在所述检测策略文件中查找是否有与该安装特征信息Xi相同的安装特征信息,如果查找到,则判定该安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
[0148]所述第二预处理模块1042用于采用指定的哈希算法对所述检测策略文件中的安装特征信息进行哈希计算得到哈希值,并在检测策略文件中进一步添加所述软件仓库中所有软件ID对应的安装特征信息的哈希值;之后下发给所述软件管理器。
[0149]所述软件安装检测系统的检测模块903还可以具体包括哈希检测子模块,用于针对所枚举出的每一项本地客户机已安装软件的安装特征信息Xi,其中i=l,...,η,η为所枚举出的安装特征信息的数量,采用与所述指定哈希算法相同的哈希算法,计算该安装特征信息Xi的哈希值;然后在所述检测策略文件中查找是否有与该哈希值相同的哈希值,如果是,则从检测策略文件中该哈希值对应的安装特征信息中查找与所述安装特征信息Xi相同的安装特征信息,如果查找到,则判定该安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
[0150]图11为本发明所述软件安装检测系统的又一种组成示意图。如图11所示,本发明所述的软件安装检测系统还可以进一步包括版本号获取模块904,用于在所述检测模块903判定查找到的安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装之后,获取所述查找到的安装特征信息对应的软件在本地客户机上的版本号,具体的获取方式请参见上述的方法。并可以进一步获取该软件在软件管理器软件仓库中的最新版本号,判断所述软件仓库中的最新版本号是否大于所述本地客户机上的对应版本号,如果大于则提示需要更新该软件,否则提示该软件已经安装。
[0151]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种软件管理器的软件安装检测方法,其特征在于,设置检测策略文件,其中包括软件管理器的软件仓库中的所有软件ID及其对应的安装特征信息; 在检测时,包括: 枚举本地客户机上已经安装的所有软件的安装特征信息; 在所述检测策略文件中查找是否有与所枚举出的本地客户机已安装软件的安装特征信息相同的安装特征信息,如果查找到,则判定查找到的安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
2.根据权利要求1所述的方法,其特征在于, 所述设置检测策略文件时,进一步对其中的安装特征信息进行排序; 所述在检测策略文件中查找是否有与所枚举出的本地客户机已安装软件的安装特征信息相同的安装特征信息,具体包括: 针对所枚举出的每一项本地客户机已安装软件的安装特征信息Xi,其中i=l,...,η,η为所枚举出的安装特征信息的数量,采用二分法在所述检测策略文件中查找是否有与该安装特征信息Xi相同的安装特征信息,如果查找到,则判定该安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
3.根据权利要求1所述的方法,其特征在于, 所述设置检测策略文件时,进一步采用哈希算法对其中的安装特征信息进行哈希计算得到哈希值,并在检测策略文件中进一步包括所述软件仓库中所有软件ID对应的软件安装信息的哈希值; 所述在检测策略文件中查找是否有与所枚举出的本地客户机已安装软件的安装特征信息相同的安装特征信息,具体包括: 针对所枚举出的每一项本地客户机已安装软件的安装特征信息Xi,其中i=l,...,η,η为所枚举出的安装特征信息的数量,采用与所述设置检测策略文件时所采用的相同的哈希算法,计算该安装特征信息Xi的哈希值;然后在所述检测策略文件中查找是否有与该哈希值相同的哈希值,如果是,则从检测策略文件中该哈希值对应的安装特征信息中查找与所述安装特征信息Xi相同的安装特征信息,如果查找到,则判定该安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述安装特征信息为:软件在客户机操作系统注册表中的注册表节点信息、和/或软件在客户机操作系统的快捷方式信息。
5.根据权利要求1所述的方法,其特征在于,该方法在所述判定查找到的安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装之后,进一步包括:获取所述查找到的安装特征信息对应的软件在本地客户机上的版本号。
6.根据权利要求5所述的方法,其特征在于,所述安装特征信息为软件在客户机操作系统的快捷方式信息; 所述获取所述查找到的安装特征信息对应的软件在本地客户机上的版本号,具体包括:针对所查找到的每一项快捷方式信息Zi,其中i=l,…,p,P为所查找到的快捷方式信息的数量,从本地客户机读取该快捷方式信息对应的执行文件,从该执行文件中获取版本号。
7.根据权利要求5所述的方法,其特征在于,所述安装特征信息为软件在客户机操作系统注册表中的注册表节点信息;所述检测策略文件中进一步包括注册表节点信息对应的软件安装路径的键名和执行文件名,和/或注册表节点信息对应的软件版本键名; 所述获取所述查找到的安装特征信息对应的软件在本地客户机上的版本号,具体包括:针对所查找到的每一项注册表节点信息Yi,其中i=1,...,m,m为所查找到的注册表节点信息的数量,根据所述检测策略文件中该注册表节点信息Yi对应的软件安装路径的键名和执行文件名,从本地客户机的对应注册表节点的对应安装路径键名中读取安装路径,再到该安装路径下,按照所述执行文件名读取执行文件,并从该执行文件中获取版本号;或者,根据所述检测策略文件中该注册表节点信息Yi对应的软件版本键名,从本地客户机的对应注册表节点的对应软件版本键名中读取版本号。
8.根据权利要求5、6、7任一项所述的方法,其特征在于,该方法进一步包括:获取所述查找到的安装特征信息对应的软件在软件管理器软件仓库中的最新版本号,判断所述软件仓库中的最新版本号是否大于所述本地客户机上的对应版本号,在大于时则提示需要更新该软件。
9.根据权利要求1所述的方法,其特征在于,所述设置检测策略文件具体为:在服务器端设置检测策略文件,设置好后下发给软件管理器。
10.一种软件安装检测系统,其特征在于,包括: 检测策略文件,其中包括软件管理器的软件仓库中的所有软件ID及其对应的安装特征信息; 枚举模块,用于枚举本地客户机上已经安装的所有软件的安装特征信息; 检测模块,用于在所述检测策略文件中查找是否有与所枚举出的本地客户机已安装软件的安装特征信息相同的安装特征信息,如果查找到,则判定查找到的安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
11.根据权利要求10所述的系统,其特征在于, 所述检测策略文件中的安装特征信息为进行过排序的安装特征信息; 所述检测模块具体包括二分法检测子模块,用于针对所枚举出的每一项本地客户机已安装软件的安装特征信息Xi,其中i=1,...,n, n为所枚举出的安装特征信息的数量,采用二分法在所述检测策略文件中查找是否有与该安装特征信息Xi相同的安装特征信息,如果查找到,则判定该安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
12.根据权利要求10所述的系统,其特征在于, 所述检测策略文件中进一步包括所述安装特征信息的、通过指定哈希算法计算出的哈希值; 所述检测模块具体包括哈希检测子模块,用于针对所枚举出的每一项本地客户机已安装软件的安装特征信息Xi,其中i=l,...,n,n为所枚举出的安装特征信息的数量,采用与所述指定哈希算法相同的哈希算法,计算该安装特征信息Xi的哈希值;然后在所述检测策略文件中查找是否有与该哈希值相同的哈希值,如果是,则从检测策略文件中该哈希值对应的安装特征信息中查找与所述安装特征信息Xi相同的安装特征信息,如果查找到,则判定该安装特征信息对应的软件ID所表示的软件在本地客户机上已经安装。
13.根据权利要求10至12任一项所述的系统,其特征在于,所述安装特征信息为:软件在客户机操作系统注册表中的注册表节点信息、和/或软件在客户机操作系统的快捷方式信息。
14.根据权利要求10所述的方法,其特征在于,该系统进一步包括版本号获取模块,用于获取所述查找到的安装特征信息对应的软件在本地客户机上的版本号。
15.根据权利要求14所述的方法,其特征在于,所述版本号获取模块进一步用于获取所述查找到的安装特征信息对应的软件在软件管理器软件仓库中的最新版本号,判断所述软件仓库中的最新版本号是否大于所述本地客户机上的对应版本号,在大于时则提示需要更新该软件。
【文档编号】G06F11/36GK103514089SQ201210212867
【公开日】2014年1月15日 申请日期:2012年6月26日 优先权日:2012年6月26日
【发明者】王宝剑 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1