具体实施方式
本发明实施例中,在用户建立下载软件资源的任务时,通过保存的软件名称、文件标识和软件版本之间的对应关系,获取待下载的软件资源的文件标识所对应的软件名称,再根据保存的软件名称与最新版本信息的对应关系,获取该软件名称对应的最新版本信息,同时,根据保存的文件标识与版本信息的对应关系,获取所述文件标识对应的版本信息,从而可以判断当前待下载的软件文件资源的版本是否为最新,如果不是,则提示用户待下载的软件存在新的版本。该方案在用户下载软件资源的时候检查待下载的软件是否为最新版本,而不是将整个软件资源下载到用户端后再检查,提高了下载的有效性。
本发明实施例也可以对已下载的软件进行更新提示,在用户下载完某软件资源后,保存所述软件资源的文件名称与版本信息或,文件标识,然后定期根据保存的信息,判断当前版本是否为最新版本,如果不是,则提示用户已下载的软件存在更新的版本。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图2所示,本发明实施例中一种软件版本更新提示的方法主要包括下列步骤:
步骤201:在用户建立下载软件资源任务时,获取任务中待下载的软件资源的文件标识。
待下载的软件资源是指已建立下载任务但还没有开始下载的软件文件资源。
其中,软件资源包括但不限于:软件和软件的更新程序。
所述文件标识可为文件名,文件存放的统一资源定位符(Uniform ResourceLocator,URL)或内容签名(Content Identity,CID)等。其中,内容签名是根据预设的算法对文件的内容数据进行计算后获得的。预设的算法可以是对不同的数据处理得到不同的处理结果的任一算法,其处理结果,即内容签名,可唯一标识被处理的文件;或者,预设的算法也可以是处理结果重复率极低,在可接受范围内的算法。
其中,确定内容签名的方法有很多种,比如:对每个二进制文件的内容数据进行哈希运算,得到文件内容的哈希值,该文件内容的哈希值可以唯一代表该文件内容信息。
哈希算法可以采用信息-摘要算法(Message-Digest Algorithm,MD)5,MD4,安全散列算法(Secure Hash Algorithm,SHA),安全散列算法(Secure HashStandard,SHS)等算法作为公式。
其中一个计算文件内容签名的方式是:选取整个软件文件资源前、中、后各32KB数据,也可以选取文件的其他任何几个部分,利用前述算法分别对这三个部分进行计算,将所得到的三个值顺序连接后,再次利用前述算法对连接后的数据进行计算,将最后得到的值作为该软件文件资源的CID,即内容签名;
另一个计算文件内容签名的方式是:把二进制文件的内容数据以一定的长度平均分为N个部分,该长度可以为20K、30K或者其他任何值,利用前述算法对其分别进行哈希计算,得到一个值,成为分块内容指纹(Block ContentIdentity,BCID);同样的对所有的BCID进行一次哈希算法,得到的一个值,称为全球内容指纹(Global Content Identity,GCID),以该GCID作为该文件的内容签名。
当采用软件资源的内容签名作为文件标识来唯一标识所述软件资源时,由于文件标识是根据文件的内容得出的,这样,即使两个软件资源的名称、存放的URL不同,只要其内容不改变,它们的文件标识都是一致的,本发明实施例中都将其视为同样的软件资源。
步骤202:根据保存的软件名称和文件标识的对应关系,获取所述文件标识对应的软件名称。
在保存软件名称和文件标识的对应关系之前,先要确定收集的软件资源的文件标识,确定文件标识的方法可以采取前面所述的方法来确定。
显然,在保存软件名称和文件标识的对应关系之后,确定待下载的软件资源的文件标识的方法须与该对应关系中确定软件资源的文件标识的方法相同。
比如,在保存所述关系前,确定文件标识采用取一个文件的头部、中间及尾部各32K字节的数据,分别利用MD5算法计算其文件标识,将计算所得到的三个MD5值顺序连接,并再次用DM5算法对该连接后的数据进行计算,将该计算结果作为文件的文件标识;
则前述确定待下载的软件资源的文件标识的方法为获取待下载的软件资源的头部、中间及尾部各32K字节的数据,分别利用MD5算法计算其文件标识,将计算所得到的三个MD5值顺序连接,并再次用DM5算法对该连接后的数据进行计算,将该计算结果作为所述待下载软件资源的文件标识。
其中,收集软件资源的方法包括:
定期搜索网络中的软件资源,例如通过网络爬虫spider来进行搜集;
与软件厂商合作,收集软件厂商发布的软件资源。
当然,本实施例收集软件文件资源的方式并不局限于上面提到的方式,任何能够确定软件文件资源的相关信息的方式都适用本实施例。
在确定软件文件资源的文件标识后,根据收集到的软件资源的信息,建立软件文件资源的软件名称和文件标识的对应关系,并保存所述关系。
在具体实施过程中,可以将软件名称和文件标识的对应关系以数据库、文件或其它的形式存储,如果以数据库的形式存储,则该软件实名数据库的存储形式可以如表1所示,且该数据库可以保存到的服务器上,用户端可以向该服务器提出查询请求,该服务器根据查询请求中设置的查询条件,在该数据库进行查找,并将查询的结果返回给该用户端。
CID |
软件名称 |
10001 |
aa |
10002 |
aa |
10003 |
aa |
10004 |
bb |
10005 |
bb |
10006 |
ff |
10007 |
gg |
表1
步骤203:根据保存的软件版本信息,获得该软件名称所对应的最新版本信息,以及所述文件标识所对应的版本信息,如果确定所述待下载的软件资源的版本为非最新版本时,提示用户所述待下载的软件存在新的版本。
其中,所述软件版本信息包括但不限于:
软件名称和最新版本信息的对应关系;
文件标识和版本信息的对应关系。
在具体实施过程中,软件版本信息可以与前面所述的文件标识和文件名称的对应关系保存在一个数据库或文件内,也可以分开保存。如表2所示,将文件标识和版本信息的对应关系、文件标识和文件名称的对应关系保存在同一个数据库中的一种形式。
其中所述软件名称与最新版本信息的对应关系,可以直接存储软件名称与最新版本信息的关系,也可以间接存储,即,存储与所述软件名称对应的所有版本信息,根据这些版本信息,查找所述软件名称对应的最新版本信息。
CID |
软件名称 |
版本信息 |
…… |
10001 |
aa |
5.2 |
…… |
10002 |
aa |
5.4 |
…… |
10003 |
aa |
5.0 |
…… |
10004 |
bb |
3.10 |
…… |
10005 |
bb |
3.31 |
…… |
10006 |
ff |
6.011 |
…… |
10007 |
gg |
7.2 |
…… |
表2
如果软件名称与最新版本信息的对应关系是间接存储的,则步骤203进一步包括:
步骤203a:根据保存的软件名称和软件版本的对应关系,获取所述软件名称对应的所有软件版本。
一种软件可能有多个版本,比如表1中所保存的软件实名数据库中,软件名称为“aa”的软件,共保存了三个软件版本,本发明实施例需要获取该软件名称对应的所述软件版本。
步骤203b:根据所述所有软件版本的信息,获取所述软件名称对应的最新的软件版本。
一般地,软件的版本号是用数字来标识的,数字越大,版本越新;也有用字母来标识软件的版本号,字母在字母表中位置越靠后,其版本越新。因此,可以根据相应的规则,设置相应的比较算法,计算出软件的最新版本。
比如前述的实例中,文件标识为“10001”的软件资源,对应的软件名称为“aa”,软件名称为“aa”的软件共有三个软件版本:5.2、5.0、5.4,该软件的版本是用数据来表示的,比较可知,软件名称为“aa”最新的软件版本为5.4。
根据获取的所述软件名称对应的最新版本信息和所述文件标识对应的版本信息,可以判断当前待下载的软件资源的版本是否为最新版本。
在具体实施过程中,如果所述软件的版本是用数字来表示的,可以通过比较所述文件标识对应的版本信息中版本号是否小于所述最新版本信息中的版本号,从而判断当前待下载的软件文件资源是否为最新版本。比如,表2中,文件标识为“10001”的软件资源,其版本号为5.2,而步骤203b中获取的最新的软件版本的版本号为5.4,判断5.2<5.4,因此,当前待下载的软件资源的版本为非最新版本,向用户提示待下载的软件存在更新版本。
同理,如果所述软件的软件版本是用其它方式来表示的,同样,可根据表示的规则,判断当前待下载的软件的版本是否最新,具体操作就不再详细描述。
在本实施例中,可以有多种方式向用户进行提醒:
在用户的下载页面中显示一条信息,提示用户当前的软件版本不是最新版;
可以弹出一个对话框,提示用户待下载的软件存在最新版本,询问用户是否在下载当前版本。
本发明实施例中,还可以向用户显示最新的软件版本的软件资源的下载地址,因此,在步骤203之后,进一步包括:
根据保存的软件名称与最新版本的软件资源的下载地址的对应关系,获取所述软件名称对应的最新版本的软件资源的下载地址,并将所述下载地址提供给所述用户。
在具体实施过程中,软件名称与最新版本的软件资源的下载地址的对应关系也可以直接存储,也可以间接存储。直接存储是指在收集软件资源时,将每种软件的软件名称与其最新版本的软件资源的下载地址之间的关系对应保存起来;间接存储是指收集软件资源时,存储同一个软件名称的多个软件资源对应的下载地址和版本信息,根据这些版本信息判断所述软件名称对应的最新版本,从而获得所述软件名称对应最新版本的软件资源的下载地址。
在间接存储所述软件名称与最新版本的软件资源的下载地址的对应关系时,可将下载地址与文件标识、版本信息存储在同一个数据库或文件中,如表3所示。
CID |
文件名称 |
版本信息 |
下载地址 |
…… |
10001 |
aa |
5.2 |
URL1,…… |
…… |
10002 |
aa |
5.4 |
URL2,…… |
…… |
10003 |
aa |
5.0 |
URL3,…… |
…… |
10004 |
bb |
3.10 |
URL4,…… |
…… |
10005 |
bb |
3.31 |
URL5,…… |
…… |
10006 |
ff |
6.011 |
URL6,…… |
…… |
10007 |
gg |
7.2 |
URL7,…… |
…… |
表3
查询表3,可以得到上例中,文件名称为“aa”,版本号5.4的软件文件资源的下载地址为URL1,将该地址提供给用户。
如果用户选择下载最新版本的软件资源,则在步骤203之后进一步包括:
根据所述下载地址,建立新的下载任务,将所述最新版本的软件资源下载到用户端。
如果用户选择不下载最新版本的软件资源,而选择继续下载前述待下载的软件资源,则在步骤203之后,进一步包括:
根据前述建立的下载任务,将所述软件资源下载到用户端。
同理,如果在步骤203中,确定所述软件资源的软件版本即为最新版本,则不提示用户,直接将所述软件资源下载到用户端。
在本发明实施例中,还可以定期监控已下载的软件是否又出现了新的版本,因此,在用户下载完软件后,可以对软件的软件名称和软件版本,或文件标识进行记录,然后,每隔一个设定的时间段,根据记录的该软件的信息,通过查询服务器中保存的该软件的最新版本信息,判断所述软件是否存在更新的软件版本,如果存在,提示用户。
如图3所示,本发明实施例对已下载软件的更新提示的方法主要包括以下步骤:
步骤301:在用户下载软件资源后,保存所述软件资源的软件名称和软件版本,或文件标识。
步骤302:每隔一个预定的时间段,根据保存的所述软件资源的相关信息、软件版本信息、以及保存的文件标识和软件名称的对应关系,确定已下载的所述软件存在新版本时,提示用户。
为了获得软件的最新版本,需要对保存的软件版本信息、文件标识和软件名称对应关系进行维护,维护的方法包括以下几种:
定期搜索网络中的软件资源,例如通过网络爬虫(Spider)程序,如果搜索到某软件有了新的软件版本,更新所保存的软件版本信息、文件标识和软件名称的对应关系;
与软件厂商合作,在软件厂商发布某软件的新的软件版本时,更新所保存的软件版本信息、文件标识和软件名称的对应关系。
具体实施过程中为更新保存所述关系的数据库、文件或其它。
如果步骤301中保存的为所述软件资源的软件名称和软件版本,则步骤302进一步包括:
步骤302a:根据保存的软件名称与最新版本信息的对应关系,获取所述软件名称对应的最新版本信息。
步骤302b:根据保存的所述软件资源的版本信息和所述最新版本信息,确定已下载的所述软件资源的版本为非最新版本时,提示用户已下载的所述软件存在新的版本。
如果步骤301中保存的为所述软件资源的文件标识,则步骤302进一步包括:
步骤302a:根据保存的软件名称和文件标识的对应关系,确定所述文件标识对应的软件名称。
步骤302b:根据保存的软件版本信息,获得该软件名称所对应的最新版本信息,以及所述文件标识所对应的版本信息,确定已下载的所述软件资源的版本为非最新版本时,提示用户已下载的所述软件存在新的版本。
显然,在步骤301中,还可以保存所述软件资源的文件标识与软件名称、软件版本的其它任意的两两组合或三者,步骤302中都可以根据这些信息,判断所述软件资源是否存在更新的软件版本,具体实施过程与上述过程大致相似,在此不再一一赘述。
在步骤302中,如果确定已下载的软件存在新的软件版本,也可以将该新的软件版本的软件资源的下载地址提供给用户,在用户下载所述新的软件版本的软件资源后,再将该软件资源的软件名称和软件版本,或文件标识保存起来,作为下次检查该软件的软件版本是否为最新的版本的依据。
如图4所示,本发明实施例提供的软件版本更新提示的系统,包括:服务器40和用户端41。其中,
服务器40,用于保存软件名称和文件标识的对应关系,以及软件版本信息,并根据用户端提供的查询请求中设置的查询条件,在保存的所述对应关系和软件版本信息中进行查询,将查询结果返回给所述用户端;
用户端41,用于向所述服务器发送查询请求,并根据服务器返回的查询结果,判断待下载的软件资源的版本为非最新版本时,提示用户所述待下载的软件存在新的版本。
其中,所述服务器40包括:存储模块401和获取模块402。其中,
存储模块401,用于保存软件名称和文件标识的对应关系,以及软件版本信息;
获取模块402,用于根据所述用户端41提供的待下载的软件资源的文件标识,获取所述软件资源的软件名称、所述文件标识对应的版本信息以及所述软件名称对应最新版本信息。
所述用户端41包括:获取模块411和第一提示模块412。其中,
获取模块411,用于根据所述服务器40中保存的软件名称和文件标识的对应关系,获取待下载的软件资源的文件标识所对应的软件名称;
第一提示模块412,用于根据所述服务器40保存的软件版本信息,获得该软件名称所对应的最新版本信息,以及所述文件标识所对应的版本信息,如果确定所述待下载的软件资源的版本为非最新版本时,提示用户所述待下载的软件存在新的版本。
如图5所示,本发明实施例提供的软件版本更新提示的用户端,包括:获取模块50和第一提示模块51。其中:
获取模块50,用于根据保存的软件名称和文件标识的对应关系,获取待下载的软件资源的文件标识所对应的软件名称;
第一提示模块51,用于根据保存的软件版本信息,获得该软件名称所对应的最新版本信息,以及所述文件标识所对应的版本信息,如果确定所述待下载的软件资源的版本为非最新版本时,提示用户所述待下载的软件存在新的版本。
其中,所述文件标识可以为软件资源的名称、软件资源的统一资源定位符URL或文件内容签名。文件内容签名为通过预定算法对二进制文件的内容数据进行计算后获得,该预定算法为对不同的二进制文件的内容数据进行处理得到不同的处理结果的算法。
进一步地,该装置还包括:提供模块52。
提供模块52,用于在所述第一提示模块确定所述待下载的软件资源的版本为非最新版本之后,根据保存的软件名称与最新版本的软件资源的下载地址的对应关系,获取所述软件名称对应的最新版本的软件资源的下载地址,并将所述下载地址提供给所述用户。
进一步地,该装置还包括:下载模块53。
下载模块53,用于在第一提示模块51判断所述待下载的软件资源的版本为最新版本时,下载所述软件资源。
进一步,所述下载模块53还用于在提供模块52向用户提供最新版本的软件资源的下载地址后,用户选择下载最新版本的软件资源时,根据所述下载地址,下载所述最新的软件版本的软件资源。
为了对已经下载的软件的版本定期检查,需要保存已下载的软件资源的相关信息,然后定期根据保存的所述软件的信息,查找服务器中保存的版本信息,获取该软件的最新版本信息,然后判断已下载的所述软件是否又有了新的版本,因此,该装置进一步包括:保存模块54和第二提示模块55。其中,
保存模块54,与下载模块53连接,用于在下载模块53下载软件资源后,保存所述软件资源的软件名称及软件版本,或文件标识。
第二提示模块55,用于每隔一个设定的时间段,根据保存模块54保存的软件资源的信息,确定用户端已下载的软件存在新的版本时,提示用户已下载的所述软件存在新的版本。
进一步地,如果所述保存模块54保存所述软件资源的软件名称及版本信息,则所述第二提示模块55包括:第一获取子模块551和第二提示子模块552。其中,
第一获取子模块551,用于根据保存的软件名称与最新版本信息的对应关系,获取所述软件名称对应的最新版本信息;
第二提示子模块552,与第一获取子模块551连接,用于在根据保存的所述软件资源的版本信息和所述最新版本信息,确定已下载的所述软件资源的版本为非最新版本时,提示用户已下载的所述软件存在新的版本。
如果所述保存模块54保存所述软件资源的文件标识,则所述第二提示模块55包括:第一确定子模块553和第三提示子模块554。其中,
第一确定子模块553,用于根据保存的软件名称和文件标识的对应关系,确定所述文件标识对应的软件名称;
第三提示子模块554,用于根据保存的软件版本信息,获得该软件名称所对应的最新版本信息,以及所述文件标识所对应的版本信息,确定已下载的所述软件资源的版本为非最新版本时,提示用户已下载的所述软件存在新的版本。
在提示用户已下载的软件存在更新的软件版本时,也可以启动提供模块52,向用户提供该版本的软件资源的下载地址,在用户选择下载时,启动下载模块53,根据所述下载地址,建立新的下载任务,下载所述软件资源。
当用户把更新软件版本的软件资源下载到用户端后,再次启动保存模块54,记录所下载的软件资源的软件名称和软件版本,或文件标识,为下一个设定的时间段到来时,检查所述软件是否存在更新的软件版本提供依据。
同时,在下载结束后,可以运行所下载的软件文件资源,完成对软件的更新,简化更新流程。
如图6所示,本发明实施例提供的软件版本更新提示的服务器,包括:存储模块60和获取模块61。其中,
存储模块60,用于保存软件名称和文件标识的对应关系,以及软件版本信息;
获取模块61,用于根据接收到的软件资源的文件标识,获取所述软件资源的软件名称、所述文件标识对应的版本信息以及所述软件名称对应最新版本信息。
其中,所述文件标识可以为软件资源的名称、软件资源的统一资源定位符URL或文件内容签名。文件内容签名为通过预定算法对二进制文件的内容数据进行计算后获得,该预定算法为对不同的二进制文件的内容数据进行处理得到不同的处理结果的算法。
在具体实施过程中,存储模块60中保存的数据是通过收集软件资源的相关信息获得的,收集的方法包括但不限于以下几种:
定期搜索网络中的软件资源,例如通过网络爬虫spider来进行搜集;
与软件厂商合作,收集软件厂商发布的软件资源。
并且,还需要定期对所述存储模块60中保存的数据进行更新维护,以保证数据的实时性,更新维护也方法包括但不限于以下几种:
定期搜索网络中的软件资源,例如通过网络爬虫(Spider)程序,如果搜索到某软件有了新的软件版本,更新所保存的软件版本信息、文件标识和软件名称的对应关系;
与软件厂商合作,在软件厂商发布某软件的新的软件版本时,更新所保存的软件版本信息、文件标识和软件名称的对应关系。
在具体实施中,存储模块60保存的数据可以以数据库、文件或其它的方式存储。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。应该明白,这些具体实施中的变化对于本领域的技术人员来说是显而易见的,不脱离本发明的精神保护范围。
从上述实施例中可以看出:本发明实施例在用户建立下载软件资源的任务时,获取所述软件资源的文件标识,然后根据记录的软件名称、文件标识和软件版本之间的对应关系,确定当前待下载的软件资源是否为最新版本,如果不是,则提示用户待下载的软件还存在更新的版本,因此,用户不需要下载完整的软件资源就可以知道当前的软件版本是否最新,如果不是最新,用户可以选择下载目前最新的软件版本,节约了下载成本,提高了下载的效率。而且,本发明实施例还可以定期检查已下载的软件资源是否存在更新的版本,如果有,则提示用户下载新的版本,这种方法不需要用户运行软件程序或软件的更新程序,简化了操作流程,而且对于用户不经常使用的软件,也能保证用户及时地获取软件的最新版本。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。