高效的虚拟应用更新的制作方法

文档序号:6439876阅读:256来源:国知局
专利名称:高效的虚拟应用更新的制作方法
技术领域
本申请涉及虚拟化技术,尤其涉及高效的虚拟应用更新。
背景技术
应用虚拟化是使软件应用能够从操作系统解耦的技术集合。虚拟应用作为服务被部署在计算机上,而不是传统意义上被直接地安装到计算机。然而,虚拟应用如同它被安装在计算机上一样执行。在某种意义上,应用被欺骗以相信它被安装并且与计算机操作系统直接地进行接口。这可以通过将应用封装在虚拟环境或虚拟化层中来实现,该虚拟环境或虚拟化层截取文件和应用的其他操作,并且将这些操作重定向到虚拟化位置。应用虚拟化具有若干益处。具体而言,应用经由虚拟环境彼此隔离并且至少一定程度上与执行计算机相隔离。因此,可以同时运行多个应用,包括以其他方式不兼容或冲突的应用。此外,可以在除应用为之设计的环境以外的环境中运行应用。另外,隔离保护其他应用和底层操作系统以免被糟糕地编写或避免有缺陷的代码。虚拟化应用包括多个部分。第一部分是应用资产或资源所驻留的包文件。此包包括在计算机上运行应用所必要的数据和元数据。这些资源包括但不限于文件和目录结构。 在运行时,虚拟应用包括在计算机上运行的这些资源或名字空间。通过虚拟化,资源名字空间和本机名字空间可被缝合在一起,以便应用能够找到其资源。

发明内容
下面呈现了简化的发明内容,以便提供对所公开主题的某些方面的基本概念。本发明内容不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护
主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更具体实施例的序 、
曰ο简言之,本公开一般涉及高效的虚拟应用更新。可以在应用的旧版本文件与相同的应用的新版本文件之间进行比较。如果新文件相对于对应的旧文件未被改变,则可以创建将新文件与旧文件相关联的硬链接,而不是产生复制副本。如果文件已经改变,则可以从旧文件复制新文件的未改变部分,并且可以从诸如服务器、代理、客户机、和/或客户机数据存储等源发起对已改变部分的获取。为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本发明的其他优点和新颖特征将变得显而易见。


图1是便于虚拟应用更新的系统的框图。图2是示例性应用包的框图。图3是代表性更新组件的框图。
图4是代表性包构建组件的框图。图5是便于虚拟应用更新的系统的框图。图6是便于虚拟应用程序更新的系统的框图。图7是更新虚拟应用的方法的流程图。图8是便于应用更新的预处理方法的流程图。图9是更新虚拟应用的方法的流程图。图10是更新虚拟应用的方法的流程图。图11是从源获取已改变的数据的方法的流程图。图12是示出用于本公开各方面的合适的操作环境的示意性框图。
具体实施例方式以下的细节一般针对虚拟应用的高效更新(例如更新/升级)。可以结合应用的旧版本来创建应用的新版本。可以基于旧版本和新版本之间的比较采取各种动作,例如,利用块图和中央目录。具体而言,如果新文件相对于对应的旧文件保持不变,可以创建从文件的新版本到旧版本的硬链接。由此,节省了磁盘空间,因为无需为新版本复制文件。另外, 被中断或失败的更新不会影响旧版本,并且新版本可以与旧版本同时运行。如果文件改变,则可以从旧版本复制未改变的数据部分(又称块),并且可以从诸如服务器等另一个源获取剩余的部分。因此,节约了网络带宽,因为文件的仅已改变的部分被下载。可以采用进一步的优化来节约网络带宽,尤其包括对代理、多个客户机以及多个客户机数据存储等的利用。现在参考附图更详细地描述本公开的各个方面,在全部附图中用相似的标记来指示相似或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修改、等价物和替换的方案。最初参考图1,系统100被示为便于虚拟应用更新。系统100被配置为根据客户机-服务器范例来运行。客户机110和服务器130可以是硬件和/或软件(例如,线程、进程、计算机、计算设备)。另外,客户机110可以被连接到客户机数据存储120,并且该服务器可以被连接到服务器数据存储140。此外,客户机110和服务器130可以跨通信网络通信,包括但不限于广域网,诸如因特网。系统100可以启用应用虚拟化,其中通过跨通信网络150从服务器130和服务器数据存储140流传输应用,将应用加载而非安装到客户机110和相关联的客户机数据存储 120上。如此处所示的,流组件112被配置为通过请求并随后从服务器130接收应用来实现应用的这种流传输。例如,服务器数据存储140包括Vl包122,该Vl包122包括应用的可执行文件和元数据。流组件112可以向服务器130请求Vl包122。作为响应,服务器130可以从服务器数据存储140检索Vl包122,并且跨通信网络150将Vl包122传送回到相对于客户机 110的流组件112流组件112可以随后将Vl包122加载到可与本地高速缓存相对应的客户机数据存储120。另外,由于流传输过程,包的各部分可以在它们被接收时被加载,直到整个包已经到达。
简要地将注意力转向图2,描绘了示例性应用包200。如所示的,应用包包括头 210、文件数据220、块图230和中央目录M0。头210提供关于应用包的概要信息(例如大小、偏移量……)。文件数据220与实现应用的功能的多个可执行和不可执行文件相对应。 块图230是为客户机提供将本地文件中的一个偏移量转换为包中的偏移量的方法的元数据文件。此外,块图230提供块级散列以预防篡改,以及启用对块之间的差别的计算。中央目录240包括关于文件和子目录的元数据。例如,如果应用包括文件“foo. exe”和具有文件“alpha, dll”和“beta, dll”的子目录“bar”,则中央目录240将包括在本地系统上重新创建该分层结构所必要的信息(例如,称为“foo. exe"的文件、包括两个文件“alpha, dll” 和"beta, dll” 的目录“bar”)。返回图1,如前面提到的,流组件112可以联系服务器130并且下载Vl包122。更具体地,中央目录可被下载并用于创建包中的文件和目录的本地版本。流组件112随后可使全部文件驻留在客户机数据存储120的本地系统上。这可以通过使用块图从本地文件系统中的一个位置(例如,文件“foo. dll”,偏移量“0x400”)到包中的范围(例如,“sample, appv”,偏移量“0x63000”)来实现。流组件112还包括被配置为将应用的旧版本更新为该应用的新版本的更新组件 114。以前的更新解决方案落入两类之一,卸载和重新安装,以及打补丁。根据卸载和重新安装,从系统移除包括全部文件的应用的以前版本,并且下载和安装新版本。然而,此处若应用中的文件仅有15%改变,那么仍然下载全部应用文件。这是对网络带宽的低效使用,还增加了停机时间,因为应用在此时间期间不可用。打补丁包括基于文件的两个已知版本之间的差别,在构建实验室中计算补丁。补丁被下载并随后被应用在文件上。这仅需要用于已改变的数据的网络带宽,但它需要构建实验室维护以前的构件库以生成差别,并且补丁需要被顺序地应用(例如,补丁 1、补丁 2、补丁 3……)。更新组件114可以提供更新虚拟应用的更高效的方法。更具体地,更新组件114 可通过硬链接新旧版本的未改变文件来节省存储空间,并且通过尤其将请求限于文件改变来有效地利用网络带宽。另外,应用s的旧版本和新版本可以共存,并且更新无需被顺序地实现。图3更详细地示出代表性更新组件114。更新组件114包括预处理组件310和包构建组件320。预处理组件310被配置为执行一个或多个预处理动作以方便更新应用。作为示例而非限制,预处理组件310可以利用应用包的中央目录和块图来创建新包的本地稀疏副本,其中该稀疏副本包括稀疏文件,稀疏文件包括元数据(例如,文件名称、大小……), 但在其他方面缺少内容。包构建组件320可以利用稀疏包来构件本地包。例如,包构建组件320可将文件链接到其他文件,复制文件或文件的部分,和/或注入新文件。将注意力转向图4,代表性包构建组件320被示为包括比较组件410、硬链接组件 420、复制组件430和流启动组件440。比较组件410可以分析旧包和新包,并且标识二者之间的差别和/或相似性。换言之,比较组件410可以遍历与应用的第一版本相关联的文件列表以及与该应用的第二版本相关联的文件列表以确定改变。根据一个实施例,比较组件410可以利用针对文件或文件的部分应用散列函数(又称散列码、散列)的结果来标识差别。如果比较组件410确定新文件与相同文件的旧版本相比未改变,则可以采用被配置为在文件的旧版本与新版本之间创建硬链接的硬链接组件420。换言之,可以在新版本包中插入一条目,而不是生成保持不变的文件的另一个副本,该条目将一个文件与存在于旧包中的相同文件相关联。这种硬链接至少通过不存储文件的重复副本,而是使用指向原始文件位置的链接来节省存储空间。虽然不限于此,但对于远程桌面和磁盘存储的成本较高的虚拟桌面应用部署来说,硬链接可能是特别有帮助的。如果如比较组件410所确定的,文件已经改变,则可以利用复制组件430和流启动组件440。复制组件430被配置为将匹配的块,或者换言之是文件的未改变的部分,从旧版本复制到新版本。包块图所提供的散列可被用于标识文件的匹配及不匹配的块。对于被改变的部分,流启动组件440可以启动从诸如服务器等源对这些部分的获取。被复制的部分和以其他方式获取的部分共同构成该文件。另外,新版本包括不是旧版本的一部分的新文件时,对整个或全部新文件的获取可由流启动组件440来启动。以此方式,通过将下载限于已改变的文件的部分以及不是旧版本的一部分的新文件来节省网络带宽。除节省空间和带宽以外,包构建组件320可允许旧版本和新版本的同时执行,以及更新期间的故障容忍。典型的更新方案包括移除或复制文件。因此,如果在更新期间存在错误,则旧版本可能处于不完整状态,其中某些文件被移除或被安装(例如,部分升级)。 通过利用硬链接及复制文件的部分,被中断或失败的升级不影响原始或旧应用版本。类似地,应用的旧版本和新版本可以共存,例如如果存在某一计算机的两个用户,第一用户想要使用应用的第一版本,而第二用户想要使用相同的应用的第二版本时,则这可能是有帮助的。回到图1,当应用的第二版本,即V2包124,变为可用时,更新组件114可以启动从服务器130对V2中央目录和块图的下载。接下来,中央目录可被扩展到本地文件系统上, 为文件制作稀疏文件并为内容目录中的条目制作目录。更新组件114随后可以遍历旧文件和新文件列表,并且如果一文件存在于V2包124中,则更新组件114将确定该文件相对于 Vl包122是否改变。可以通过对旧文件和新文件之间的块的散列进行比较来作出该确定。 已更新版本中尚未被改变的文件可以由更新组件114来硬链接,例如如箭头所示的从Vl包位置到V2包位置。如果文件已经改变,则更新组件114可以将匹配的块从文件的旧版本复制到文件的新版本,并且下载已改变的部分。类似地,如果新文件存在于已更新的版本但不是原始版本中,则该文件可被下载。根据一个实施例,两个版本的块图和中央目录可被用于从一个任意版本到另一个。例如,考虑用户具有版本“1”,但离线1个月的情形。在此时间期间,应用厂商发布了多个升级或修复,使得当前版本现在是版本“4”。用户无需将版本“2”和“3”应用于包。相反,更新组件114可以获取与版本“4”相关联的块图,计算版本“1”和版本“4”之间的差别, 并且应用那些改变。图5示出根据一个实施例的便于对虚拟应用的更新的系统500。系统500可包括两个或更多个客户机110,每个客户机包括流组件112和更新组件114。如此处之前所述, 如果文件从应用的旧版本变为应用的新版本,或者新版本引入了新文件,则可以从本地系统外部获取这种已改变的数据的至少一部分。有利地,可以通过将下载限于这些改变来节省网络带宽。然而,可以利用代理组件510来进一步优化数据获取。代理组件510是具有用于存储文件或其部分等的高速缓存512的本地或远程代理或者中介。多个客户机110可与代理组件510进行交互以获得已改变的数据。如果所请求的数据以前从服务器被取得并且驻留在高速缓存512中,则该数据可被返回给发出请求的客户机。或者,数据可以从服务器取得并且存储在高速缓存512中用于随后的使用。以此方式,已更新的应用包可以被代理组件510下载一次并由多个客户机110使用,而不是由每个客户机单独地下载。另外,客户机110通信地耦合于另一个客户机110时,可以交换升级信息。例如, 如果在第一客户机上确定需要获取一个文件,则第一客户机可向第二客户机请求该文件, 第二客户机可返回该文件的副本。由此,可以通过客户机到客户机的通信(例如,有线、无线、蓝牙……)进一步节省网络带宽。同样,即使服务器不可用,也可执行更新。图6示出根据一个实施例的便于对虚拟应用的更新的系统600。系统包括如前所述的客户机110、流组件112和更新组件114。另外,客户机110包括两个客户机数据存储, 和/或与两个客户机数据存储进行交互,即第一客户机数据存储620和第二客户机数据存储630。在某些场景中,客户机110可以支持多个但是单独的用户,使得每个用户具有特定的客户机数据存储。更新组件114可以利用这些单独的存储来获取已改变的数据等。例如, 如果对于第一客户机数据存储620,Vl包122将被更新到V2包124,则(能的话)可以查询并利用第二客户机数据存储630来获取已改变的数据或者相对于旧版本Vl包122未被包括的新文件。当然,如果另一个客户机数据存储不可用或者不具有所需数据,则更新组件 114可寻求从服务器、代理、或其他客户机等源获取数据。如上所述,更新组件114可以从诸如服务器、代理、客户机、或客户机数据存储等各种源获取数据。当然,该资源列表不是穷尽性的。另外,更新组件114不需要利用一个资源而排除其他资源。事实上,可以利用多个源来获取有关相同或不同文件的数据。另外,可以从两个或更多个源同时地请求数据,其中使用来自第一个源的数据来响应请求。此外,可以基于包括但不限于可用资源、所预测的响应时间、经济成本、和负载等任意数量的因素, 作出关于应当使用哪一个或多个源的决定。而且,更新组件114不仅可以作出关于向什么源请求数据的决定,还可以作出关于所请求的数据量的决定。根据一个实施例,更新组件114可将请求限于已改变的数据以及不构成以前版本的一部分的新文件。然而,更新组件114可被配置为取得更多的数据。例如,可以预建立、确定或推断关于改变量的阈值。例如,如果文件包括影响超过文件50%的改变,则可以请求整个文件,而不是仅已改变的部分。可以基于多个因素来扼制该阈值,包括客户机和网络负载、以及网络速度和成本等。作为示例,如果存在与网络使用相关联的每数据单位(例如,千字节、兆字节……)经济成本,则该阈值可被设置为高值,该高值指示在作出对整个文件的请求之前文件的百分比改变将需要接近(若不等于)100%。参考若干组件之间的交互已经描述了上述系统、架构、环境等。应该理解,这样的系统和组件可以包括那些组件或其中指定的子组件,某些指定的组件或子组件,和/或附加的组件。子组件也可以被实现为在通信上被耦合到其他组件而不是被包括在父组件中的组件。此外,一个或多个组件和/或子组件可以结合成提供聚集功能的单个组件。系统、组件、和/或子组件之间的通信可以根据推送(push)和/或拉取(pull)模型来实现。各组件也可以与一个或多个其他组件进行交互,出于简要考虑在此未具体描述该组件,但本领域的技术人员均已知。
此外,以上公开系统以及以下方法的各个部分可以包括或包含基于人工智能、机器学习或知识或规则的组件、子组件、进程、装置、方法或机制(例如,支持向量机、神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎、分类器等)。这样的组件和其它组件可以自动化执行某些机制或进程,由此使得系统和方法的各部分更为自适应、高效及智能。作为示例而非限制,更新组件114可以利用这些机制来确定或推断要取得的数据量以及将从哪一个或多个源请求数据。考虑到以上描述的示例性系统,参考图7-11的流程图将可以更好地理解依照所公开的主题实现的方法。尽管为了说明简洁起见,作为一系列框示出和描述了方法,但是, 应该理解,所要求保护的主题不仅限于所描述框的顺序,一些框可以按与此处所描绘和描述的不同的顺序进行和/或与其它框并发地进行。此外,并非全部所示出的框都是实现下面所描述的方法所必需的。参考图7,描绘了更新虚拟应用的方法700。在附图标记710,确定应用的第一版本与应用的第二版本之间的差别。例如,与文件块相关联的散列码可被用于确定该文件的一部分且因此该文件本身是否不同。在标记720,可以创建到第一和第二版本中的相同文件的硬链接。换言之,未从第一版本变为第二版本的文件被链接到用于第一版本的文件位置,而不是为第二版本进行重复的复制。在附图标记730,相对于一个或多个源,启动对第一版本和第二版本的文件之间的差别的流传输或下载,该一个或多个源包括但不限于服务器、代理、客户机、和/或客户机数据存储。图8是便于应用更新的预处理方法800的流程图。在附图标记810,获取下一个包文件。在标记820,作出关于包的全部文件是否已被处理,或者换言之是否已经到达文件列表的结尾的判断。如果已经到达结尾(“是”),指示全部包文件已被处理,则方法800终止。 然而,如果尚未到达结尾(“否”),则为包括元数据(例如,文件名称、大小……)但在其他方面缺少内容的特定文件创建稀疏文件。随后在840进行关于稀疏文件的创建是否成功的检查。如果创建成功(“是”),则方法800循环回到获得下一个包文件的附图标记810。如果创建不成功(“否”),则方法800前进至850,在850处以前已执行的预处理,或阶段操作被回退(未完成撤销),且方法800终止。图9示出一种更新虚拟应用的方法900。在附图标记910,从新包获取文件,或以其他方式相对于新包标识文件。在标记920,作出关于包中的全部文件是否已被处理,或者换言之是否已经到达文件列表的结尾的决定。如果全部文件已被处理(“是”),则方法900 终止。或者(“否”),方法900继续至930,作出文件是否存在于旧包中的判断。如果它不存在于旧包中(“否”),则方法900继续至940,对该文件的下载被启动或被排队,并且方法 900循环回到附图标记910。如果该文件存在于旧包中(“是”),则方法900继续至950,例如通过对与文件或文件的部分相关联的散列码进行比较,作出新文件相对于对应的旧文件是否未改变的决定。如果文件未改变(“是”),则方法900前进至960,在旧文件和新文件之间创建硬链接,使得新文件与驻留的旧文件的位置相关联。接下来,在附图标记910获取新的包文件。然而,如果在950确定文件已经改变(“否”),则方法900继续至970,从文件复制具有匹配散列码的块并将其添加到新文件。换言之,从旧文件复制未从旧文件变为新文件的数据部分,并将其添加到新文件。在附图标记980,启动对文件的不匹配块的下载。 接下来,经复制的数据和已获取的数据可被组合构成新文件。接着,方法900返回到附图标记910以获取下一个文件,直到全部文件已被处理。图10描绘了更新虚拟应用的方法1000。在附图标记1010,创建新目录。新目录可以是稀疏目录,并且包括一个或多个稀疏文件,该稀疏文件包括关于文件的信息但缺少文件内容。在标记1012,从稀疏目录获取新的包文件,或者稀疏目录以其他方式标识新的包文件。在1014进行包中的全部文件是否已被处理,或者换言之是否已经到达包或文件列表的结尾的检查。如果全部包文件已被处理(“是”),则方法1000终止。或者(“是”),方法继续至标记1016,作出相对于文件的旧版本或以前版本新文件是否已经改变的判断。如果文件尚未改变(“否”),则方法继续至1018,在旧和新文件路径之间创建硬链接,并且随后在标记1012获取或标识新文件。如果文件已经改变(“是”),则方法1000前进至1020, 试图从旧包的对应旧文件复制文件的至少部分(例如,未改变的)。如果在标记1022确定 1020的复制动作成功,或换言之未失败(“否”),则方法继续至1024,启动已改变块的流传输或下载。接下来,方法1000返回获取下一个文件的标记1012。然而,如果在1022确定 1020的复制动作失败(“是”),则方法1000前进至1026,启动整个文件的流传输,并且循环回到标记1012以获取或识别下一个文件。图11是从源获取已改变的数据的方法1100的流程图。在附图标记1110,向代理请求整个文件和/或文件块。在1120作出关于该请求是否失败,或换言之不是富有成效的判断。如果请求返回所请求的结果(“否”),则方法1100终止。或者,如果请求失败(“是”), 则方法1100继续至1030,向本地计算机请求整个文件和/或文件块。换言之,可以相对于另一个本地计算机进行对已改变的数据的有线或无线请求。如果在1140请求返回了结果, 则方法1100终止。或者(“是”),方法1100前进至1150,向单个机器上的替代用户存储进行对整个文件和/或块的请求。如果请求成功,或换言之未失败(“否”),则方法1100终止。如果请求未能产生所请求的数据(“是”),则方法1100继续至附图标记1170,向诸如虚拟应用服务器等服务器请求整个文件和/或文件块,并且方法1100终止。总而言之,可以从除应用服务器以外的很多其他数据源之一请求整个文件和/或文件块,并且如果很多其他数据源可以提供所请求的数据,则可以节省广域网络带宽。此处使用的术语“组件”和“系统”及其各种形式旨在表示与计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是但不限于是,在处理器上运行的进程、处理器、对象、实例、可执行程序、执行的线程、程序和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可驻留在进程和 /或执行的线程内,并且组件可位于一个计算机上和/或分布在两个或更多的计算机之间。在本文中使用的词语“示例性”或其各种形式意味着用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。此外,各示例只是出于清楚和理解的目的来提供的并且并不意味着以任何方式限制或约束所要求保护主题或本发明的相关部分。可以理解,本来可呈现不同范围的多个附加或替换示例,但出于简明的目的已被省略。如此处所使用,术语“推论”或“推断”通常指的是从经由事件和/或数据捕捉的一组观察结果来推理或推断系统、环境、和/或用户的状态的过程。可以使用推断来标识特定上下文或动作,也可以生成例如状态上的概率分布。推断可以是概率性的,即,基于对数据和事件的考虑,计算在感兴趣状态上的概率分布。推断也可以是指用于从一组事件和/或数据构成较高级别的事件的技术。这样的推断导致从一组观察到的事件和/或存储的事件数据构建新的事件或动作,不管事件在时间上是否紧密相关,以及事件和数据是来自一个还是多个事件和数据源。可采用各种分类方案和/或系统(例如,支持向量机、神经网络、 专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎……)来执行关于所要求保护主题的自动化和/或推断的动作。而且,对于在详细描述或权利要求书中使用术语“包括”、“包含”、“具有”、“含有” 或其它形式的变型而言,这样的术语旨在以类似于术语“包括”的方式体现包含性,如同“包括”在用作权利要求书中的过渡词时所解释的那样。为了为所要求保护主题提供上下文,图12以及以下讨论旨在提供对其中可以实现本主题的各方面的合适环境的简要、概括描述。然而,合适的环境只是示例并且并非旨在对使用范围或功能提出任何限制。尽管能够在可以在一台或多台计算机上运行的程序的计算机可执行指令的一般上下文中描述以上公开的系统和方法,但是,本领域的技术人员将认识到,各方面也可以与其他程序模块等相结合地实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件和数据结构等。此外,本领域技术人员可以理解,上述系统和方法可用各种计算机系统配置实现,包括单处理器、多处理器或多核处理器计算机系统、小型计算设备、大型计算机、以及个人计算机、手持式计算设备(例如,个人数字助理(PDA)、电话、 手表……)、基于微处理器或可编程消费者或工业电子设备等。各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。然而,所要求保护主题的某些方面,如果不是所有方面的话,可以在独立计算机上实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中的一个或两者中。参考图12,示出了示例通用计算机1210或计算设备(例如,台式机、膝上型计算机、服务器、手持式设备、可编程消费或工业电子产品、机顶盒、游戏系统……)。计算机1210 包括一个或多个处理器1220、存储器1230、系统总线1M0、大容量存储1250、以及一个或多个接口组件1270。系统总线1240与至少上述系统组件通信地耦合。然而,可以理解,在其最简单的形式中,计算机1210可包括耦合到存储器1230的一个或多个处理器1220,该一个或多个处理器1220执行存储在存储器1230中的各种计算机可执行动作、指令和或组件。处理器1220可以用通用处理器、数字信号处理器(DSP)、应用程序专用集成电路 (ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或被设计为执行此处描述的功能的其任意组合来实现。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何处理器、控制器、微控制器、或状态机。处理器1220 还可被实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、多核处理器、 结合一个DSP核的一个或多个微处理器、或任何其它这种配置。计算机1210可包括各种计算机可读介质或以其他方式与各种计算机可读介质交互以便于控制计算机1210来实现所要求保护主题的一个或多个方面。计算机可读介质可以是能由计算机1210访问的任何可用介质,并包含易失性和非易失性介质以及可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,存储器设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)……)、磁存储设备(例如,硬盘、软盘、磁带盒、磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、以及固态设备(例如, 固态驱动器(SSD)、闪存驱动器(例如,卡、棒、键驱动器……)……)、或者可用于存储所需信息并且可由计算机1210访问的任何其它介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号” 是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RFjl 外及其他无线介质之类的无线介质。上面各项中的任何项的组合也应该包括在计算机可读介质的范围内。存储器1230和大容量存储1250是计算机可读存储介质的示例。取决于计算设备的确切配置和类型,存储器1230可以是易失性的(例如RAM)、非易失性的(例如ROM、闪存……)或是两者的某种组合。作为示例,基本输入/输出系统(BIOS),包括诸如在启动期间在计算机1210内的元件之间传输信息的基本例程,可被存储在非易失性存储器中,而易失性存储器可担当外部高速缓存存储器以便于处理器1220的处理等。大容量存储1250包括相对于存储器1230用于存储大量数据的可移动/不可移动、易失性/非易失性计算机存储介质。例如,大容量存储1250包括但不限于,诸如磁盘或光盘驱动器、软盘驱动器、闪存存储器、固态驱动器、或记忆棒的一个或多个设备。存储器1230和大容量存储1250可包括或其中存储有操作系统1沈0、一个或多个应用1沈2、一个或多个程序模块1264和数据1266。操作系统1260用于控制和分配计算机 1210的资源。应用1262包括系统和应用软件之一或两者,并且可利用操作系统1260对资源的管理通过存储在存储器1230和/或大容量存储1250中的程序模块1264和数据1266 来执行一个或多个动作。因此,应用1262可根据由此提供的逻辑来将通用计算机1210变成专用机器。所要求保护主题的全部或各部分可以使用产生控制计算机以实现所公开功能的软件、固件、硬件或其任意组合的标准编程和/或工程技术来实现。作为示例而非限制,流组件112和更新组件114或其部分可以是或形成应用1262的一部分,并且包括存储在存储器中和/或大容量存储1250中的一个或多个模块1264以及数据1沈6,其功能可在由一个或多个处理器1220执行时被实现。根据一个特定实施例,处理器1220可与片上系统(SOC)或在单个集成电路基座上包括或换言之集成硬件和软件的类似体系结构相对应。此处,处理器1220可包括至少与处理器1220和存储器1230相似的一个或多个处理器以及存储器等。常规处理器包括最少量的硬件和软件并且广泛依赖于外部硬件和软件。作为对比,处理器的SOC实现更强大,因为它将硬件和软件嵌入其中以能够用最少的硬件和软件或不依赖于外部硬件和软件来启用特定功能。例如,流组件112、更新组件114、和/或相关联的功能可被嵌入到SOC体系结构中的硬件内。计算机1210还包括通信地耦合到系统总线1240并方便与计算机1210的交互的一个或多个接口组件1270。作为示例,接口组件1270可以是端口(例如,串行、并行、PCMCIA、USB、火线……)或接口卡(例如,声音、视频……)等等。在一个示例实现中,接口组件1270可被具体化为用户输入/输出接口,该用户输入/输出接口使得用户能够通过一个或多个输入设备(例如,诸如鼠标的指向设备、跟踪球、指示笔、触摸垫、键盘、话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、相机、其他计算机……)来将命令和信息输入到计算机1210中。在另一示例实现中,接口组件1270可被具体化为输出外围接口,该输出外围接口向显示器(例如,CRT、LCD、等离子……)、扬声器、打印机和/或其它计算机等提供输出。 此外,接口组件1270可被具体化为网络接口,该网络接口使得能够诸如通过有线或无线通信链路与其他计算设备(未示出)通信。 以上所已经描述的内容包括所要求保护主题的各方面的示例。当然,出于描绘所要求保护主题的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,所要求保护主题的许多进一步的组合和排列都是可能的。从而,所公开的主题旨在涵盖落入所附权利要求书的精神和范围内的所有这样的变更、修改和变化。
权利要求
1.一种更新虚拟应用的方法,包括利用被配置成执行存储在存储器中的计算机可执行指令的至少一个处理器来执行以下动作将虚拟应用的已加载的第一版本与所述虚拟应用的第二版本的元数据进行比较;以及文件未从所述第一版本变为所述第二版本时,创建到所述第一版本的所述文件的硬链接。
2.如权利要求1所述的方法,其特征在于,还包括如果所述文件从所述第一版本变为所述第二版本,启动对所述文件的至少一部分的获取。
3.如权利要求2所述的方法,其特征在于,启动从代理对所述文件的所述至少一部分的获取。
4.如权利要求1所述的方法,其特征在于,还包括在相对于所述第一版本和所述第二版本所述文件不同时,启动从源对所述文件作为整体的获取。
5.如权利要求4所述的方法,其特征在于,当改变量达到或超过阈值时,启动对所述文件的获取。
6.一种便于对虚拟应用的更新的系统,包括耦合到存储器的处理器,所述处理器被配置成执行以下存储在所述存储器中的计算机可执行组件第一组件,被配置为将应用包的已加载的旧版本与所述应用包的新版本进行比较; 第二组件,被配置为在未改变的文件的所述新版本与所述旧版本之间创建硬链接;以及第三组件,被配置为启动从源对已改变的文件的至少一部分的获取。
7.如权利要求6所述的系统,其特征在于,还包括第四组件,被配置为复制来自所述应用包的所述旧版本的对应文件中的所述已改变的文件的一部分。
8.如权利要求6所述的系统,其特征在于,所述第三组件被配置为启动从所述源对新文件的获取,所述新文件对所述新版本是唯一的。
9.如权利要求6所述的系统,其特征在于,所述第三组件被配置为基于改变程度,启动从所述源对整个已改变的文件的获取。
10.如权利要求6所述的系统,其特征在于,所述源是代理。
全文摘要
启用高效的虚拟应用更新。可将虚拟应用的旧版本与该虚拟应用的新版本进行比较,并据此来更新。未从旧版本变为新版本的文件可被从新版本硬链接到旧版本。对于已改变的文件,可将文件的匹配部分从旧版本复制到新版本,并且可从另一个源获取剩余的不匹配部分。
文档编号G06F9/445GK102520991SQ201110393809
公开日2012年6月27日 申请日期2011年11月22日 优先权日2010年11月23日
发明者C·凯凯, K·廷克, K·雷厄森, P·摩根 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1