一种用于以自含包提供文件数据,如一组用于更新计算机系统的文件的系统和方法,其中,通过增量压缩显著地减小了包的大小。构建机制检查要分发的文件,并生成包含文件和增量的自含包。为此目的,从各种基础文件大小和增量文件可能性构建有向图,并且最小生成树计算选择导致最小包的文件。可以向基础文件应用多个增量来合成多个文件,并且任一基础文件其自身可以是先前从另一基础文件和增量合成的。与包一起可任选地提供的客户提取机制如清单所指引地与包的内容一起工作,以从基础文件和所包含的增量合成目标文件。
【技术实现步骤摘要】
本专利技术一般涉及计算机系统,尤其涉及封装的计算机文件。
技术介绍
当软件销售商想要向其顾客提供一组一个或多个文件时,如新产品发布或相对较大的升级,可能将一个或多个文件合并为一个档案,形成相关内容的单个包,其中,包一般是作为一组来使用的数据文件的某一集合。通过添加可执行代码,档案经常被制成自提取档案,当执行该可执行代码时,将包的内容提取回到先前所合并的文件组。通常通过执行刚提取的文件之一,自提取代码也可以启动设置程序,从而将文件复制到顾客的计算机上的适当的位置中。完成设置程序之后,自提取代码删除提取的文件,然后终止。在大多数情况下,这允许整个产品特点或更新被检索作为单个文件对象检索,可被直接执行来访问或安装产品的内容。归档进程通常使用某种数据压缩来减小档案的大小,从而减小了分发和检索的成本,尤其是对大档案而言。一个这类压缩技术个别地压缩文件,向顾客提供所需要的任一个别文件的访问。这类包的大小一般是每一所包含的文件的经压缩大小的总和,加上提取代码的大小。在执行时,包将每一压缩的文件提取到一个临时位置,用户可以从该位置将每一文件复制到系统目录中的适当位置。对于不需要个别文件访问的包,如当自动运行设置过程来安装所提取的文件时,通过使用机箱(cabinet)(或CAB)文件可以进一步提高包压缩,在机箱文件中,在压缩之前本质上将一个文件加到另一个之后(连接的)。这使用基于LZ的编码器(由完成始发的工作的Lempel和Ziv命名的众所周知的字典编码器类型)提高了编码效率,因为采用LZ编码,输入数据流的压缩取决于输入数据流的以前的部分(称为历史),并且文件的连接增加了可用的历史数据量。注意,使用压缩文件,在提取过程中解压所压缩的数据,使在运行设置程序以在文件上操作之前文件处于其原始的形式。即使采用压缩技术,例如,相对于可以方便地通过网络传输的数据量而言,包仍较大。对于不具有宽带网络接入的顾客,包的大尺寸令其变得不实用,或至少下载这类包变得很不方便。一些顾客必须支付长距离或连接时间费用来下载数据,其它顾客可能具有能下载的数据量的定额和/或会话的连接时间的限制。其它顾客仅仅不因通过调制解调器下载大文件而感到烦扰。大文件下载对终止会话的网络连接问题还是易受攻击的。对于这类顾客,大的包的分发是一个问题。包的销售商也具有关于他们所提供的下载的大小的成本。例如,分发大文件需要相当大量的网络服务器设备,这是昂贵的。经常由销售商付钱来为一些顾客制作可用的CD-ROM。即使通过因特网分发也具有可变的成本,当发送大的包时该成本增加。一种减少需要发送的数据量的提供更新的改进的方法在美国专利号6,493,871中有描述。在该方法中,客户(顾客)计算机首先从设置服务器获取包括设置程序和安装该软件产品所需要的文件的列表的初始设置包。客户计算机上的设置程序然后确定安装所需要的文件的当前或较早的版本是否已在客户计算机上存在,并编译更新客户计算机所需要的文件的请求列表。客户计算机向下载服务器发送该请求列表,下载服务器维护更新文件和补丁的集合,并通过向客户发送更新所需要的一组合适的文件来响应该请求列表。一个或多个文件可能以补丁的形式,其中,补丁是从文件的较早版本和该文件的较新版本衍生的小数据文件。补丁可以应用到客户计算机上已存在的较早文件版本的副本来产生新版本,消除了下载完整新版本的需要。尽管这一数据压缩能够显著地减少用户必须下载的数据量,然而这一技术同样具有很多缺点。一个缺点是,这类二进制修补,也称为增量压缩,仅当销售商知道(或可以安全地假定)文件的哪一表示已在给定的客户计算机上可用时才起作用。这并不总是可能的,如采用CD-ROM或其它固定的分发模式时。注意,可以通过在每一不同版本的档案中包括多个文件来使单个一般档案更新销售商的顾客可能正在使用的文件的不同版本,其中一个版本可以应用到特定客户可能具有的文件的任一给定版本。然而,这还不是有效的,并且在有大量文件(如,类似于上百甚至上千)需要通过一个包来更新的情况下不实用或不易管理。由于必须处理大量文件的多个版本,通过增量压缩而达到的节省的大多数都被丢失。总之,常规压缩成本较高和/或对许多用户和销售商来说不适当,因为所得的压缩包的大小还是太大,无法容易地分发。同时,增量压缩迄今不能对需要或想要使用不需要对每一顾客在服务器进行动态定制的自含包(self-contained package)的顾客和/销售商较好地起作用。需要一种方法来提供高度有效的软件产品数据,而同时在包内是充分自含的。
技术实现思路
简言之,本专利技术提供了一种以自含包提供数据的系统和方法,其中通过增量压缩显著地减少了数据量。为此目的,以普通的(压缩)形式封装一组文件(可以是任一组相关数据),而第二组被表示为从第一或第二组的输出衍生的增量。由此,封装的包包含应用到同一包之内的或先前从同一包衍生出的其它文件的增量的集合。本专利技术的包内增量系统和方法包括两个初级机制,一个构建机制和一个客户机制。一般而言,构建机制检查要分发的一组文件(目标文件)来生成优化的自含包内增量包,而客户组件与包的内容一起从所包含的增量合成目标文件。销售商方的包内增量机制充分利用了包内文件之间的相似性来减小总的包大小。这对更新来说尤其能较好地起作用,因为更新通常具有一个以上的二进制文件,并且这些二进制文件由于具有一些共享的公用源代码或库而频繁地相互关联。更新也经常为不同的情形提供等效文件,如用于不同语言的各种等效文件。在一个实现中,排列自含增量压缩包,使大多数文件从一个基础文件和一个增量合成,单个基础文件能够具有向其应用的多个增量来合成多个文件,并且/或者其中,任一基础文件其自身可能是先前从另一基础文件和增量合成而来。由此,通过包内增量机制的包构建可能具有其自身可能以某一方式压缩的单个基础文件,加上能够变换该基础文件的副本来合成其它文件的任意数量的增量。增量也能够应用到先前合成输出的文件,允许对每一目标文件的最优源选择。如果可以对已在接收端可用的文件作出任一假定,可以将现有文件的副本或应用到副本的增量添加到目标文件组来重新创建完整的包,进一步减小了包的大小。在一个实现中,包内增量机制自动生成包内增量压缩包的增量。为此目的,给定需要通过包提供的目标文件的列表,则该机制探查合成每一文件的各种可能性,创建可能的增量,并检查所得的文件大小来确定哪一基础文件和增量将得到最小的包大小,而在客户端随后的提取时能完全重新创建目标文件。例如,执行提取(如以适当的顺序)的所需要的指令被保存在清单文件中,而最终化封装所需要的信息被保存在伪指令文件中,从而能够生成包括基础文件、增量和清单文件的机箱文件以及任一其它所需要的文件,如客户将运行来执行提取的可执行提取工具。在客户端,包内增量自提取程序框架包括可执行提取工具,它创建临时目录,与常规包一样扩充包的内容,但是在开始设置程序之前,依照本专利技术的一个方面执行额外的处理。为此目的,提取工具解释清单文件来应用增量以从基础文件或曾在包内的文件或从其本身先前被合成的基础文件合成(一些)目标文件。提取工具可以在开始设置程序之前丢弃增量文件,使设置程序仅看见解压和/或合成的目标文件的完整的组。可以容易地理解,将包内的一些文件作为(压缩的)基础文件,其它携本文档来自技高网...
【技术保护点】
在计算环境中的一种方法,其特征在于,它包括:接收与多个源文件相对应的信息;选择第一源文件作为基础文件;从所述第一源文件和第二源文件生成一增量;以及将所述基础文件和所述增量封装为自含包。
【技术特征摘要】
...
【专利技术属性】
技术研发人员:AV佩特罗夫,MH申德,MV斯里格,T麦克古里,
申请(专利权)人:微软公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。