CN1777867B - 使用增量压缩打补丁更新文件的系统和方法 - Google Patents
使用增量压缩打补丁更新文件的系统和方法 Download PDFInfo
- Publication number
- CN1777867B CN1777867B CN2004800013256A CN200480001325A CN1777867B CN 1777867 B CN1777867 B CN 1777867B CN 2004800013256 A CN2004800013256 A CN 2004800013256A CN 200480001325 A CN200480001325 A CN 200480001325A CN 1777867 B CN1777867 B CN 1777867B
- Authority
- CN
- China
- Prior art keywords
- delta patch
- patch
- file
- client computes
- renewal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims abstract description 107
- 238000005056 compaction Methods 0.000 title 1
- 238000009434 installation Methods 0.000 claims description 90
- 238000013475 authorization Methods 0.000 claims description 88
- 238000003860 storage Methods 0.000 claims description 31
- 230000005540 biological transmission Effects 0.000 claims description 26
- 238000004891 communication Methods 0.000 claims description 9
- 235000014510 cooky Nutrition 0.000 description 74
- 230000004044 response Effects 0.000 description 31
- 230000004807 localization Effects 0.000 description 27
- 230000008569 process Effects 0.000 description 27
- 238000004364 calculation method Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 16
- 238000012360 testing method Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 238000000605 extraction Methods 0.000 description 10
- 239000004615 ingredient Substances 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000011900 installation process Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了用于更新计算装置上的一个或多个文件的系统和方法。客户机计算装置获取包括标识具有已安装文件的特定版本的特定增量补丁的索引的更新信息。在选择将实现哪一个可适用更新以后,客户机计算装置上的更新代理执行清查,以标识文件要更新的哪一版本已安装在机器上。更新代理选择对应的增量补丁,并向更新服务发送请求。
Description
发明领域
本发明涉及软件和计算机网络,尤其涉及管理和传递软件更新的系统和方法。
发明背景
市场上最常见的软件产品要经受连续的修订过程,以修补或升级特征和/或功能。软件产品或组件的每一次修订可能需要添加新的文件和/或用更加新版本的文件替换现有的文件。一旦销售商隔离了软件产品问题并创建了该问题的解决方案,他可能希望将该修补放入更新中,并令更新对顾客广泛地可用。软件销售商具有尽可能快和无故障地向顾客分发软件更新的商业动机。
因特网为顾客提供了一种获得软件产品的最近更新的重要渠道。因特网使用率的蓬勃发展造成了顾客对软件产品和更新在线提供用于下载的常见期望。促进因特网的使用来分发更新也是软件销售商所感兴趣的,因为它减少了他们的成本,并允许顾客在修补可用于下载后立即可获得所确定问题的修补。因特网上的销售商站点可被设计成令发现和查找应用程序的更新文件是非常简单的。文件下载的技术方面大多数已从用户的观点中消失,并且它现在通常由操作系统来处理。
在常规的方法中,软件销售商将软件更新构造为“包”用于下载。包通常是自提取的可执行文件,它具有设置程序,并且产品的更新文件的每一个被嵌入并被压缩以使包更小。包的大小通常是每一改变的文件的压缩后大小的总和,加上提取代码本身的大小。在执行时,包将所包含的每一文件提取到一临时位置,然后开始设置程序以将每一文件安装到系统目录中一正确的位置。以压缩形式发货的文件在它们被安装时被解压。同一位置中名字相同的任一现有文件将简单地被替换文件所覆盖。
即使因特网令软件更新的广泛和快速分发成为可能,然而网络传输的有限带宽导致了问题。常见软件应用程序的绝对大小导致了更新的下载大小变得不合理的大。通常,用于产品的各种问题的多个修补将被组合成一个更新。如果销售商以常规的基础更新软件产品,则更新包的下载大小将继续增长,这是因为销售商无法在假设用户已经具有来自较早更新的那些文件的假设上省略这些文件。由于更新包组合了若干的完整文件,即使文件被压缩,它也可能相当大。有时,即使在最快的调制解调器连接上,下载的带宽效率也被降低。
常规下载过程的耗时方面当然是不合需要的。在某些情况下,顾客在下载这些文件的过程中支付了长距离或连接时间的费用。连接时间的任何减少将减少这些顾客的直接金钱成本。销售商通常也具有关于他们所提供的下载大小的可辨识成本,因此减小尺寸也可给予他们直接的金钱收益。减小下载的尺寸将增加他们的可用网络带宽,从而允许他们用现有的网络服务器设备来服务更多的顾客。
下载大的更新所花费的长时间也令下载过程变得更易受各种网络连接问题的攻击。对于为什么因特网话路可能会被过早地断开连接有多个原因,包括电话线噪声、呼叫等待信号以及无意的命令。某些因特网服务供应商实施了连接时间限制,限制了用户可以在单个话路中在线的时间量。如果当网络连接被切断时用户正在下载大文件,则他或她可能必须从头开始。最常见的操作系统和文件传输协议不允许文件传输的再继续,因此任何中间的进度将会丢失,并且传输必须重新开始。失败的几率如此之大,以致于许多用户发现在线获取更新几乎是不可能的。如果更新包的尺寸太大,则用户可能永远也无法完整地下载它。
减小软件更新的尺寸并提高带宽效率的一种尝试涉及增量补丁,或二进制补丁的使用。本领域的技术人员可以理解,增量补丁对应于当由计算装置执行时修改现有文件的专用软件代码。由于增量补丁包括专用软件代码,因此对文件的每一唯一版本需要唯一的增量补丁。当应用于软件更新时,软件更新服务可发送较小尺寸的更新增量补丁,而非发送完整的更新文件。已更新的增量补丁然后用于将现有文件修改成已更新的文件。
尽管更新增量补丁可潜在地减少更新文件所需的数据量,然而现有的增量打补丁方法在存在大量的文件版本的情况下管理可适用的增量文件的选择时是不够的。由于对文件的每一版本需要唯一的增量补丁,因此典型的软件更新系统通常会要求上百(如果不是上千)个对应于文件的每一唯一版本的唯一增量补丁。在一种方法中,支持增量打补丁的某些更新服务将所有可能的增量补丁发送到客户机计算装置。然而,这一方法通常在可能更新增量补丁的数量增加时也增加了实现软件更新所需的数据量。因此,潜在可适用的增量补丁的数量可迅速增长为与完整的更新文件相同的大小。在另一种方法中,网络化更新软件服务扫描客户机机器以选择对每一客户机机器可应用哪一增量补丁。尽管这减少了所发送的增量补丁信息量,然而它需要软件更新服务上的附加逻辑来扫描客户机机器并选择可适用的增量补丁。附加逻辑的使用增加了必须由服务提供的系统资源。此外,该方法通常阻止如通常由传统的web服务器所实现的网络高速缓存的使用。
除上述缺点之外,现有的系统无法传送某些类型的软件更新,如硬件驱动程序。如本领域中所已知的,专用软件更新,如应用于硬件驱动程序的软件更新,难以在大规模分发的基础上提供给用户,因为大多数专用软件更新仅在具有特殊硬件的客户计算机上起作用。例如,在大多数情况下,如果客户计算机获得了不兼容的硬件驱动程序升级,则该驱动程序升级的安装会导致致命的错误,或甚至会阻止计算机运行。
如可以从上述内容容易地理解的,需要一种具有服务器和多个客户机之间的软件更新的改进通信的系统和方法。另外,对具有允许更新服务在传送专用更新时以特定类型的客户机为目标的改进机制的软件更新系统和方法有需求。
发明概述
提供了一种更新计算装置上一个或多个文件的系统和方法。客户机计算装置获取更新信息,包括标识具有已安装文件的特定版本的特定增量补丁的索引。在选择将实现哪一可适用更新之后,客户机计算装置上的更新代理执行清查(inventory)来识别在机器上安装了文件要更新的哪一版本。更新代理选择对应的增量补丁,并将请求发送给更新服务。
依照本发明的一个方面,提供了一种更新客户机计算装置上的数据的方法。该方法可以在包括与软件更新服务通信的至少一个客户机计算装置的计算机系统中实现。依照该方法,计算装置获取用于更新安装在客户机计算装置上的一个或多个文件的一个或多个可用软件更新的选择。计算装置然后获取标识多个增量补丁的索引。每一增量补丁对应于已安装文件的至少一个版本。计算装置获取安装在客户机计算装置上的一个或多个文件的详细目录。计算装置选择一个或多个可适用的增量补丁来实现所选择的软件更新。一个或多个可适用补丁的选择对应于将标识多个增量补丁的索引映射到安装在客户机计算装置上的一个或多个文件的详细目录。计算装置然后请求一个或多个所选择的增量补丁。
依照本发明的另一方面,提供了一种更新客户机计算装置上的数据的方法。该方法可以在包括与软件更新服务通信的至少一个客户机计算装置的计算机系统中实现。依照本发明,计算装置获取用于更新安装在客户机计算装置上的一个或多个文件的一个或多个可用软件更新的选择,以及标识用于更新已安装文件的至少一个版本的多个可用增量补丁的包。计算装置获取安装在客户机计算装置上的一个或多个文件的详细目录,并选择一个或多个可适用的增量补丁来实现所选择的软件更新。一个或多个可适用补丁的选择对应于将标识多个可用增量补丁的包映射到安装在客户机计算装置上的一个或多个文件的详细目录。计算装置然后发送对一个或多个所选择增量补丁的请求。
依照本发明的又一方面,提供了一种更新客户机计算装置上的数据的方法。该方法可以在包括与软件更新服务通信的至少一个客户机计算装置的计算机系统中实现。依照该方法,计算装置获取用于更新安装在客户机计算装置上的一个或多个文件的一个或多个可用软件更新的选择,以及标识多个增量补丁的索引,其中每一增量补丁对应于已安装文件的至少一个版本。计算装置然后获取安装在客户机计算装置上的一个或多个文件的详细目录,然后选择一个或多个可适用的增量补丁来实现所选择的软件更新。一个或多个可适用补丁的选择对应于将标识多个增量补丁的索引映射到安装在客户机计算装置上的一个或多个文件的详细目录。计算装置请求一个或多个所选择的增量补丁并获取所请求的增量补丁。计算装置将增量补丁与对应的已安装文件合并,以生成更新文件并安装该更新文件。
附图的简要描述
当结合附图阅读以下详细描述,可以更好地理解并更容易地明白本发明的上述方面以及许多附加的优点,附图中:
图1是依照本发明的软件更新系统的框图,包括客户机计算机以及提供更新软件的更新服务;
图2是图1的软件更新系统的框图,它依照本发明示出了向更新服务认证客户机计算装置;
图3是图1的软件更新系统的框图,它依照本发明示出了客户机计算装置和更新服务之间的可用更新的同步;
图4是图1的软件更新系统的框图,它依照本发明示出了软件更新信息从更新服务到客户机计算装置的发送;
图5是图1的软件更新系统的框图,它依照本发明示出了客户机计算装置对更新信息的处理和选择;
图6是图1的软件更新系统的框图,它依照本发明示出了客户机计算装置对增量补丁的合并和对更新文件的安装;
图7是依照本发明的软件更新例程的流程图,它示出了由客户机计算装置和更新服务实现的用于识别可用于安装在客户机计算装置上的软件更新;
图8是依照本发明提供对储存在更新服务上的更新的选择性访问的授权例程的协议图;
图9所示是依照本发明的授权例程的一组示例软件更新的框图;
图10是依照本发明将选择的一组软件更新从软件更新服务传递到客户机计算装置的同步例程的协议图;
图11所示是依照本发明用于显示对各个客户机计算装置可用的软件更新列表的图形用户界面的示例性部分的框图;
图12A和12B所示是依照本发明由客户机计算装置110实现以检索和安装请求的软件的软件更新处理子例程1200;以及
图13所示是依照本发明由客户机计算装置实现的用于更新基线安装组件的子例程的流程图。
具体实施方式
一般而言,本发明针对的是管理软件更新的系统和方法。更具体地,本发明针对的是便于软件更新的选择和实现,同时最小化选择和实现软件更新所需的带宽和处理资源的系统和方法。依照本发明,软件更新可对应于用于特定软件应用程序或操作系统的更新。此外,软件更新可包括软件驱动程序或对固件的更新,如系统BIOS。依照本发明的一个方面,提供了一种处理软件更新的系统和组件体系结构。依照本发明的另一方面,提供了一种便于向更新服务授权和同步客户机机器的更新协议和接口。依照本发明的又一方面,提供了一种适用增量补丁更新安装组件和各种已安装文件的方法。然而,本领域的技术人员可以理解,本申请中也可提供本发明的其它方面。此外,相关领域的技术人员可以理解,每一所标识的方面可被个别或作为公共的发明性方面的一部分来考虑。
图1的软件更新系统100所示是依照本发明的软件更新系统100的框图。一般而言,软件更新系统100可包括一个或多个客户机计算装置110、更新服务120以及外部更新提供者130。一般而言,更新服务120储存并管理传递到并安装在客户机计算装置110上的软件更新的分发。软件更新可由更新服务120或任意数量的外部更新提供者130来提供。
客户机计算装置110、更新服务120和外部更新提供者130通过网络101电子地通信。网络可以是局域网(LAN)或更大的网络,如广域网(WAN)或因特网。通过使用一般已知的软件,软件更新系统100可被配置成在客户机计算装置110和更新服务120的服务器121、122、123和124之间交换文档、命令和其它已知类型的信息。本领域和其他领域的技术人员可以理解,图1所示的软件更新系统100是用于实现本发明的一个合适的系统的简化示例,本发明并非局限于此示例。
如后文更详细地描述的,更新服务120的一个实施例包括若干服务器。如图1所示,更新服务120包括更新服务器121,用于管理更新服务120的全过程并协调更新服务120的服务器121、122、123和124的处理。授权服务器122生成客户机请求的授权cookie,这些授权cookie进而用于生成允许客户机计算机访问更新服务120提供的更新的服务器cookie。元数据服务器123提供关于更新服务120提供的更新的一般信息。元数据服务器123允许本发明的系统识别用于特定类型的客户机计算机或特定的客户机计算机组的特定更新。下载服务器124提供了用于传送与由更新服务120提供的软件更新相关联的数据文件的一个或多个软件组件。
外部更新提供者130可包括分发软件更新的一个或多个服务器。外部更新提供者130可与提供软件、软件更新或要分发到客户机计算机组的其他数据的实体相关联。例如,外部更新服务器130可以与期望使用更新服务120来分发一个或多个软件应用程序的更新的第三方软件开发者相关联。在另一示例中,外部更新提供者130可以与软件更新系统120相关联。
客户机计算装置110可以是储存并执行软件应用程序114的任何计算装置。客户机计算装置110可以从多个不同的计算机产品的任一个形成,包括但不限于,个人计算机(PC)、个人数字助理(PDA)、移动电话、双向寻呼机等等。如本领域或其他领域的普通技术人员所理解的,客户机计算装置110的体系结构可以采用任一合适的形式。例如,客户机计算装置110可包括用于提供与网络101的通信的网络接口。网络接口可以被配置成用于任何有线或无线网络连接,并用于任一合适的通信协议,如TCP/IP协议。另外客户机计算装置110可包括处理单元、显示器和存储器单元。存储器单元可储存操作客户机计算装置110所必须的程序代码,如操作系统116。另外,存储器单元储存用于控制和执行本发明的过程的更新管理组件112。
软件更新系统100储存软件程序,当被执行时,它们实现本发明。当被执行时,软件更新系统100储存、管理并选择性地传递软件更新。如下文更完整地描述的,除其它益处之外,本发明提供了用于定义和选择有资格接收软件更新的客户机计算装置的目标组的机制。本发明也提供了用于下载与软件更新相关联的数据文件的改进的机制。
为说明本发明的目的,提供了本发明的工作示例的详细描述。在描述该工作示例时,参考软件更新,它指的是软件应用程序的特定升级,例如,将媒体播放器版本6.0升级到媒体播放器版本7.0。如本领域的普通技术人员所理解的,这一软件更新可包括与软件更新相关联的多个数据文件的传递和安装。由此,为说明本发明的目的,在软件更新和包含软件更新的个别数据文件之间作出区分。
现在参考图2-6,描述更新客户机计算装置110上的一个或多个文件的软件更新系统100的组件之间的说明性交互。参考图2,软件更新服务通过由一个或多个外部更新提供者130发送软件更新信息来启动。如上所述,外部更新提供者130可以与软件更新系统100相关联。或者,软件更新信息可以由第三方外部更新提供者130发送。在本发明的一个说明性实施例中,软件更新信息可包括用于更新文件的软件代码、用于替换文件的软件代码、用于确定软件更新的可适用性的各种规则、和/或描述软件更新的显示信息。软件更新信息的发送可在任一时刻完成,并且不必要与其它所示的软件更新组件交互同时发生。
在从外部更新提供者130接收了软件更新信息之后,更新服务120生成一段或多段数据,以便于发送更新信息。数据可包括对应于用于更新文件的不同版本的软件增量补丁集的补丁存储文件。数据也可包括对应于将特定的文件版本映射到补丁存储文件中找到的对应增量的索引的补丁存储清单。数据还可包括对应于更新代理将用于请求和安装特定软件更新数据的信息的自提取文件,如后文更详细地描述的。相关领域的技术人员可以理解,补丁存储文件、补丁存储清单和自提取文件的生成可以在任一时刻完成,并不必要与其它所示的组件交互同时发生。
为启动对客户机的软件更新信息发送,客户机计算装置110启动对更新服务120的认证请求。在本发明的一个说明性实施例中,认证请求对应于客户机计算装置110和更新服务120之间的更新协议交互,这将在后文更详细描述。在完成了认证之后,更新服务120将认证cookie发送到客户机计算装置120。现在参考图3,已认证的客户机计算装置120然后启动与更新服务器120的可用更新的同步。在本发明的一个说明性实施例中,同步请求也对应于客户机计算装置110和更新服务120之间的更新协议交互,这将在后文更详细地描述。在完成了同步之后,客户机计算装置110接收所有可适用的软件更新的信息和描述更新的信息。然而,在本发明的一个说明性实施例中,没有下载任何启动更新的软件代码。
继续参考图3,在更新过程期间的某一时刻,接收到要安装的更新的选择。在本发明的一个说明性实施例中,可向用户呈现在同步期间接收到的软件更新信息,并要求选择一个适当的更新。或者,客户机计算装置110可以配备自动选择所有可适用的软件更新的方式。此外,客户机计算装置110也可具有允许它自动选择可用软件更新的一个子集的某些规则。再者,用户可通过诸如经由互联网网页与更新服务120通信来启动更新的选择。
现在参考图4,如果尚不存在更新代理,则更新管理组件112例示客户机计算装置110上的更新代理118。更新代理118然后请求诸如自提取文件等软件更新信息包的发送。更新代理118接收自提取文件并执行对安装程序的任何更新,如后文更详细地描述的。此外,更新代理118可向更新服务120请求任何丢失或被破坏的信息。
现在参考图5,一旦更新代理118接收到了软件更新信息包,更新代理118执行安装在客户机计算装置110上的文件的清查。基于清查和软件更新信息包的比较,更新代理118确定需要哪一增量补丁或其它更新信息来完成所选择的更新。更新代理118然后发送对特定增量更新的请求。在本发明的一个实施例中,对软件更新的请求可对应于通过直接网络连接发送的直接请求,被称为手动更新。在本发明的另一实施例中,对软件更新的请求可以是不需要明显的用户行动而发送的后台请求。这一实施例被称为自动更新。
在本发明的一个说明性实施例中,如果软件更新对应于增量补丁,则更新代理118向更新服务120发送标识由包存储清单标识的特定增量补丁的请求。或者,在增量补丁不可用或者若干增量补丁失败的情况下,更新代理118可启动一后退过程。后退过程可包括对来自包存储文件的整个更新文件的完整副本的发送的请求。后退过程也可包括对自主式包内的整个更新文件的完整副本的发送的请求。
在本发明的一个说明性实施例中,更新服务120的下载服务器124可直接处理来自更新代理118的软件更新请求。或者,请求也可由任意数量的附加外部下载服务器来处理,如从更新服务120接收所请求的更新增量补丁的传统web服务器。例如,企业可使用内部服务器来更新客户机机器。另外,请求可由外部下载服务器来处理,其中,在处理先前的请求时高速缓存某些或所有更新增量补丁。另外,在此实施例中,下载可以被分发到能够服务超文本传输协议(“HTTP”)数据请求的若干另外的下载服务器。
参考图6,一旦接收到了软件更新信息,更新代理118将增量补丁与已安装文件合并,以生成更新文件。另外,更新代理118可确认合并程序是否成功地更新了适当的文件。如上所述,如果增量补丁不能被确认,则更新代理118可再次请求增量补丁或在若干次失败之后请求整个更新文件。一旦更新代理118获取了已被确认和更新文件,该文件被安装在客户机计算装置110上。
图7依照本发明的软件更新处理例程700的流程图,它示出了客户机计算装置110和软件更新服务120之间的交互。在框702,软件更新服务120授予对客户机计算机110的访问权限。在本发明的一个说明性实施例中,授予对客户机计算机的访问权限的过程可包括生成允许访问与特定的计算机组相关联的软件更新的服务器签发的cookie。授权过程的更详细解释将参考图8来描述。
在框704,客户机计算机110和软件更新服务120同步更新信息。在本发明的一个说明性实施例中,软件更新服务120向客户机计算装置110发送描述特定软件更新的元数据。元数据包含描述可用软件更新的信息,以允许用户选择一个或多个更新来安装。同步过程的更详细描述将在下文参考图9和10来描述。在框706,客户机计算装置110获取对要下载的可适用更新的选择。在本发明的一个说明性实施例中,对可适用更新的选择可对应于适用多个唯一用户界面以便于用户选择。用户界面的选择将在下文参考图11来更详细描述。
在框708,客户机计算装置110处理对可适用软件更新的用户选择,并与软件更新服务120接口以请求特定的更新信息。在本发明的一个说明性实施例中,客户机计算装置110选择并请求一个或多个可适用更新增量补丁。客户机计算装置110上的更新代理118然后可处理所请求的数据以实现所选择的软件更新。在框710,例程700终止。
参考图8,现在描述授予对客户机计算装置110的访问权限并对应于框702(图7)的协议图800。在本发明的一个说明性实施例中,软件更新服务120使用可扩充定目标机制,以控制客户机计算机110对更新和其它软件的访问。软件更新服务120结合了将特定软件更新与客户机计算装置110的一个或多个目标组相关联的机制。例如,软件更新服务120可限制特定的硬件驱动程序更新对具有特定硬件设备的特定品牌的客户机计算装置110的访问。在这一示例中,软件更新服务120可定义具有特定品牌名和特定硬件设备的客户机计算装置110的目标组,并限制特定软件下载向该目标组的发送。
在本发明的一个说明性实施例中,可扩充定目标机制可通过使用定义客户机计算装置到一个或多个目标组的成员资格的软件组件(“授权插件”)来促进。授权插件在客户机计算装置110上的存在定义了客户机计算装置是否属于授权插件的特定目标组。例如,目标组可包括具有特定软件应用程序的有效产品标识(“PID”)号的所有计算机。在这一示例中,如下文参考图8更详细地描述的,授权插件826可安装在客户机中,以从客户机计算装置的存储器模块中读取PID,并将所获取的PID传递到对应的PID服务器插件829。对应的PID插件此处也被称为PID确认程序829,使用了一种或多种方法来确定接收到的PID是否有效。一旦确定了储存在客户机计算装置110上的PID有效,则服务器生成指示客户机计算装置110是具有有效PID的目标组的成员的服务器cookie。在另一示例中,目标组可包括被指定为β测试(测试第二版)计算机的客户机计算装置。
在本发明的一个说明性实施例中,软件更新服务120的授权服务器122包含多个服务器授权插件,它们定义了授权服务器将识别的一组客户机计算装置目标组。每一服务器授权插件包含与储存在客户机计算装置110上的对应客户机授权插件传递数据的组件。以类似的方式,每一客户机计算装置110包括标识客户机所属的目标组的一个或多个授权插件。在本发明的一个说明性实施例中,客户机授权插件可在安装或升级软件应用程序期间,如安装或升级操作系统期间,被安装在每一客户机计算装置中。另外,服务器授权插件可以由期望控制对软件更新的访问的管理员动态地安装或移除。储存在客户机计算装置110和授权服务器122上的授权插件可以是实际的软件插件,或者授权插件可以被硬编码(hard code)成动态链接库。
如图8所示,授权服务器122包含三个示例服务器授权插件:(1)第一服务器授权插件828,它定义了包括所有计算机的目标组(后文称为“所有计算机目标组”);(2)第二服务器授权插件829,它定义了包括具有有效PID的计算机的目标组(后文称为“PID目标组”);以及(3)第三服务器授权插件830,它定义了包括β测试计算机的目标组(后文称为“β测试目标组”)。同样如图8所示,客户机计算装置110包含两个客户机授权插件:(1)第一客户机授权插件825,它指示客户机计算装置110是“所有计算机目标组”的成员;以及(2)第二客户机授权插件826,它指示客户机装置110是“PID目标组”的成员。在此示例中,客户机计算装置110不包含指示它是“β测试目标组”的成员的授权插件。如本领域的普通技术人员所理解的,每一客户机授权插件825和826可被配置成执行客户机计算装置110上的一个或多个功能,以协助确认过程。例如,第二客户机授权插件826可被配置成检查客户机计算装置110的存储器,以验证或获得已安装软件应用程序的PID。
如图8所示,授权子例程702在客户机计算装置110将配置请求803传递到授权服务器122时开始。在本发明的一个说明性实施例中,配置请求803是从被配置成获取描述储存在授权服务器122上的授权插件的信息的任一合适的软件组件形成的。如本领域的技术人员所理解的,配置请求803可使用一种被称为“GetConfig(获取配置)”的已知方法。响应于接收配置请求803,授权服务器122传递配置响应804,它包括标识储存在授权服务器122上的所有授权插件的信息。在一个实施例中,配置响应804包括串数组,它标识并描述了储存在授权服务器122上的所有授权插件。在本示例中,配置响应804包括标识第一服务器授权插件828、第二服务器授权插件829以及第三服务器授权插件830的信息。
在框805,客户机计算装置110响应于接收配置响应804生成一个或多个授权cookie。在框805的处理中,客户机计算装置110对每一对匹配的客户机和服务器授权插件生成授权cookie。由此,在本示例中,第一客户机授权插件825生成与“所有计算机目标组”相关联的第一授权cookie,因为第一客户机授权插件825和第一服务器授权插件828都与“所有计算机目标组”相关联。另外,第二客户机授权插件826生成与“PID目标组”相关联的第二授权cookie,因为第二客户机授权插件826和第二服务器授权插件829都与“PID目标组”相关联。未生成第三授权cookie,因为客户机计算装置110不具有指示它是“β测试目标组”的成员的授权插件。
如本领域的技术人员也可以理解的,框805的过程的一个实现可包括对本领域中称为“GetAuthCookie(获取授权cookie)”的一般已知的软件方法的使用。也可以理解,每一授权cookie的生成可涉及额外的处理。例如,第二客户机授权插件826可以被配置成检查储存在客户机系统注册表中的信息,以检索PID并在授权cookie中包括该PID。在其它示例中,框805的过程可包括与其它计算机或装置通信的过程。例如,客户机授权插件可与诸如声卡、扫描仪、视频卡等设备通信,以获取设备的构造和模型。在其它非限制示例中,客户机授权插件可与诸如指纹读取器等安全设备通信,以获取描述用户的信息。
一般而言,客户机授权插件可从客户机计算装置110的任何组件或通信上耦合至客户机计算装置110的任何其它计算装置读取配置信息。在其它示例中,客户机授权插件可被配置成使用一个或多个公钥或私钥应用编程接口(API),以收集并加密来自客户机的信息,这些信息将由对应的服务器插件来确认。在这些示例中,PID确认器插件826使用私钥API来加密客户机的PID,以将经加密的PID传递到服务器以供解密和确认。在其它实施例中,其它客户机授权插件可使用诸如指纹读取器或语音打印等生物测定措施,以构造传递到服务器供确认的授权cookie。在又一示例中,客户机授权插件可调用web服务或任一其它服务以将授权凭证或任一其它类型的数据传递到授权服务器122。
在本发明的一个说明性实施例中,每一授权cookie包括标识相关联的目标组的串。例如,串可指示特定的授权cookie与“PID目标组”相关联。每一授权cookie也包括用于在客户机和服务器之间传递数据的数据段。例如,与“PID目标组”相关联的授权cookie可具有包含实际PID的数据段。如本领域的普通技术人员所理解的,数据段可包含以诸如字节数组等任一格式储存的任何类型的数据。例如,如果客户机和服务器上的插件需要公钥和私钥的传递,则这类数据可在一个或多个授权cookie的数据段中加密。
一旦客户机计算装置110对每一对对应的客户机和服务器授权插件生成了授权cookie,客户机计算装置将所生成的授权cookie传递到授权服务器122。如图8所示,客户机计算装置110在cookie请求806中传递授权cookie。cookie请求806包括用于传递框805的处理中生成的授权cookie的数组的任一合适的格式。这一部分授权方法702的一种实现可包括对本领域中被称为“GetCookie(获取cookie)”的一般已知的软件方法的使用。
在一个实施例中,cookie请求806也包括储存在客户机计算装置110的存储器中的其它授权服务器cookie。如可以从以下描述中更容易地理解的,客户机计算装置110的存储器可储存在授权例程700的先前的执行中创建的旧授权服务器cookie。通过在cookie请求806中提供储存的授权服务器cookie,客户机计算装置110能够维护其在授权子例程702的先前的执行中被授予的访问特权。在本示例中,由于没有授权服务器cookie储存在客户机中,因此cookie请求806包括与“所有计算机目标组”相关联的第一授权cookie以及与“PID目标组”相关联的第二授权cookie。
下一步,如框807中所示,响应于接收cookie请求806,授权服务器122生成服务器cookie。在一个实施例中,对于每一接收到的授权cookie,向适当的服务器授权插件作出调用以生成服务器cookie数据。每一服务器授权插件生成的服务器cookie数据包括接收到的授权cookie中标识的每一目标组的标识符。在本示例中,由于cookie请求806包括与“所有计算机目标组”相关联的第一授权cookie,以及与“PID目标组”相关联的第二授权cookie,因此授权服务器122生成包括这些相应目标组的标识符的服务器cookie数据。在授权服务器122上,如果在cookie请求806中接收到旧服务器cookie,则将服务器cookie数据与旧服务器cookie组合,以生成新服务器cookie。在一个实施例中,新服务器cookie通过使用诸如三重DES等公众可用的加密方法来加密。
在本发明的一个说明性实施例中,服务器cookie可包括标识一个或多个相关联的目标组的经加密的信息。另外,服务器coookie可包括过期数据,它以明文格式和加密格式两者储存。以明文格式储存的过期数据由客户机计算装置110用于监视服务器cookie的过期。以加密格式储存的过期数据由软件更新服务120用于确定客户机计算装置110是否被授权来接收与特定目标组相关联的更新。在一个实施例中,服务器cookie的过期数据应用于服务器cookie中标识的所有目标组。或者,或除应用于整个服务器cookie的过期时间之外,服务器cookie可包括多个过期数据,其每一个可应用于个别的目标组。如本领域的普通技术人员所理解的,每一服务器cookie可包括附加数据。例如,服务器cookie可被配置成储存客户机状态信息,如授权子例程702的最后执行的时间标记。
一旦被生成,授权服务器cookie 809从授权服务器122传递到客户机计算装置110。下一步,如框811所示,服务器cookie然后被储存在客户机计算装置110的存储器中。当客户机计算装置110确定服务器cookie的至少一个组件过期时,客户机计算装置可重新执行授权方法702来获取新的服务器cookie。如上所述,在授权方法702的每一次随后的执行中,客户机计算装置110可在cookie请求806中将其储存的服务器cookie传递到授权服务器122。在一个实施例中,客户机不必发送请求803,除非服务器通知客户机,服务器配置已改变,即,添加了新的授权插件。
依照本发明的另一方面,软件更新服务120可提供用于在元数据服务器123和客户机计算装置110之间同步更新信息的同步子例程。通过使用唯一的软件更新层次,同步子例程可有效地标识应用于特定客户机计算装置的特定更新。另外,通过使用授权子例程702中生成的服务器cookie,同步子例程可选择性地授予对与特定目标组相关联的更新的访问权限。
依照本发明的一个说明性实施例,每一软件更新包括三个部分1)指令部分;(2)本地化的数据部分;以及(3)数据部分。如本领域的普通技术人员所理解的,每一更新可具有上述部分的一个或多个。例如,更新可包含指令部分、本地化的数据部分和数据流部分。在另一示例中,更新可仅包含用于测试客户机计算装置的一个或多个条件的指令部分。软件更新的各个部分在下文更详细地描述。
一般而言,指令部分包含两个子部分:(1)定义要由客户机计算装置110测试的一个或多个条件的适用性规则;以及(2)标识个别更新的正确安装所需要的一个或多个更新的一组先决条件。如后文所描述的,适用性规则可定义与计算机相关的多个条件,这些条件的每一个可通过使用任何逻辑操作符与其它条件相关联。例如,指令部分可包括确定计算机是否安装了Windows的特定版本的适用性规则。同样如下所述,该组先决条件可标识要求先前已被安装的一个或多个更新。例如,如后文参考图9更详细地描述的,个别的更新可包含列出个别更新的正确安装所需要的其它更新的先决条件。在其它示例中,同样如图9所示,该组先决条件可包括对逻辑操作符的使用以定义更复杂的先决条件规则。
指令部分也包含指示是否由依赖于特定更新的其它更新的代码,如布尔标志。为说明的目的,如果没有依赖于特定更新的其它更新,则该更新被认为是LEAF更新。用于指示更新是否为LEAF的布尔标志是在当添加或移除相关更新时由元数据服务器123动态地更新的。
每一更新的本地化数据部分包括描述更新的通用信息。例如,本地化数据部分可包括描述更新的特征和益处的信息。本地化数据部分也可包括更新的安装过程的文本描述。另外,本地化数据部分可包括与更新有关的任何其它数据或信息。例如,本地化数据可指示更新是高优先级更新。在另一示例中,本地化数据可提供特殊的安装消息,如指示更新不能与其它软件更新一起安装的消息。本地化信息可以是允许向用户显示其包含的信息的格式。
每一更新的数据部分包括更新的一个或多个二进制数据流。在一个实施例中,每一更新的数据部分可以与一个或多个数据文件相关联,如可执行文件、文档、链接库等等。如下文更详细地描述的,每一更新可以与数据文件的组合相关联,其每一个促进了客户机使用的软件的实际升级、安装或修改。例如,更新的安装可以通过使用包括完成所选择的更新所需的所有信息的单个CAB文件来促进。或者,更新的安装可通过使用用于更新储存在客户机计算装置上的一个或多个文件的多个个别更新来促进。
在本发明的一个说明性实施例中,软件更新可以按允许软件更新的受控分发的分层结构来排列。一般而言,更新的层次定义了更新之间的关系,并特别地指示了哪些更新依赖于其它更新。为说明的目的,图9中提供并示出了一组示例性更新。如图所示,示例更新900的层次包括基础更新组901、第二更新组902以及第三更新组903。一般而言,基础更新集901中的每一更新不具有需要其它更新的安装的先决条件。然而,第六更新921包含需要第一更新911、第二更新912、第三更新913的安装的先决条件。第七更新922包含需要第四更新914的安装的先决条件。第八更新931包含需要第六更新921和第五更新915的先决条件。因此,第八更新931也需要第一更新911、第二更新912和第三更新913的安装。为说明本发明的目的,给定示例更新集900的所有更新都与“所有计算机目标组”和“PID目标组”相关联。
如图9所示,并且如后文更详细描述的,每一更新包含指定更新安装的条件的适用性规则。例如,第一更新911需要操作系统的英语版本的安装。第二更新912需要WindowsXP版本SP1的安装。在另一示例中,第六更新921需要被称为XP PATCH1的软件补丁的安装。因此,如果未满足适用性规则,则客户机计算装置110将不安装更新。
图9也示出了指示是否有依赖于特定更新的其它更新的指令部分段。该段被称为LEAF,它可以是指示软件更新是一系列相关更新的最后一个更新的布尔值形式。为说明本发明的目的,如果没有其它更新列出特定更新为先决条件,则该特定更新是LEAF更新。如图9所示,第七更新922和第八更新931是仅有的两个LEAF更新。
图10示出了依照本发明形成的同步子例程704(图7)的协议图。一般而言,同步子例程704选择性地在客户机计算装置110和诸如元数据服务器123等服务器之间传递某些更新的指令部分,以标识可应用于客户机计算装置110的更新。如图10所示,为启动更新,客户机计算装置110首先处理已安装的更新,并将同步请求1051传递到元数据服务器123,请求对客户机可用的一个或多个更新。响应于接收同步请求1051,元数据服务器123向客户机计算装置110返回多个更新。如可以从以下描述中更容易地理解的,客户机计算装置110在传递同步请求1051之前处理本地储存的数据。
客户机计算装置110处理每一接收到的更新的指令部分,以确定是否能满足适用性规则中定义的条件。如果满足了个别的更新中定义的条件,为说明同步子例程1050的目的,个别更新是“已安装”的,并且所安装的更新被保存在客户机更新高速缓存的第一组成部分中。另一方面,如果未满足个别更新中定义的条件,则该个别更新被认为“失败”,并且失败的更新被保存在客户机更新高速缓存的第二组成部分中。在同步子例程1050的这一描述中,如果更新被安装,则可假定满足了先决条件和适用性规则的条件。为描述该子例程的目的,更新的安装不必要意味着与更新相关联的数据文件实际上被安装到客户机计算装置110中。
在一个实施例中,客户机更新高速缓存的两个组成部分可用于归类所接收到的更新。第一组成部分用于储存已安装的、非LEAF更新;第二组成部分用于储存客户机接收的所有其它更新,即未安装的更新。更新高速缓存的第二组成部分也可包括所有LEAF更新的存储。如下文更详细地描述的,储存在更新高速缓存中的更新可以被传递到元数据服务器123并由其处理,以标识可用于在客户机计算装置110上的安装的其它相关更新。
现在回头参考图10,将描述同步请求的细节,被示出为项1051、1055和1060。如本领域的普通技术人员所理解的,同步请求可由多个不同装置、进程、应用程序、用户启动的命令之一来启动,以请求更新。同步请求可由请求更新列表的用户、由客户机代理启动的自动更新、以及向元数据服务器123或更新服务120请求信息的任何其它软件组件启动。在一个实施例中,同步请求包括授权服务器cookie,如从授权例程702生成的授权服务器cookie。服务器cookie的使用允许服务器确定客户机是否为一个或多个目标组的成员。
每一同步请求也可包括储存在客户机更新高速缓存中的每一更新的标识符。更具体地,如果一个或多个更新储存在更新高速缓存中,同步请求包括具有用于已安装、非LEAF更新的标识符的第一部分;以及具有用于诸如LEAF更新、已失败更新以及未安装的其它更新等所有其它更新的标识符的第二部分。更新标识符可以是任何格式,包括但不限于,整数数组。或者,如果没有更新储存在客户机更新高速缓存中,则同步请求不配备更新标识符。当同步请求设备配备更新标识符时,同步请求提供客户机计算装置110没有任何高速缓存的更新的指示。
如图10所示,第一同步请求1051从客户机计算装置110传递到元数据服务器123。在本示例中,如果这是方法的第一次执行,则客户机的更新高速缓存将不包含任何更新。由此,第一同步请求1051不包含用于高速缓存的更新的标识符。响应于接收同步请求,如框1052所示,元数据服务器123确定同步请求是否包含至少一个更新标识符。如果确定同步请求不包含更新标识符,则元数据服务器1123通过选择用于传递到客户机计算装置110第一级更新来响应。如上所述,第一级更新可包括没有标识其它更新的先决条件的任何更新。
或者,如果确定同步请求包含至少一个更新标识符,则元数据服务器123检查服务器的已储存更新的先决条件,以选择用于传送到客户机的额外更新。在一个实施例中,元数据服务器123选择已实现先决条件的更新。在检查先决条件时,服务器使用同步请求的第一部分的更新,它包括安装在客户机上的非LEAF更新的标识符。
除选择已实现先决条件的更新之外,服务器也使用同步请求的第二部分中标识的更新,以过滤所选择的更新。更具体地,同步请求的第二部分中标识的未安装更新、LEAF更新和已失败更新用于过滤一个或多个所选择的更新。本发明的这一特征允许本发明的系统和方法避免储存在元数据服务器123上的更新的多次发送。
返回到本示例,由于第一同步请求1051不包括更新标识符,则元数据服务器123选择更新901的基础级,以传递到客户机计算装置110。参考图9所示的示例更新集,基础集更新901包括标号为911、912、913、914和915的更新。
在框1052的处理中,元数据服务器123也检查包含在同步请求1051中的授权服务器cookie,以标识与客户机计算装置110相关联的目标组。元数据服务器123也检查在框1052的过程中选择的更新的目标组。框1052的处理然后过滤出不与接收到的授权服务器cookie中标识的目标组相关联的所有所选择的更新。在本示例中,由于所有所选择的更新911、912、913、914和915与PID和所有计算机目标组相关联,因此所有所选择的更新都被发送到客户机计算装置110。
元数据服务器123然后在同步响应1053中将所选择的更新传递到客户机计算装置110。一般而言,每一同步响应包括服务器120发送的每一更新的指令部分。由此,在本示例中,第一同步响应1053包括标号为911、912、913、914和915的更新的指令部分。在一个实施例中,每一同步响应不包括每一更新的本地化数据部分或数据部分。
下一步,如框1054中所示,客户机计算装置110处理每一接收到的更新的指令部分,以确定是否可满足适用性规则中定义的条件。再次参考图9,客户机计算装置110处理接收到的更新911-915的指令部分。为说明本发明的目的,在本示例中假定客户机计算装置110的操作系统是Windows版本XP SP1的英语安装。也假定客户机计算装置110是Dell PC,并运行32位的X86处理器。由此,在处理示例更新集的指令部分时,客户机计算装置110可确定将满足第一更新911中定义的条件,因为计算机包含英语OS。将满足第二更新912中定义的条件,因为操作系统是Windows版本XP SP1。将满足第三更新913中定义的条件,因为客户机计算装置运行X96处理器。将满足第五更新915中定义的条件,因为客户机计算装置110是Dell PC。结果,第一更新911、第二更新912、第三更新913和第五更新915都被保存在客户机更新高速缓存的第一组成部分中。将不满足第四更新914中定义的条件,因为客户机计算装置110不运行64位的X86处理器。由此,第四更新914被认为是已失败的更新,并保存在客户机更新高速缓存的第二组成部分中。
返回到图10,在框1054的处理中,客户机计算装置110也确定是否需要后续的同步请求。在一个实施例中,如果至少一个所接收到的更新指示它不是LEAF更新,则确定需要后续的同步请求。在本发明的示例中,确定需要随后的同步请求,因为所有接收到的更新都不是LEAF更新。由此,客户机计算装置110将后续的同步请求1055传递到元数据服务器123。
如上所述,同步请求包括储存在客户机更新高速缓存中的每一更新的标识符。由此,在本示例中,后续的同步请求1055包括指示客户机上安装了第一更新911、第二更新922、第三更新913和第五更新915的第一数据部分。另外,后续的同步请求1055包括指示客户机上未成功地安装第四更新911的第二数据部分。
响应于接收后续的同步请求1055,如上所述,元数据服务器123确定后续的同步请求1055是否包含至少一个更新标识符。如果确定后续的同步请求包含至少一个更新标识符,元数据服务器123检查所有储存的更新的先决条件,以选择用于传送到客户机的额外更新。
再次参考本示例,在框1056的处理中,元数据服务器123将选择第六更新921,因为满足了它的先决条件。更具体地,如图9所示,第六更新921被选中用于传递到客户机计算装置110,因为其需要第一更新911、第二更新912和第三更新913的安装的先决条件已被实现。第七更新922和第八更新931将不被选中用于传递到客户机,因为它们的先决条件未被实现。更具体地,同步请求1055不包含第四更新914的标识符,它是第七更新922的先决条件。另外,同步请求855不包含第六更新921的标识符,它是第八更新931的先决条件。
返回到图10,同步子例程1050通过在后续响应1057中将所选择的更新从元数据服务器123传递到客户机计算装置110来继续。再次参考本示例,后续响应1057将包括与第六更新921有关的信息,它在后续响应1057中被传递到客户机110。
在接收到后续响应1057之后,客户机计算装置110处理后续响应1057的指令部分。类似于框1054的过程,客户机计算装置110处理每一接收到的更新的指令部分,以确定是否满足适用性规则中定义的条件。在本示例中,如果假设在客户机计算装置中已安装了XP PATCH1,则第六更新921被认为是已安装的,并且更新被写入客户机计算装置110的更新高速缓存中。由于第六更新921不是LEAF更新,因此客户机计算装置110发送包括储存在客户机更新高速缓存的第一和第二组成部分中的所有更新的另一同步请求1060。同步请求1060也包括授权服务器cookie。
在本示例中,通过使用上述元数据服务器123的处理,同步请求1060在框1061被处理,其中,服务器选择第八更新931。第八更新931被选中,因为同步请求1060指示第五和第六更新915和921已安装在客户机计算装置110上。假设第八更新931与授权服务器cookie中标识的相同目标组相关联,则在另一响应1062中将第八更新931的指令部分传递到客户机计算装置110。然后在框1063以类似于框1054和1059的处理的方式处理第八更新931。由于响应1062所有所接收的更新都是LEAF更新,因此不将后续请求发送回元数据服务器123。
在客户机计算装置110处,在确定了所有接收到的更新都是LEAF更新之后,或者如果在响应1062中没有接收到任何更新,则同步子例程1050将驱动程序同步请求1064从客户机计算装置110传递到元数据服务器123。如本领域的普通技术人员所理解的,驱动程序同步请求1064可包括描述安装在客户机计算装置110上的所有硬件的信息以及描述已安装软件的信息。类似于先前的软件同步请求(1051、1055和1060),驱动程序同步请求1064可将已安装的更新传递到服务器。另外,当前在客户机上高速缓存的所有驱动程序更新(如果有的话)被传递到服务器。
响应于接收驱动程序同步请求1064,元数据服务器123通过发送应用于客户机计算装置110的尚未高速缓存到客户机上的所有驱动程序更新来响应。如果满足其先决条件和条件,则在响应1065中将驱动程序更新发送到客户机计算装置110。传递驱动程序更新的响应1065较佳地传递每一更新的指令部分。驱动程序更新然后被写入客户机计算装置的更新高速缓存中。
在接收包含驱动程序更新的响应1065之后,同步子例程1050发送对所接收的软件和硬件更新的每一个的本地化数据的请求1066。如上所述,每一更新的本地化数据部分包括描述更新的通用信息。例如,本地化数据部分可包括描述更新的特征和益处的信息。本地化数据部分也可包括更新的安装过程的文本描述。另外,本地化数据部分可包括关于更新的任何其它数据或信息。
由此,在接收了对接收到的软件更新和硬件更新的每一个的本地化数据的请求1066之后,元数据服务器123通过发送客户机更新高速缓存中保存的所有接收到的软件更新和硬件更新的所有本地化数据来响应。一旦接收到,本地化数据可由软件应用程序来处理,以确定哪些更新需要被安装。或者,接收到的本地化数据可显示给用户,以向用户通知对客户机计算装置110可用的所有更新。在一个实施例中,接收到的本地化数据可在网页上显示。在本示例中,第六和第八更新921和931的本地化数据可以由客户机接收。如果本地化数据被储存在基础更新911、912、913和915中,则那些更新的本地化数据也由客户机接收。
图11示出了网页1100的一个示例,它显示了与对客户机可用的更新相关联的本地化数据的示例。为说明的目的,网页1100包括更新的第一详细描述1105和另一更新的第二详细描述1106。如图所示,每一更新分别与用于接收更新的用户选择的选择机制1103和1104相关联。同样如图所示,网页1100配备允许用户控制更新的选择到诸如元数据服务器123或下载服务器124等服务器的传递的控制按钮1101。
在本发明的一个方面中,客户机执行多个处理以增强网页1100的显示。例如,客户机计算装置110检查每一更新的本地化数据以确定特定更新是否是高优先级。这一特征可通过在本地化数据或特定更新的其它组件中查找指示特定更新是高优先级或紧急更新的文本来促进。如果客户机计算装置110检测到高优先级更新或紧急更新,则客户机在网页1100的可视部分中,如页面的顶部显示高优先级更新。另外,客户机可生成可视指示符,如专用的文本消息1120,指示该更新是高优先级更新。
客户机计算装置110也可检查每一更新的本地化数据,以确定特定更新是否需要排他安装,即,更新具有不能与另一更新的安装文件同时安装的安装文件。这一特征可通过在本地化数据或特定更新的其它组件中查找指示特定更新需要排他安装的文本来促进。如果客户机计算装置110检测到这一更新,则客户机显示一可视指示符,例如图11所示的文本消息1122,它具有需要排他安装的更新的描述。
返回到图7,软件更新例程700在框708继续,其中客户机计算装置110接收更新的选择。如上所述,响应于控制按钮1101的激励,对一个或多个更新的选择可由元数据服务器123或下载服务器124获得。一旦接收到了一个或多个更新的选择,软件更新例程700在框708继续,处理所选择的软件更新。
依照本发明的又一方面,软件更新服务120可提供一种在软件更新服务和客户机计算装置110之间选择和发送信息的方法。图12A和12B所示是依照本发明的软件更新处理子例程1200,它由客户机计算装置110实现,用于检索和安装所请求的软件。如上所述,一旦生成或接收到了对软件更新的选择,就可以实现软件更新处理子例程1200。参考图12A,在框1202,更新管理组件112例示更新代理118。在本发明的一个说明性实施例中,更新代理118是一种专用软件组件,用于确定需要什么软件更新信息来完成请求的软件更新、生成更新代理的安装组件的所需要的版本、通过将现有文件与增量补丁合并生成更新文件、和/或启动更新文件的安装。在更新代理118已被例示的情况下,可省略框1202。
在框1204,更新代理118从更新服务120获取软件更新信息。在本发明的一个说明性实施例中,更新服务120发送的软件更新信息是包的形式,如自提取文件,它包括可由更新代理使用的各种数据。在一个方面,包可包括对应于特定软件更新的所有文件的列表。另外,包可包括补丁存储清单的至少一部分的副本,该清单将要更新的文件的特定版本映射到储存在更新服务120上的补丁存储文件中的对应软件更新增量补丁。包也可包括用于要更新的每一文件的安装信息,它可包括完成安装所需要的安装组件的版本的标识。此外,包也可包括用于更新代理118的安装组件,或更新已储存在客户机计算装置110上的安装组件的版本的增量补丁。再者,包可包括允许更新代理确定软件更新是否成功的验证信息。例如,验证信息可包括更新文件的参考散列值用于比较。更新代理118也可验证包的内容。
在判别块1206,执行测试以确定更新代理118是否需要更新安装组件的版本以实现更新。相关领域的技术人员将认识到,在自提取文件中发送安装组件的完整副本可增加更新服务120对每一软件更新发送的数据量。因此,在本发明的一个说明性实施例中,可将安装组件的基线版本储存在客户机计算装置中,并通过安装组件增量补丁对当前软件更新的需求来特别更新。因此,自提取文件中的安装信息指令更新代理118任何所包括的安全组件更新是否需要与客户机计算装置110上的安装组件的基线版本合并。如果需要更新,则在框1208,更新代理118更新基线安装组件,如后文参考图13更详细讨论的。
一旦更新代理更新了安装组件,或者安装组件不需要更新,则在框1210,更新代理118执行安装在计算装置110上的文件和文件的特定版本的清查。在本发明的一个说明性实施例中,更新代理118可向客户机计算装置110文件系统查询在包内被标识为对应于所选择的更新的所有文件。或者,如果更新代理118最近已执行了清查,则可使用详细目录的高速缓存的版本。在框1212,更新代理118标识完成所请求的更新所需要什么软件更新信息。在本发明的一个说明性实施例中,包存储清单包括已安装文件的版本到所需要的增量补丁的映射。因此,如果增量打补丁可用,则更新代理118将使用该映射来标识特定的增量补丁及其在包存储文件中的偏移位置。或者,如果增量补丁不可用或不能实现,则更新代理118可标识整个文件用于下载。
现在参考图12B,在框1214,更新数据代理发送对已标识软件更新信息的请求。在本发明的一个说明性实施例中,更新代理118可通过指示特定范围的补丁,将对特定增量补丁的请求从补丁存储文件发送到更新服务120的下载服务器124。如上所述,补丁存储文件包括大量的可适用增量补丁,其中每一增量补丁由其在补丁存储文件中的位置来标识。由于补丁存储文件在某些实现中可能相当大,因此更新代理118可使用仅请求来自补丁存储文件中的特定位置的数据的请求,如补丁存储清单中所指示的。在本发明的一个替换实施例中,更新代理118可请求更新文件的整个副本和/或补丁存储文件的完整副本。
在本发明的一个替换实施例中,可能不排他地与更新服务120相关联的另一下载服务器可处理更新代理118请求。在这一实施例中,请求补丁存储文件可完整或部分地发送到网络上的任意数量的附加下载服务器。附加下载服务器可以是用于更新专用网络上的客户机的专用网络的一部分。此外,附加下载服务器可以是公共网络的一部分。在专用网络环境中,下载服务器可获取补丁存储文件的完整副本,用于处理客户机请求。或者,下载服务器也可在处理来自其它客户机的先前的数据请求时高速缓存补丁存储文件的各部分,并使用高速缓存数据来满足下载。因此,附加下载服务器可减少对更新服务120的下载服务器124的通信张力。
在框1216,更新代理118接收所请求的更新信息。在本发明的一个说明性实施例中,所请求的更新信息可以用两种方法发送。在被称为手动更新的第一种方法中,更新请求连同对直接HTTP数据传送响应的请求一起发送到更新服务120。在该方法中,更新服务120可使用可用于向更新代理118发送所请求数据的整个带宽的全部。在被称为自动更新的第二种方法中,更新请求连同对间接HTTP数据传送响应的请求一起发送到更新服务120。在这一响应中,更新服务120发送所请求的数据作为后台进程。后台进程可以用使用最小量可用带宽的方式来实现。此外,后台进程可在下载过程期间中断,并可在下一可用时刻重新开始。通过后台进程发送所请求数据的系统和方法的描述在2000年2月16日提交的,名为“System andMethod for Transferring Data Over a Network(通过网络传输数据的系统和方法)”的共同转让并共同提交的待决美国专利申请号09/505,735中有描述,该申请通过引用结合于此。相关领域的技术人员可以理解,前台和后台数据传输不必要反映所选择的软件更新的优先级,但是相反反映了如何分配带宽来获取更新信息。
一旦从更新服务接收到了所请求的信息,在框1218,更新代理118将增量补丁与对应的已安装文件合并。在本发明的一个说明性实施例中,更新代理118可高速缓存已安装文件的原始版本,以确保所选择的文件不会在下载和合并过程中改变。此外,高速缓存的已安装文件的原始版本可用于卸载所选择的更新。
在判别框1220,执行测试以确定更新文件是否有效。在本发明的一个说明性实施例中,更新代理118可使用散列算法,以将从更新信息包中获得并对应于有效文件更新的参考散列值与来自当前修改的文件的散列相比较。如果散列不匹配,则当前修改的文件不是有效的。相关领域的技术人员可以理解,可使用多种替换确认算法的任一种。如果更新文件不是有效的,则子例程1200返回到框1214,其中更新代理可再次请求更新信息。或者,如果更新代理118已若干次不成功地尝试了生成更新文件,则更新的代理可实现若干后退过程的任一种。在本发明的一个实施例中,更新代理118可向更新服务120请求储存在补丁存储文件中,并从补丁存储清单标识的更新文件的已完成副本。在本发明的另一实施例中,更新代理118可向更新服务120请求自主式文件中的更新文件的副本。在本发明的又一实施例中,另一子例程1200可以失败。
一旦所选择的文件有效,则在判别块1222,执行测试以确定是否需要任何额外的下载。在本发明的一个说明性实施例中,子例程1200进入一迭代循环,它在完成了先前选择的下载之后连续地核查额外的下载。如果文件的状态在下载期间改变,则更新代理118可继续请求对新状态改变的额外下载。如果需要额外的下载,则在框1224,更新代理118执行另一清查,并标识所有可适用的增量补丁。子例程1200然后返回到框1214。
一旦完成了所有的所请求的更新下载,在判别框1226,执行测试以确定客户机机器的状态是否改变。在本发明的一个说明性实施例中,在更新文件的更新信息和实际安装的下载和合并之间会经过某些时间。因此,在安装更新文件之前,更新代理确定客户机计算装置状态是否改变。如果状态已改变,则文件更新可能不是有效的,并且更新在框1228失败。或者,如果没有发生状态改变,则更新代理118在框1230安装更新文件,并且子例程1200返回到框1232。
现在参考图13,描述了由客户机计算装置110实现,用于更新对应于框1208(图12A)的基线安装组件的子例程1300。在判别框1302,执行测试以确定从更新服务120发送到更新代理118的自提取文件中是否包括了新的基线安装组件。在本发明的一个说明性实施例中,如果更新基线安装程序所需的增量补丁在大小上可与已更新安装组件的发送比较,则将发送新的基线安装组件。如果包括了已更新安装组件,则在框1304,更新代理安装已更新的基线安装组件作为新的安装组件。另外,新的已更新安装组件可以保存在客户机计算装置110的存储器中,以担当用于附加更新的基线安装程序。在框1306,子例程返回。
如果在自提取文件中未包括已更新的基线安装组件,则在框1308,更新代理118从自提取文件获取基线安装组件增量补丁。在本发明的一个说明性实施例中,基线安装组件增量补丁对应于可与基线安装组件合并来生成已更新基线安装组件的软件代码。因此,在框1310,更新代理将基线安装组件增量补丁与基线安装组件合并。在框1312,更新代理118然后将已更新基线安装组件制定为当前安装组件。在本发明的一个说明性实施例中,已更新安装组件在安装完成之后将不被保存。依照该实施例,更新代理118仅维护客户机计算装置110的存储器中有限数量的基线安装组件。因此,更新代理在每一次安装时生成临时的已更新安装组件。由于每一客户机计算装置110只能对应于有限数量的基线安装组件,因此仅需要更新服务120对每一客户机计算装置发送单个基线安装组件增量补丁。在框1314,子例程1300返回。
尽管示出并描述了本发明的较佳实施例,然而可以理解,可在不脱离本发明的精神和范围的情况下作出对其作出各种改变。例如,尽管此处描述的说明性示例应用于软件更新,然而本发明的范围包括除关于软件更新的信息的分发和传递之外的其它使用。因此,除非在本揭示中明确地排除了特定主题,可以理解,本发明的范围应用于不同于软件更新或除此之外的任何类型数据的分发和传递。
Claims (37)
1.在包括与软件更新服务通信的至少一个客户机计算装置的计算机系统中,一种更新客户机计算装置上的数据的方法,其特征在于,所述方法包括:
获取对用于更新所述客户机计算装置上安装的一个或多个文件的一个或多个可用软件更新的选择;
获取标识多个增量补丁的索引,其中,每一增量补丁对应于已安装文件的至少一个版本;
获取所述客户机计算装置上安装的一个或多个文件的详细目录;
选择一个或多个可适用的增量补丁来实现所选择的软件更新,其中,选择所述一个或多个可适用的补丁对应于将标识所述多个增量补丁的索引映射到所述客户机计算装置上安装的一个或多个文件的详细目录;以及
请求所述一个或多个所选择的增量补丁,
其中,在传送专用更新时以特定类型的客户机为目标。
2.如权利要求1所述的方法,其特征在于,获取对一个或多个可用软件更新的选择包括获取对一个或多个可用软件更新的手动选择。
3.如权利要求1所述的方法,其特征在于,获取对一个或多个可用软件更新的选择包括获取对一个或多个可用软件更新的自动选择。
4.如权利要求1所述的方法,其特征在于,所述软件更新服务包括具有对可用增量补丁的选择的文件,并且其中,所述索引对应于对可用增量补丁的每一选择的特定存储位置的标识。
5.如权利要求4所述的方法,其特征在于,请求所述一个或多个所选择的增量补丁包括通过标识所请求的增量补丁的特定存储位置请求来自所述文件的特定增量补丁。
6.如权利要求4所述的方法,其特征在于,请求所述一个或多个所选择的增量补丁包括通过标识每一所请求的增量补丁的特定存储位置请求来自所述文件的一组特定增量补丁。
7.如权利要求1所述的方法,其特征在于,还包括:
获取所请求的增量补丁;
将所述增量补丁与对应的已安装文件合并,以生成一更新文件;以及
安装所述更新文件。
8.如权利要求7所述的方法,其特征在于,还包括:
在安装所述更新文件之前确认所述更新文件;以及
如果所述更新文件不被确认,则恢复所述更新文件的前一版本。
9.如权利要求1所述的方法,其特征在于,请求所述一个或多个所选择的增量补丁包括发送对所选择的增量补丁的前台请求。
10.如权利要求1所述的方法,其特征在于,请求所述一个或多个所选择的增量补丁包括发送对所选择的增量补丁的后台请求。
11.如权利要求1所述的方法,其特征在于,获取所述客户机计算装置上安装的一个或多个文件的详细目录包括获取所述客户机计算装置上安装的一个或多个文件的高速缓存的详细目录。
12.一种计算机系统,包括:
用于获取对用于更新所述客户机计算装置上安装的一个或多个文件的一个或多个可用软件更新的选择的装置;
用于获取标识多个增量补丁的索引的装置,其中,每一增量补丁对应于已安装文件的至少一个版本;
用于获取所述客户机计算装置上安装的一个或多个文件的详细目录的装置;
用于选择一个或多个可适用的增量补丁来实现所选择的软件更新的装置,其中,选择所述一个或多个可适用的补丁对应于将标识所述多个增量补丁的索引映射到所述客户机计算装置上安装的一个或多个文件的详细目录;以及
用于请求所述一个或多个所选择的增量补丁的装置,
其中,在传送专用更新时以特定类型的客户机为目标。
13.在包括与软件更新服务通信的至少一个客户机计算装置的计算机系统中,一种用于更新所述客户机计算装置上的数据的方法,其特征在于,所述方法包括:
获取对用于更新所述客户机计算装置上安装的一个或多个文件的一个或多个可用软件更新的选择;
获取标识用于更新已安装文件的至少一个版本的多个可用增量补丁的包;
获取所述客户机计算装置上安装的一个或多个文件的详细目录;
选择一个或多个可适用的增量补丁以实现所选择的软件更新,其中,选择所述一个或多个可适用的补丁对应于将标识多个可用增量补丁的包映射到所述客户机计算装置上安装的一个或多个文件的详细目录;以及
发送对一个或多个所选择增量补丁的请求,
其中,在传送专用更新时以特定类型的客户机为目标。
14.如权利要求13所述的方法,其特征在于,获取对一个或多个可用软件更新的选择包括获取对一个或多个可用软件更新的手动选择。
15.如权利要求13所述的方法,其特征在于,获取对一个或多个可用软件更新的选择包括获取对一个或多个可用软件更新的自动选择。
16.如权利要求13所述的方法,其特征在于,所述软件更新服务包括一具有对可用增量补丁的选择的补丁存储文件,并且其中,所述包包括标识对可用增量补丁的每一选择的特定存储位置的补丁存储清单。
17.如权利要求13所述的方法,其特征在于,请求所述一个或多个所选择的增量补丁包括通过标识所请求增量补丁的特定存储位置请求来自所述补丁存储文件的特定增量补丁。
18.如权利要求17所述的方法,其特征在于,发送对一个或多个所选择增量补丁的请求包括通过标识每一所请求增量补丁的特定存储位置来发送对来自所述补丁存储文件的一组特定增量补丁的请求。
19.如权利要求13所述的方法,其特征在于,还包括:
获取所请求的增量补丁;
将所述增量补丁与对应的已安装文件合并,以生成一更新文件;以及
安装所述更新文件。
20.如权利要求19所述的方法,其特征在于,所述包包括验证信息,所述方法还包括:
在安装所述更新文件之前确认所述更新文件;以及
如果所述更新文件不被确认,则恢复所述更新文件的前一版本。
21.如权利要求13所述的方法,其特征在于,请求所述一个或多个所选择增量补丁包括发送对所选择增量补丁的前台请求。
22.如权利要求13所述的方法,其特征在于,请求所述一个或多个所选择增量补丁包括发送对所选择增量补丁的后台请求。
23.如权利要求13所述的方法,其特征在于,获取所述客户机计算装置上安装的一个或多个文件的详细目录包括获取所述客户机计算装置上安装的一个或多个文件的高速缓存的详细目录。
24.如权利要求13所述的方法,其特征在于,所述包包括一安装组件更新,所述方法还包括从所述安装组件更新来更新所述客户机计算装置上的安装组件。
25.如权利要求24所述的方法,其特征在于,所述安装组件更新是安装组件增量补丁。
26.一种计算机系统,包括:
用于获取对用于更新所述客户机计算装置上安装的一个或多个文件的一个或多个可用软件更新的选择的装置;
用于获取标识用于更新已安装文件的至少一个版本的多个可用增量补丁的包的装置;
用于获取所述客户机计算装置上安装的一个或多个文件的详细目录的装置;
用于选择一个或多个可适用的增量补丁以实现所选择的软件更新的装置,其中,选择所述一个或多个可适用的补丁对应于将标识多个可用增量补丁的包映射到所述客户机计算装置上安装的一个或多个文件的详细目录;以及
用于发送对一个或多个所选择增量补丁的请求的装置,
其中,在传送专用更新时以特定类型的客户机为目标。
27.在包括与软件更新服务通信的至少一个客户机计算装置的计算机系统中,一种用于更新所述客户机计算装置上的数据的方法,其特征在于,所述方法包括:
获取对用于更新所述客户机计算装置上安装的一个或多个文件的一个或多个可用软件更新的选择;
获取标识多个增量补丁的索引,其中,每一增量补丁对应于已安装文件的至少一个版本;
获取所述客户机计算装置上安装的一个或多个文件的详细目录;
选择一个或多个可适用的增量补丁以实现所选择的软件更新,其中,选择所述一个或多个可适用的补丁对应于将标识多个增量补丁的索引映射到所述客户机计算装置上安装的一个或多个文件的详细目录;
请求所述一个或多个所选择的增量补丁;
获取所请求的增量补丁;
将所述增量补丁与对应的已安装文件合并,以生成一更新文件;以及
安装所述更新文件,
其中,在传送专用更新时以特定类型的客户机为目标。
28.如权利要求27所述的方法,其特征在于,获取对一个或多个可用软件更新的选择包括获取对一个或多个可用软件更新的手动选择。
29.如权利要求27所述的方法,其特征在于,获取对一个或多个可用软件更新的选择包括获取对一个或多个可用软件更新的自动选择。
30.如权利要求27所述的方法,其特征在于,所述软件更新服务包括一具有对可用增量补丁的选择的文件,并且其中,所述索引对应于对可用增量补丁的每一选择的特定存储位置的标识。
31.如权利要求30所述的方法,其特征在于,请求所述一个或多个所选择的增量补丁包括通过标识所请求的增量补丁的特定存储位置请求来自所述文件的特定增量补丁。
32.如权利要求30所述的方法,其特征在于,请求所述一个或多个所选择增量补丁包括通过标识每一所请求的增量补丁的特定存储位置请求来自所述文件的一组特定增量补丁。
33.如权利要求27所述的方法,其特征在于,还包括:
在安装所述更新文件之前确认所述更新文件;以及
如果所述更新文件不被确认,则恢复所述更新文件的前一版本。
34.如权利要求27所述的方法,其特征在于,请求所述一个或多个所选择的增量补丁包括发送对所选择增量补丁的前台请求。
35.如权利要求27所述的方法,其特征在于,请求所述一个或多个所选择的增量补丁包括发送对所选择增量补丁的后台请求。
36.如权利要求27所述的方法,其特征在于,获取所述客户机计算装置上安装的一个或多个文件的详细目录包括获取所述客户机计算装置上安装的一个或多个文件的高速缓存的详细目录。
37.一种计算机系统,包括:
用于获取对用于更新所述客户机计算装置上安装的一个或多个文件的一个或多个可用软件更新的选择的装置;
用于获取标识多个增量补丁的索引的装置,其中,每一增量补丁对应于已安装文件的至少一个版本;
用于获取所述客户机计算装置上安装的一个或多个文件的详细目录的装置;
用于选择一个或多个可适用的增量补丁以实现所选择的软件更新的装置,其中,选择所述一个或多个可适用的补丁对应于将标识多个增量补丁的索引映射到所述客户机计算装置上安装的一个或多个文件的详细目录;
用于请求所述一个或多个所选择的增量补丁的装置;
用于获取所请求的增量补丁的装置;
用于将所述增量补丁与对应的已安装文件合并,以生成一更新文件的装置;以及
用于安装所述更新文件的装置,
其中,在传送专用更新时以特定类型的客户机为目标。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/737,725 | 2003-12-15 | ||
US10/737,725 US7509636B2 (en) | 2003-12-15 | 2003-12-15 | System and method for updating files utilizing delta compression patching |
PCT/US2004/023581 WO2005071542A1 (en) | 2003-12-15 | 2004-07-23 | System and method for updating files utilizing delta compression patching |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1777867A CN1777867A (zh) | 2006-05-24 |
CN1777867B true CN1777867B (zh) | 2010-09-15 |
Family
ID=34654195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800013256A Expired - Lifetime CN1777867B (zh) | 2003-12-15 | 2004-07-23 | 使用增量压缩打补丁更新文件的系统和方法 |
Country Status (11)
Country | Link |
---|---|
US (1) | US7509636B2 (zh) |
EP (1) | EP1614032B1 (zh) |
JP (1) | JP4800968B2 (zh) |
KR (1) | KR101150041B1 (zh) |
CN (1) | CN1777867B (zh) |
AU (1) | AU2004279173B2 (zh) |
BR (1) | BRPI0406403A (zh) |
CA (1) | CA2501548A1 (zh) |
MX (1) | MXPA05006614A (zh) |
RU (1) | RU2367005C2 (zh) |
WO (1) | WO2005071542A1 (zh) |
Families Citing this family (119)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8255361B2 (en) * | 2003-01-31 | 2012-08-28 | Oracle America, Inc. | Method and system for validating differential computer system update |
US20060031431A1 (en) * | 2004-05-21 | 2006-02-09 | Bea Systems, Inc. | Reliable updating for a service oriented architecture |
US20060136555A1 (en) * | 2004-05-21 | 2006-06-22 | Bea Systems, Inc. | Secure service oriented architecture |
US7774485B2 (en) | 2004-05-21 | 2010-08-10 | Bea Systems, Inc. | Dynamic service composition and orchestration |
US8615601B2 (en) * | 2004-05-21 | 2013-12-24 | Oracle International Corporation | Liquid computing |
US7661102B2 (en) * | 2004-08-20 | 2010-02-09 | Smith Micro Software, Inc. | Method for reducing binary image update package sizes |
US7716660B2 (en) * | 2004-12-14 | 2010-05-11 | Microsoft Corporation | Method and system for downloading updates |
US8195952B2 (en) | 2004-12-14 | 2012-06-05 | International Business Machines Corporation | System and method of facilitating the identification of a computer on a network |
EP1688834A3 (en) * | 2005-02-03 | 2009-01-14 | LG Electronics Inc. | Video device having software upgrade function using wireless communication and method for controlling the same |
US7577879B2 (en) * | 2005-06-07 | 2009-08-18 | Microsoft Corporation | Patching a mobile computing device software error |
US8577761B1 (en) * | 2005-06-30 | 2013-11-05 | Oracle America, Inc. | System and method for dynamic offering topologies |
US20070067512A1 (en) * | 2005-09-19 | 2007-03-22 | Smar Research Corporation | Method, system and software arrangement for processing a device support file for a field device |
US8291093B2 (en) | 2005-12-08 | 2012-10-16 | Microsoft Corporation | Peer-to-peer remediation |
US7716658B2 (en) * | 2005-12-09 | 2010-05-11 | Oracle America, Inc. | Method and apparatus for optimizing patching of objects containing references |
CN100459500C (zh) * | 2006-01-18 | 2009-02-04 | 腾讯科技(深圳)有限公司 | 一种客户端软件加载功能扩展文件的方法 |
CN101361041B (zh) * | 2006-02-01 | 2012-03-21 | 富士通株式会社 | 对象关系显示装置以及对象关系显示方法 |
KR100750169B1 (ko) * | 2006-03-08 | 2007-08-21 | 삼성전자주식회사 | 델타 파일 생성 방법 및 이를 이용한 소프트웨어 업데이트방법 |
US20080005732A1 (en) * | 2006-05-11 | 2008-01-03 | Coon Robert F | Method and System for Integrating Software Update Services with Software Applications |
US8667273B1 (en) | 2006-05-30 | 2014-03-04 | Leif Olov Billstrom | Intelligent file encryption and secure backup system |
US8099605B1 (en) | 2006-06-05 | 2012-01-17 | InventSec AB | Intelligent storage device for backup system |
WO2007148900A1 (en) * | 2006-06-19 | 2007-12-27 | Samsung Electronics Co., Ltd. | Program upgrade system and method for ota-capable portable device |
US7636728B2 (en) * | 2006-06-22 | 2009-12-22 | Microsoft Corporation | Media difference files for compressed catalog files |
KR101426710B1 (ko) * | 2006-07-14 | 2014-09-23 | 삼성전자주식회사 | 휴대단말기의 버전정보 갱신 장치 및 방법 |
US8589341B2 (en) * | 2006-12-04 | 2013-11-19 | Sandisk Il Ltd. | Incremental transparent file updating |
US8527660B2 (en) * | 2006-12-22 | 2013-09-03 | Palm, Inc. | Data synchronization by communication of modifications |
US9563417B2 (en) * | 2006-12-29 | 2017-02-07 | International Business Machines Corporation | Patch management automation tool for UNIX, APARXML |
JP4345844B2 (ja) * | 2007-05-09 | 2009-10-14 | ソニー株式会社 | 通信システム、情報処理装置および方法、並びにプログラム |
US8762984B2 (en) * | 2007-05-31 | 2014-06-24 | Microsoft Corporation | Content distribution infrastructure |
JP2009087136A (ja) * | 2007-10-01 | 2009-04-23 | Nec Corp | 障害修復システムおよび障害修復方法 |
US8434077B2 (en) * | 2007-10-18 | 2013-04-30 | International Business Machines Corporation | Upgrading virtual resources |
US8631397B2 (en) | 2008-03-31 | 2014-01-14 | Microsoft Corporation | Virtualized application image patching |
US20090313352A1 (en) * | 2008-06-11 | 2009-12-17 | Christophe Dupont | Method and System for Improving the Download of Specific Content |
US8312448B2 (en) * | 2008-06-24 | 2012-11-13 | Sony Corporation | Configuration to order software deployment and management |
KR101016916B1 (ko) * | 2008-10-30 | 2011-02-22 | 한국항공우주산업 주식회사 | 비행 시뮬레이션 및 테스트를 위한 항공기 임베디드 시스템의 데이터 주입 방법 |
US8332842B2 (en) * | 2008-11-14 | 2012-12-11 | International Business Machines Corporation | Application restore points |
US8539477B2 (en) | 2009-02-24 | 2013-09-17 | Microsoft Corporation | Managed environment update selection |
US8402452B2 (en) * | 2009-04-02 | 2013-03-19 | International Business Machines Corporation | Automatically recommending an upgrade approach for a customizable software product |
CN101604371B (zh) | 2009-07-22 | 2012-02-08 | 阿里巴巴集团控股有限公司 | 插件权限的控制方法及系统 |
CN101989208A (zh) * | 2009-08-04 | 2011-03-23 | 鸿富锦精密工业(深圳)有限公司 | 软件更新方法 |
JP5478986B2 (ja) * | 2009-08-21 | 2014-04-23 | 株式会社日立ソリューションズ | 情報機器及びプログラム |
JP5378119B2 (ja) * | 2009-09-01 | 2013-12-25 | 富士通エフ・アイ・ピー株式会社 | ラッピングファイル更新システム及びラッピングファイル更新方法 |
US10148433B1 (en) | 2009-10-14 | 2018-12-04 | Digitalpersona, Inc. | Private key/public key resource protection scheme |
US8397230B2 (en) * | 2009-11-09 | 2013-03-12 | Bank Of America Corporation | Software updates using delta patching |
US8972974B2 (en) | 2009-11-09 | 2015-03-03 | Bank Of America Corporation | Multiple invocation points in software build task sequence |
US20110113226A1 (en) * | 2009-11-09 | 2011-05-12 | Bank Of America Corporation | Distribution Of Software Updates |
US8584113B2 (en) * | 2009-11-09 | 2013-11-12 | Bank Of America Corporation | Cross-updating of software between self-service financial transaction machines |
US8671402B2 (en) | 2009-11-09 | 2014-03-11 | Bank Of America Corporation | Network-enhanced control of software updates received via removable computer-readable medium |
US20110113421A1 (en) * | 2009-11-09 | 2011-05-12 | Bank Of America Corporation | Programmatic Creation Of Task Sequences From Manifests |
US9176898B2 (en) * | 2009-11-09 | 2015-11-03 | Bank Of America Corporation | Software stack building using logically protected region of computer-readable medium |
US9015136B2 (en) * | 2010-01-22 | 2015-04-21 | Microsoft Technology Licensing, Llc | Storing temporary state data in separate containers |
US20110238572A1 (en) * | 2010-03-25 | 2011-09-29 | Bank Of America Corporation | Remote Control Of Self-Service Terminal |
TW201135594A (en) * | 2010-04-08 | 2011-10-16 | Inventec Corp | System for updating software using separated modules and method thereof |
US9110690B2 (en) * | 2010-04-28 | 2015-08-18 | General Electric Company | Systems, methods, and apparatus for deploying application code change configurations for multiple target controllers |
US8799453B2 (en) | 2010-10-20 | 2014-08-05 | Microsoft Corporation | Managing networks and machines for an online service |
US8386501B2 (en) | 2010-10-20 | 2013-02-26 | Microsoft Corporation | Dynamically splitting multi-tenant databases |
US8751656B2 (en) | 2010-10-20 | 2014-06-10 | Microsoft Corporation | Machine manager for deploying and managing machines |
US9075661B2 (en) | 2010-10-20 | 2015-07-07 | Microsoft Technology Licensing, Llc | Placing objects on hosts using hard and soft constraints |
US20120102480A1 (en) * | 2010-10-20 | 2012-04-26 | Microsoft Corporation | High availability of machines during patching |
US8417737B2 (en) | 2010-10-20 | 2013-04-09 | Microsoft Corporation | Online database availability during upgrade |
US8850550B2 (en) | 2010-11-23 | 2014-09-30 | Microsoft Corporation | Using cached security tokens in an online service |
US9721030B2 (en) | 2010-12-09 | 2017-08-01 | Microsoft Technology Licensing, Llc | Codeless sharing of spreadsheet objects |
US8589363B2 (en) | 2011-07-19 | 2013-11-19 | Exagrid Systems, Inc. | Systems and methods for managing delta version chains |
US8707289B2 (en) | 2011-07-20 | 2014-04-22 | Google Inc. | Multiple application versions |
KR101286378B1 (ko) * | 2011-08-18 | 2013-07-15 | 웹싱크 주식회사 | 파일 동기화 방법 및 이를 위한 시스템 |
US20130232229A1 (en) * | 2012-03-02 | 2013-09-05 | Ilya Firman | Distribution of Application Files |
CN103309768B (zh) * | 2012-03-16 | 2015-03-11 | 腾讯科技(深圳)有限公司 | 系统文件修复方法和装置 |
GB201208373D0 (en) | 2012-05-14 | 2012-06-27 | Touchtype Ltd | Mechanism for synchronising devices,system and method |
US9244673B2 (en) | 2012-06-08 | 2016-01-26 | Apple Inc. | System and method for updating application archive files |
US9075693B2 (en) * | 2012-06-27 | 2015-07-07 | Google Inc. | Methods for updating applications |
CN102831204B (zh) * | 2012-08-09 | 2015-09-30 | 珠海金山网络游戏科技有限公司 | 一种具备版本控制能力的文件打包格式 |
US9015654B2 (en) * | 2012-08-13 | 2015-04-21 | Bitbar Technologies Oy | System for providing test environments for executing and analysing test routines |
KR102026637B1 (ko) * | 2012-12-20 | 2019-09-30 | 엘지전자 주식회사 | 디스플레이장치 및 이의 제어방법 |
US9418072B2 (en) * | 2013-03-04 | 2016-08-16 | Vmware, Inc. | Cross-file differential content synchronization |
CN103207902A (zh) * | 2013-03-27 | 2013-07-17 | 交通银行股份有限公司 | 一种金融客户端数据更新方法及系统 |
US8997082B1 (en) * | 2013-07-16 | 2015-03-31 | Amazon Technologies, Inc. | Differential patch of content |
CN104424037B (zh) * | 2013-08-29 | 2018-12-14 | 中兴通讯股份有限公司 | 一种动态补丁函数的方法及装置 |
US9760362B2 (en) | 2013-09-26 | 2017-09-12 | International Business Machines Corporation | Analytics based patch management and distribution |
US9715378B2 (en) * | 2013-12-18 | 2017-07-25 | International Business Machines Corporation | Automated software update scheduling |
KR20150087988A (ko) * | 2014-01-23 | 2015-07-31 | 한국전자통신연구원 | 단말용 응용 프로그램 관리 시스템 및 방법 |
US9692808B2 (en) * | 2014-01-24 | 2017-06-27 | Adobe Systems Incorporated | Code path directives for controlling in-app experiences |
US9996339B2 (en) * | 2014-06-04 | 2018-06-12 | Microsoft Technology Licensing, Llc | Enhanced updating for digital content |
CN104133699B (zh) * | 2014-07-28 | 2018-11-27 | 广州视睿电子科技有限公司 | 设备系统软件升级方法与系统 |
EP2993578A1 (en) * | 2014-09-02 | 2016-03-09 | Gemalto M2M GmbH | Method for adapting firmware of a wireless communication device |
CN104503790B (zh) * | 2014-12-19 | 2017-09-29 | 广东欧珀移动通信有限公司 | 一种应用版本的管理方法及系统、智能终端 |
US9785429B2 (en) * | 2015-02-27 | 2017-10-10 | Lenovo (Singapore) Pte. Ltd. | Efficient deployment of thin client applications to end user |
IN2015CH02762A (zh) * | 2015-06-01 | 2015-07-17 | Wipro Ltd | |
CN105069078A (zh) * | 2015-07-31 | 2015-11-18 | 天脉聚源(北京)传媒科技有限公司 | 一种处理增量索引合并失败的方法及装置 |
CN105117250B (zh) * | 2015-08-24 | 2019-03-29 | 联想(北京)有限公司 | 一种兼容性处理方法及电子设备 |
US9740473B2 (en) | 2015-08-26 | 2017-08-22 | Bank Of America Corporation | Software and associated hardware regression and compatibility testing system |
CN105404653B (zh) * | 2015-10-30 | 2019-03-26 | 无锡清华信息科学与技术国家实验室物联网技术中心 | 一种全分布式文件索引及协作编辑机制的实现方法 |
JP6622577B2 (ja) * | 2015-12-04 | 2019-12-18 | キヤノン株式会社 | 配信システム、及び配信システムの制御方法 |
CN107015821B (zh) * | 2016-01-28 | 2021-05-11 | 腾讯科技(深圳)有限公司 | 增量更新的方法和装置 |
US10291700B2 (en) * | 2016-02-08 | 2019-05-14 | International Business Machines Corporation | Network optimized scan with dynamic fallback recovery |
US10025583B2 (en) | 2016-02-17 | 2018-07-17 | International Business Machines Corporation | Managing firmware upgrade failures |
WO2017145357A1 (ja) * | 2016-02-26 | 2017-08-31 | 三菱電機株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
US20170277517A1 (en) * | 2016-03-22 | 2017-09-28 | M2Communication Inc. | Method Of Updating Program Code And Electronic Device Using The Same |
US20170300317A1 (en) * | 2016-03-24 | 2017-10-19 | Knight Point Systems, Inc. | System and method for patching software in a target computer system device |
US10157009B2 (en) * | 2016-07-06 | 2018-12-18 | Arris Enterprises Llc | Custom command file for efficient memory update |
CN106293835A (zh) * | 2016-08-09 | 2017-01-04 | 捷开通讯(深圳)有限公司 | 一种智能设备固件升级的方法及系统 |
CN106909427B (zh) * | 2017-03-23 | 2020-09-22 | 北京奇虎科技有限公司 | 一种软件更新方法、装置和软件更新数据发布方法、系统 |
US10318281B1 (en) * | 2017-04-06 | 2019-06-11 | Amdocs Development Limited | System, method, and computer program for upgrading software associated with a distributed, state-full system |
US10191732B2 (en) * | 2017-06-09 | 2019-01-29 | Citrix Systems, Inc. | Systems and methods for preventing service disruption during software updates |
US10387139B2 (en) * | 2017-07-25 | 2019-08-20 | Aurora Labs Ltd. | Opportunistic software updates during select operational modes |
CN108241500B (zh) * | 2018-01-15 | 2022-02-01 | 腾讯科技(深圳)有限公司 | 一种硬件组件的修复方法、装置、系统和存储介质 |
JP7013918B2 (ja) * | 2018-02-16 | 2022-02-01 | トヨタ自動車株式会社 | 車両制御装置、プログラム更新方法およびプログラム |
US10868853B2 (en) * | 2018-06-08 | 2020-12-15 | Verizon Patent And Licensing Inc. | System and method for image file generation and management |
DE102018211979A1 (de) * | 2018-07-18 | 2020-01-23 | Bayerische Motoren Werke Aktiengesellschaft | Verfahren zur zentralen Update-Verwaltung für ein Fahrzeug und System zur zentralen Update-Verwaltung für ein Fahrzeug |
US11416232B2 (en) * | 2019-09-03 | 2022-08-16 | Google Llc | Accelerating application and sub-package installations |
WO2021087662A1 (zh) * | 2019-11-04 | 2021-05-14 | 深圳市欢太科技有限公司 | 内存分配方法、装置、终端及计算机可读存储介质 |
CN114303131B (zh) * | 2019-11-18 | 2024-09-20 | 深圳市欢太科技有限公司 | 一种文件处理方法、文件处理装置及终端设备 |
CN113050977B (zh) * | 2019-12-27 | 2022-06-17 | 武汉斗鱼网络科技有限公司 | 一种数据处理的方法及系统 |
CN111416998A (zh) * | 2020-03-16 | 2020-07-14 | 上海晶曦微电子科技有限公司 | 一种用于交通设备的信息更新系统及方法 |
US11379215B1 (en) * | 2020-06-15 | 2022-07-05 | Amazon Technologies, Inc. | Application-update techniques |
CN112657196B (zh) * | 2020-12-21 | 2024-11-08 | 北京像素软件科技股份有限公司 | 资源更新方法、装置、计算机设备和可读存储介质 |
CN113342376B (zh) * | 2021-06-23 | 2022-08-30 | 支付宝(杭州)信息技术有限公司 | 一种针对物联网设备的操作系统进行升级的方法及装置 |
CN116737195A (zh) * | 2022-03-11 | 2023-09-12 | 荣耀终端有限公司 | 操作系统的升级方法、电子设备及存储介质 |
EP4293500A1 (de) * | 2022-06-17 | 2023-12-20 | Siemens Aktiengesellschaft | Aktualisieren einer software durch eine auszuführende umsetzungsvariante |
CN115543403B (zh) * | 2022-11-29 | 2023-03-21 | 紫光同芯微电子有限公司 | 一种系统升级方法及装置 |
US12072845B2 (en) | 2022-12-21 | 2024-08-27 | Microsoft Technology Licensing, Llc | Systems and methods for pair-wise delta compression |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6493871B1 (en) * | 1999-09-16 | 2002-12-10 | Microsoft Corporation | Method and system for downloading updates for software installation |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835911A (en) * | 1994-02-08 | 1998-11-10 | Fujitsu Limited | Software distribution and maintenance system and method |
US5845077A (en) | 1995-11-27 | 1998-12-01 | Microsoft Corporation | Method and system for identifying and obtaining computer software from a remote computer |
US6049671A (en) | 1996-04-18 | 2000-04-11 | Microsoft Corporation | Method for identifying and obtaining computer software from a network computer |
US6074434A (en) * | 1996-06-07 | 2000-06-13 | International Business Machines Corporation | Selection of code updates, data updates or new data for client |
US6347398B1 (en) | 1996-12-12 | 2002-02-12 | Microsoft Corporation | Automatic software downloading from a computer network |
JPH1124934A (ja) * | 1997-06-30 | 1999-01-29 | Hitachi Software Eng Co Ltd | クライアント・サーバシステムにおけるクライアントプログラムの配布管理方法 |
US6282709B1 (en) * | 1997-11-12 | 2001-08-28 | Philips Electronics North America Corporation | Software update manager |
GB2333864B (en) * | 1998-01-28 | 2003-05-07 | Ibm | Distribution of software updates via a computer network |
US6167567A (en) * | 1998-05-05 | 2000-12-26 | 3Com Corporation | Technique for automatically updating software stored on a client computer in a networked client-server environment |
US6216175B1 (en) | 1998-06-08 | 2001-04-10 | Microsoft Corporation | Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations |
US6704933B1 (en) * | 1999-02-03 | 2004-03-09 | Masushita Electric Industrial Co., Ltd. | Program configuration management apparatus |
US6594822B1 (en) | 1999-02-19 | 2003-07-15 | Nortel Networks Limited | Method and apparatus for creating a software patch by comparing object files |
US6477703B1 (en) * | 1999-06-29 | 2002-11-05 | Hewlett-Packard Company | Software patch selection tool |
US6363524B1 (en) * | 1999-09-10 | 2002-03-26 | Hewlett-Packard Company | System and method for assessing the need for installing software patches in a computer system |
US6711675B1 (en) * | 2000-02-11 | 2004-03-23 | Intel Corporation | Protected boot flow |
US6751794B1 (en) | 2000-05-25 | 2004-06-15 | Everdream Corporation | Intelligent patch checker |
US6675180B2 (en) * | 2000-06-06 | 2004-01-06 | Matsushita Electric Industrial Co., Ltd. | Data updating apparatus that performs quick restoration processing |
US6985929B1 (en) * | 2000-08-31 | 2006-01-10 | The United States Of America As Represented By The Secretary Of The Navy | Distributed object-oriented geospatial information distribution system and method thereof |
JP2002135316A (ja) * | 2000-10-26 | 2002-05-10 | Oki Electric Ind Co Ltd | 統合サービスネットワーク |
US6928426B2 (en) * | 2000-12-30 | 2005-08-09 | Intel Corporation | Method and apparatus to improve file management |
US6763517B2 (en) * | 2001-02-12 | 2004-07-13 | Sun Microsystems, Inc. | Automated analysis of kernel and user core files including searching, ranking, and recommending patch files |
US6782350B1 (en) * | 2001-04-27 | 2004-08-24 | Blazent, Inc. | Method and apparatus for managing resources |
JP4011940B2 (ja) * | 2002-03-11 | 2007-11-21 | 株式会社東芝 | 情報環境設定システム、プログラム及び方法 |
US6966058B2 (en) * | 2002-06-12 | 2005-11-15 | Agami Systems, Inc. | System and method for managing software upgrades in a distributed computing system |
US20040088700A1 (en) * | 2002-10-31 | 2004-05-06 | Chung-I Lee | System and method for automatically installing software on client computers via a network |
US20040117414A1 (en) * | 2002-12-17 | 2004-06-17 | Capital One Financial Corporation | Method and system for automatically updating operating systems |
-
2003
- 2003-12-15 US US10/737,725 patent/US7509636B2/en active Active
-
2004
- 2004-07-23 JP JP2006543792A patent/JP4800968B2/ja not_active Expired - Lifetime
- 2004-07-23 KR KR1020057009129A patent/KR101150041B1/ko active IP Right Grant
- 2004-07-23 MX MXPA05006614A patent/MXPA05006614A/es active IP Right Grant
- 2004-07-23 WO PCT/US2004/023581 patent/WO2005071542A1/en active Application Filing
- 2004-07-23 CN CN2004800013256A patent/CN1777867B/zh not_active Expired - Lifetime
- 2004-07-23 RU RU2005116848/09A patent/RU2367005C2/ru not_active IP Right Cessation
- 2004-07-23 BR BR0406403-8A patent/BRPI0406403A/pt not_active IP Right Cessation
- 2004-07-23 CA CA002501548A patent/CA2501548A1/en not_active Abandoned
- 2004-07-23 EP EP04757202.9A patent/EP1614032B1/en not_active Expired - Lifetime
- 2004-07-23 AU AU2004279173A patent/AU2004279173B2/en not_active Ceased
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6493871B1 (en) * | 1999-09-16 | 2002-12-10 | Microsoft Corporation | Method and system for downloading updates for software installation |
Non-Patent Citations (1)
Title |
---|
全文. |
Also Published As
Publication number | Publication date |
---|---|
EP1614032A4 (en) | 2012-04-18 |
KR101150041B1 (ko) | 2012-06-01 |
US7509636B2 (en) | 2009-03-24 |
AU2004279173B2 (en) | 2010-06-24 |
MXPA05006614A (es) | 2005-09-22 |
CN1777867A (zh) | 2006-05-24 |
RU2005116848A (ru) | 2006-01-20 |
WO2005071542A1 (en) | 2005-08-04 |
EP1614032A1 (en) | 2006-01-11 |
KR20060114616A (ko) | 2006-11-07 |
RU2367005C2 (ru) | 2009-09-10 |
CA2501548A1 (en) | 2005-06-15 |
JP2007514232A (ja) | 2007-05-31 |
US20050132382A1 (en) | 2005-06-16 |
JP4800968B2 (ja) | 2011-10-26 |
EP1614032B1 (en) | 2014-06-04 |
BRPI0406403A (pt) | 2005-10-04 |
AU2004279173A1 (en) | 2005-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1777867B (zh) | 使用增量压缩打补丁更新文件的系统和方法 | |
CN100535857C (zh) | 用于更新网络化环境中的安装组件的系统和方法 | |
CN100416465C (zh) | 管理和传递软件更新的系统和方法 | |
CN101410800B (zh) | 用于软件发布服务的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150505 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150505 Address after: Washington State Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC Address before: Washington State Patentee before: Microsoft Corp. |
|
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20100915 |