软件升级的方法

文档序号:6572195阅读:503来源:国知局
专利名称:软件升级的方法
技术领域
本发明涉及一种软件升级的方法。更具体地说,本发明涉及这样一种软件升级的方法,该方法在软件的低版本基础上,以拷贝或下载少量数据将规模较大的软件包升级为高版本的软件包。
背景技术
常规的软件升级方法是采用将软件的低版本数据包中的所有文件,或一部分文件以整个文件替换的方式进行软件升级。在软件业发展初期还显不出这种方式所带来的不便,因为那个时期的软件大都是数据量较小的数据包,即使在每次升级时将新版本的整个数据包中的每个文件重新拷贝一遍,然后发送给需要进行软件升级的用户,软件生产商拷贝和用户升级所花费的时间也不会太多,浪费的存储介质也有限。
但随着软件也的不断发展,常规的软件升级方法的弊端越来越明显。一方面,软件包的功能越来越多,软件规模也就相应地扩大。对规模较大的软件来说,常规的软件升级方法在每次升级都要拷贝大量的数据,出现一两百兆数据的升级包并不少见。一两百兆的数据要从软件生产商那里发送到进行软件升级的用户手中,首先,软件生产商要花大量人力物力、使用大容量的存储介质拷贝软件,然后用户再花更多的时间将该软件升级数据包拷贝入计算机,以替代原有的低版本软件。这一过程浪费生产商许多宝贵时间、精力和金钱。但升级的内容实际上占该数据包的容量的一小部分,每个文件甚至可能只改动几个字节。
另一方面,有些诸如杀毒软件这样的软件包需要频繁升级,每一次升级可能数据量不是很大,但由于频度很高,事实上也造成对用户资源的浪费。如果是通过网络下载,也浪费了网络的带宽和服务器的资源,加重了厂商的负担。
因此有必要发展一种只拷贝或下载必要的最少内容就能将软件进行升级的方法,而不必为了升级软件,每次都拷贝或下载软件的全部或大多数内容。

发明内容
针对上述目前软件升级中存在的问题,本发明的目的是提供一种更合理更优化的软件升级的方法,该方法在软件的低版本基础上,以拷贝或下载少量数据升级规模较大的软件包。
为了实现本发明的目的,提供一种软件升级的方法,该方法包括增量升级包制作过程,用于找出低版本文件和高版本文件中数据内容的不匹配点,以产生不匹配块,并针对找到的匹配块和不匹配块产生相应的动作,其中所述动作是复制、替换、插入、删除之一;以及增量升级过程,用于执行由增量升级包制作过程产生的所述动作,以将低版本文件的内容替换成高版本文件的内容。
该方法通过寻找匹配块,产生一系列动作。通过4个简单的动作定义,只要拷贝必需的数据给用户即可升级软件。客户端通过执行增量升级过程升级软件。整个升级过程拷贝或下载的数据量明显比常规方法所需要拷贝和下载的数据量小,并且升级过程十分简单和高效,不但节省生产商和用户的宝贵时间和精力,而且节约存储介质资源和金钱。


本发明及其优越性将在参照相关附图的情况下,从以下详细说明中得到更好的理解,其中图1示出了本发明的匹配流程图。
具体实施例方式
瑞星杀毒软件增量升级程序是按照以上技术理论,在WIN32平台下的一个实施例,但本发明并不局限于WIN32平台。
为了以下描述的方便,现在定义几个术语。
低版本文件和高版本文件中数据内容完全相同部分的开始点,称为匹配点。
低版本文件和高版本文件中数据内容不相同部分的开始点,称为不匹配点。
从一个匹配点开始(包含)到最近的一个不匹配点结束(不包含)的一块数据区称为匹配块。
从一个不匹配点开始(包含)到最近的一个匹配点结束(不包含)的一块数据区称为不匹配块。
本发明的该优选实施例分两步来实现软件升级第一步骤就是所谓的增量升级包制作过程,第二步骤称为增量升级过程。现在来详细描述这两个步骤增量升级包制作过程考虑到给用户下载最少的数据,执行最快速的操作,本发明的主要工作是在制作升级包过程中完成,一般这个过程都是由厂商完成。
本实施例的匹配点数据宽度定义为32字节,符合目前主流Intel CPU的数据宽度。匹配限度为4K,符合Windows平台PE文件的节大小。
制作过程包括以下几个步骤1.文件比较,寻找不匹配块这是基本的步骤,首先寻找两个文件中的不匹配部分。匹配部分是我们可以不必重复传送给用户的数据,我们的整个文件比较过程其实也就是不断分析数据的重复与不重复问题。找到一个匹配块后将数据标注为拷贝。对于不匹配块,根据步骤2进行重新匹配。
识别匹配块并不是简单地说两个数据相等就可以,因为几个字节的相同在两个不匹配块中也经常会遇到。所以我们要忽略过于短的匹配数据,这个忽略的限度是十分重要同时也是很难把握的。一般来说,这个限度一般应该不小于数据文件的数据宽度,这常常是和操作系统相关的。另外,这个限度还要考虑增量升级包中的数据结构的大小,避免出现数据块过于细碎导致增量包膨胀。
2.重新匹配不匹配块,根据情况产生增量包两个不同版本的文件,如果直接对照比较,是有大量数据不相同的,也就是说有很多很大的不匹配块。这是由于程序或者数据修改时,经常插入和删除内容,导致同样的数据只是上下错位而已。如何在不匹配块中重新定位出匹配点是十分关键的,这直接关系到产生的增量包的大小。
匹配匹配点的算法基本上可以参考串的模式匹配算法,这种算法有几种,最简单的是两个文件交互以一字节为增量逐字节比较。这种方法简单,但会占用非常多的时间,比较两个差别较大的文件可能会花费数分钟。通过改进算法,减少回溯可以大幅度提高速度。
本实施例的匹配点匹配算法采用一种快速跳跃搜索算法,这种算法是本发明所独创的,适合在两个不匹配的数据块中快速跳过不相同的部分寻找匹配点。首先,我们在低版本文件不匹配块最前部取出当作匹配点的数据,然后在高版本文件的不匹配块中寻找匹配点的第一个字节。如果没有找到,放弃本匹配点,在原文件移动一个字节,从新匹配。如果找到第一个字节,从下一个字节开始寻找匹配点的第二个字节。没找到同以上过程,若完全找到匹配点的每一个字节,匹配成功,如果不等,从最后一个匹配字节回溯匹配点长度个字节数重新开始一轮匹配过程。
找到匹配点后,根据前后数据情况,将不匹配块定义为插入、删除或者替换。下面根据图1的匹配流程图描述如何将不匹配块定义为插入、删除或者替换。
图1是描述根据本发明的优选实施例的流程图。在步骤S1,进行预处理,以打开文件、建立映像,并且将匹配原点设置为0。
在步骤S2,判断是否存在下一个不匹配块。如果在步骤S2中判定存在下一个不相同的数据块,则该过程转移到步骤S3,在其中,判断是否在该不匹配中找到匹配点。
若在步骤S3判定在该不匹配块中找到匹配点,则该过程转移到步骤S4,在其中,将新旧版本文件的匹配点进行比较,如果高版本文件的匹配点大于旧文件的匹配点,则该过程转移到步骤S5,在其中将该不匹配块标记为删除块,并将过程转移到步骤S8。
如果在步骤S4中比较的结果是高版本文件的匹配点小于旧文件的匹配点,则该过程转移到步骤S6,在其中将该不匹配块标记为插入块,并将过程转移到步骤S8。
如果在步骤S4中比较的结果是高版本文件的匹配点等于低版本文件的匹配点,则该过程转移到步骤S7,在其中将该不匹配块标记为替换块,并将过程转移到步骤S8。
若在步骤S3判定在该不匹配块中找不到匹配点,则该过程转移到步骤S7,在其中将该不匹配块标记为替换块,并将过程转移到步骤S8。
在步骤S8,判断该不匹配块是否可以和上一不匹配块合并,如果拟定结果为是,则该过程转到步骤S9,在其中将该不匹配块与上一不匹配块合并,以产生一个更大的不匹配块。如果在步骤S8判定该不匹配块不可以和上一不匹配块合并,则该过程转移到步骤S10,将此次处理结果写入文件,并将该过程转移到步骤S2,以进行下一次处理过程。
如果在步骤S2判定不存在下一个不匹配块,则该过程转到S11,进行后处理,以关闭文件。然后结束该过程。
增量升级过程如前所述,本发明独特的构思之一在于用四种简单的动作描述了在客户端可能会做的所有动作,这四种动作是复制、替换、插入、删除。复制是将老版本的数据复制到新版本,该动作有一个参数,就是长度;替换是将老版本的数据替换成新的数据,新的数据长度与老版本中被替换的数据长度,该动作有两个参数,一是替换的长度,二是新的数据;插入是将新的数据插入到老版本的数据中,形成新版本的数据,该动作有两个参数,一是插入数据的长度,二是插入的数据;删除是将老版本的数据删除,因为在新版本中无此数据。使用上述四种动作,即可完成对单个文件的升级,过程如下(一)、打开待升级的老版本文件,验证老版本的内容是否为要升级的版本,如果不是,无法升级,退出升级过程;如果是,创建新版本文件。
(二)、取动作及其参数,对于不同的动作,分别做如下处理1、复制,参数为复制长度。从老版本文件中按复制长度读取数据,将读取的数据写入新文件。
2、替换,参数为替换长度、替换数据。将老版本文件的文件指针向后移动,移动距离为替换长度;将替换数据写入新版本文件,写入长度为替换长度。
3、插入,参数为插入长度、插入数据。将插入数据写入新版本文件,写入长度为插入长度。
4、删除,参数为删除长度。老版本文件的文件指针向后移动,移动距离为替换长度。
(三)、重复第二步,至到该文件的所有动作完成。
(四)、关闭老版本文件,关闭新版本文件,完成对一个文件的升级。
(五)、重复第一至四步,完成对所有待升级文件的升级过程。
这种升级方法带来的好处是1.产生高版本文件的过程中,不论低版本文件还是高版本文件,文件指针均没有任何回溯过程,使得文件读写量最小,不但速度很块,而且真正做到对于用户的配置情况没有任何要求。
2.四个简单的动作可以涵盖所有复杂的文件更新操作,使得目标升级过程与产生升级包的操作系统和算法完全隔离。厂商对算法的调整丝毫不会影响用户的升级。对于不同操作系统的用户,厂商也不必制作不同的升级包。
3.使得客户端工作极为简单,核心代码只需要几行就可以完成所有工作。客户端程序非常短小而稳定。
权利要求
1.一种软件升级方法,该方法包括增量升级包制作过程,用于找出低版本文件和高版本文件中数据内容的不匹配点,以产生不匹配块,并针对找到的匹配块和不匹配块产生相应的动作,其中所述动作是复制、替换、插入、删除之一;增量升级过程,用于执行由增量升级包制作过程产生的所述动作,以将低版本文件的内容替换成高版本文件的内容。
2.根据权利要求1的软件升级方法,其中所述动作当低版本文件和高版本文件匹配到数据长度和内容完全相同的两块数据区时,采用拷贝动作;当低版本文件和高版本文件不匹配到数据长度和内容完全相同的两块数据区时,采用替换动作;当低版本文件的数据块在高版本文件中找不到对应的数据块时,采用插入动作;以及当高版本文件的数据块在低版本文件中找不到对应的数据块时,采用删除动作。
3.根据权利要求1或2的软件升级方法,其中所述匹配点的数据宽度是固定的32字节。
4.根据权利要求1或2的软件升级方法,其中在所述不匹配块中重新寻找匹配点的最大距离为4K。
5.根据权利要求1或2的软件升级方法,其中所述匹配点的匹配算法为快速跳跃搜索算法。
全文摘要
提供一种软件升级方法,该方法包括增量升级包制作过程,用于找出低版本文件和高版本文件中数据内容的不匹配点,以产生不匹配块,并针对找到的匹配块和不匹配块产生相应的动作,其中所述动作是复制、替换、插入、删除之一;增量升级过程,用于执行由增量升级包制作过程产生的所述动作,以将低版本文件的内容替换成高版本文件的内容。因此,整个升级过程拷贝或下载的数据量明显比常规方法所需要拷贝和下载的数据量小,并且升级过程十分简单和高效,不但节省生产商和用户的宝贵时间和精力,而且节约存储介质资源和金钱。
文档编号G06F17/00GK1409239SQ0114215
公开日2003年4月9日 申请日期2001年9月14日 优先权日2001年9月14日
发明者马杰 申请人:北京瑞星科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1