CN102520991A - 高效的虚拟应用更新 - Google Patents

高效的虚拟应用更新 Download PDF

Info

Publication number
CN102520991A
CN102520991A CN2011103938091A CN201110393809A CN102520991A CN 102520991 A CN102520991 A CN 102520991A CN 2011103938091 A CN2011103938091 A CN 2011103938091A CN 201110393809 A CN201110393809 A CN 201110393809A CN 102520991 A CN102520991 A CN 102520991A
Authority
CN
China
Prior art keywords
file
version
assembly
bag
data
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.)
Pending
Application number
CN2011103938091A
Other languages
English (en)
Inventor
P·摩根
C·凯凯
K·廷克
K·雷厄森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102520991A publication Critical patent/CN102520991A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

启用高效的虚拟应用更新。可将虚拟应用的旧版本与该虚拟应用的新版本进行比较,并据此来更新。未从旧版本变为新版本的文件可被从新版本硬链接到旧版本。对于已改变的文件,可将文件的匹配部分从旧版本复制到新版本,并且可从另一个源获取剩余的不匹配部分。

Description

高效的虚拟应用更新
技术领域
本申请涉及虚拟化技术,尤其涉及高效的虚拟应用更新。
背景技术
应用虚拟化是使软件应用能够从操作系统解耦的技术集合。虚拟应用作为服务被部署在计算机上,而不是传统意义上被直接地安装到计算机。然而,虚拟应用如同它被安装在计算机上一样执行。在某种意义上,应用被欺骗以相信它被安装并且与计算机操作系统直接地进行接口。这可以通过将应用封装在虚拟环境或虚拟化层中来实现,该虚拟环境或虚拟化层截取文件和应用的其他操作,并且将这些操作重定向到虚拟化位置。
应用虚拟化具有若干益处。具体而言,应用经由虚拟环境彼此隔离并且至少一定程度上与执行计算机相隔离。因此,可以同时运行多个应用,包括以其他方式不兼容或冲突的应用。此外,可以在除应用为之设计的环境以外的环境中运行应用。另外,隔离保护其他应用和底层操作系统以免被糟糕地编写或避免有缺陷的代码。
虚拟化应用包括多个部分。第一部分是应用资产或资源所驻留的包文件。此包包括在计算机上运行应用所必要的数据和元数据。这些资源包括但不限于文件和目录结构。在运行时,虚拟应用包括在计算机上运行的这些资源或名字空间。通过虚拟化,资源名字空间和本机名字空间可被缝合在一起,以便应用能够找到其资源。
发明内容
下面呈现了简化的发明内容,以便提供对所公开主题的某些方面的基本概念。本发明内容不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更具体实施例的序言。
简言之,本公开一般涉及高效的虚拟应用更新。可以在应用的旧版本文件与相同的应用的新版本文件之间进行比较。如果新文件相对于对应的旧文件未被改变,则可以创建将新文件与旧文件相关联的硬链接,而不是产生复制副本。如果文件已经改变,则可以从旧文件复制新文件的未改变部分,并且可以从诸如服务器、代理、客户机、和/或客户机数据存储等源发起对已改变部分的获取。
为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本发明的其他优点和新颖特征将变得显而易见。
附图说明
图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包括V1包122,该V1包122包括应用的可执行文件和元数据。流组件112可以向服务器130请求V1包122。作为响应,服务器130可以从服务器数据存储140检索V1包122,并且跨通信网络150将V1包122传送回到相对于客户机110的流组件112流组件112可以随后将V1包122加载到可与本地高速缓存相对应的客户机数据存储120。另外,由于流传输过程,包的各部分可以在它们被接收时被加载,直到整个包已经到达。
简要地将注意力转向图2,描绘了示例性应用包200。如所示的,应用包包括头210、文件数据220、块图230和中央目录240。头210提供关于应用包的概要信息(例如大小、偏移量……)。文件数据220与实现应用的功能的多个可执行和不可执行文件相对应。块图230是为客户机提供将本地文件中的一个偏移量转换为包中的偏移量的方法的元数据文件。此外,块图230提供块级散列以预防篡改,以及启用对块之间的差别的计算。中央目录240包括关于文件和子目录的元数据。例如,如果应用包括文件“foo.exe”和具有文件“alpha.dll”和“beta.dll”的子目录“bar”,则中央目录240将包括在本地系统上重新创建该分层结构所必要的信息(例如,称为“foo.exe”的文件、包括两个文件“alpha.dll”和“beta.dll”的目录“bar”)。
返回图1,如前面提到的,流组件112可以联系服务器130并且下载V1包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将确定该文件相对于V1包122是否改变。可以通过对旧文件和新文件之间的块的散列进行比较来作出该确定。已更新版本中尚未被改变的文件可以由更新组件114来硬链接,例如如箭头所示的从V1包位置到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,V1包122将被更新到V2包124,则(能的话)可以查询并利用第二客户机数据存储630来获取已改变的数据或者相对于旧版本V1包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、系统总线1240、大容量存储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访问的任何其它介质。
通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上面各项中的任何项的组合也应该包括在计算机可读介质的范围内。
存储器1230和大容量存储1250是计算机可读存储介质的示例。取决于计算设备的确切配置和类型,存储器1230可以是易失性的(例如RAM)、非易失性的(例如ROM、闪存……)或是两者的某种组合。作为示例,基本输入/输出系统(BIOS),包括诸如在启动期间在计算机1210内的元件之间传输信息的基本例程,可被存储在非易失性存储器中,而易失性存储器可担当外部高速缓存存储器以便于处理器1220的处理等。
大容量存储1250包括相对于存储器1230用于存储大量数据的可移动/不可移动、易失性/非易失性计算机存储介质。例如,大容量存储1250包括但不限于,诸如磁盘或光盘驱动器、软盘驱动器、闪存存储器、固态驱动器、或记忆棒的一个或多个设备。
存储器1230和大容量存储1250可包括或其中存储有操作系统1260、一个或多个应用1262、一个或多个程序模块1264和数据1266。操作系统1260用于控制和分配计算机1210的资源。应用1262包括系统和应用软件之一或两者,并且可利用操作系统1260对资源的管理通过存储在存储器1230和/或大容量存储1250中的程序模块1264和数据1266来执行一个或多个动作。因此,应用1262可根据由此提供的逻辑来将通用计算机1210变成专用机器。
所要求保护主题的全部或各部分可以使用产生控制计算机以实现所公开功能的软件、固件、硬件或其任意组合的标准编程和/或工程技术来实现。作为示例而非限制,流组件112和更新组件114或其部分可以是或形成应用1262的一部分,并且包括存储在存储器中和/或大容量存储1250中的一个或多个模块1264以及数据1266,其功能可在由一个或多个处理器1220执行时被实现。
根据一个特定实施例,处理器1220可与片上系统(SOC)或在单个集成电路基座上包括或换言之集成硬件和软件的类似体系结构相对应。此处,处理器1220可包括至少与处理器1220和存储器1230相似的一个或多个处理器以及存储器等。常规处理器包括最少量的硬件和软件并且广泛依赖于外部硬件和软件。作为对比,处理器的SOC实现更强大,因为它将硬件和软件嵌入其中以能够用最少的硬件和软件或不依赖于外部硬件和软件来启用特定功能。例如,流组件112、更新组件114、和/或相关联的功能可被嵌入到SOC体系结构中的硬件内。
计算机1210还包括通信地耦合到系统总线1240并方便与计算机1210的交互的一个或多个接口组件1270。作为示例,接口组件1270可以是端口(例如,串行、并行、PCMCIA、USB、火线……)或接口卡(例如,声音、视频……)等等。在一个示例实现中,接口组件1270可被具体化为用户输入/输出接口,该用户输入/输出接口使得用户能够通过一个或多个输入设备(例如,诸如鼠标的指向设备、跟踪球、指示笔、触摸垫、键盘、话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、相机、其他计算机……)来将命令和信息输入到计算机1210中。在另一示例实现中,接口组件1270可被具体化为输出外围接口,该输出外围接口向显示器(例如,CRT、LCD、等离子……)、扬声器、打印机和/或其它计算机等提供输出。此外,接口组件1270可被具体化为网络接口,该网络接口使得能够诸如通过有线或无线通信链路与其他计算设备(未示出)通信。
以上所已经描述的内容包括所要求保护主题的各方面的示例。当然,出于描绘所要求保护主题的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,所要求保护主题的许多进一步的组合和排列都是可能的。从而,所公开的主题旨在涵盖落入所附权利要求书的精神和范围内的所有这样的变更、修改和变化。

Claims (10)

1.一种更新虚拟应用的方法,包括:
利用被配置成执行存储在存储器中的计算机可执行指令的至少一个处理器来执行以下动作:
将虚拟应用的已加载的第一版本与所述虚拟应用的第二版本的元数据进行比较;以及
文件未从所述第一版本变为所述第二版本时,创建到所述第一版本的所述文件的硬链接。
2.如权利要求1所述的方法,其特征在于,还包括如果所述文件从所述第一版本变为所述第二版本,启动对所述文件的至少一部分的获取。
3.如权利要求2所述的方法,其特征在于,启动从代理对所述文件的所述至少一部分的获取。
4.如权利要求1所述的方法,其特征在于,还包括在相对于所述第一版本和所述第二版本所述文件不同时,启动从源对所述文件作为整体的获取。
5.如权利要求4所述的方法,其特征在于,当改变量达到或超过阈值时,启动对所述文件的获取。
6.一种便于对虚拟应用的更新的系统,包括:
耦合到存储器的处理器,所述处理器被配置成执行以下存储在所述存储器中的计算机可执行组件:
第一组件,被配置为将应用包的已加载的旧版本与所述应用包的新版本进行比较;
第二组件,被配置为在未改变的文件的所述新版本与所述旧版本之间创建硬链接;以及
第三组件,被配置为启动从源对已改变的文件的至少一部分的获取。
7.如权利要求6所述的系统,其特征在于,还包括第四组件,被配置为复制来自所述应用包的所述旧版本的对应文件中的所述已改变的文件的一部分。
8.如权利要求6所述的系统,其特征在于,所述第三组件被配置为启动从所述源对新文件的获取,所述新文件对所述新版本是唯一的。
9.如权利要求6所述的系统,其特征在于,所述第三组件被配置为基于改变程度,启动从所述源对整个已改变的文件的获取。
10.如权利要求6所述的系统,其特征在于,所述源是代理。
CN2011103938091A 2010-11-23 2011-11-22 高效的虚拟应用更新 Pending CN102520991A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/953,091 2010-11-23
US12/953,091 US20120131566A1 (en) 2010-11-23 2010-11-23 Efficient virtual application update

Publications (1)

Publication Number Publication Date
CN102520991A true CN102520991A (zh) 2012-06-27

Family

ID=46065642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011103938091A Pending CN102520991A (zh) 2010-11-23 2011-11-22 高效的虚拟应用更新

Country Status (7)

Country Link
US (1) US20120131566A1 (zh)
EP (1) EP2643754A4 (zh)
JP (1) JP2014502396A (zh)
CN (1) CN102520991A (zh)
AU (1) AU2011332237A1 (zh)
CA (1) CA2816419A1 (zh)
WO (1) WO2012071141A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104049968A (zh) * 2013-03-15 2014-09-17 国际商业机器公司 普及环境中的元数据驱动版本管理服务的方法和系统
CN111026430A (zh) * 2013-05-20 2020-04-17 派克赛泽有限责任公司 本地或分布式计算机系统上的柔性节点组成的方法和系统

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009132261A1 (en) * 2008-04-25 2009-10-29 Vmware, Inc. Updating a file using differences and file format therefor
US9141384B2 (en) * 2011-07-26 2015-09-22 Verizon Patent And Licensing Inc. System and method for enforcing application adoption
US8776043B1 (en) * 2011-09-29 2014-07-08 Amazon Technologies, Inc. Service image notifications
US9626700B1 (en) 2011-09-29 2017-04-18 Amazon Technologies, Inc. Aggregation of operational data for merchandizing of network accessible services
CN103677876A (zh) * 2012-09-12 2014-03-26 中兴通讯股份有限公司 一种软件安装包制作安装方法、设备及系统
JP5873825B2 (ja) * 2013-02-28 2016-03-01 京セラドキュメントソリューションズ株式会社 電子機器、及びアプリケーション記憶プログラム
US9280338B1 (en) * 2013-03-11 2016-03-08 Amazon Technologies, Inc. Dynamic application updates
US9720669B2 (en) * 2013-05-30 2017-08-01 The Boeing Company Deployment of software across an enterprise system
AU2015255887A1 (en) 2014-05-07 2016-10-13 Visa International Service Association Enhanced data interface for contactless communications
CN105404521B (zh) * 2014-05-30 2017-05-31 广州市动景计算机科技有限公司 一种增量升级方法及相关装置
SG11201702277UA (en) 2014-10-10 2017-04-27 Visa Int Service Ass Methods and systems for partial personalization during mobile application update
WO2016111673A1 (en) 2015-01-05 2016-07-14 Hewlett Packard Enterprise Development Lp Multi-tenant upgrading
EP3255839B1 (en) * 2015-02-03 2024-04-24 Nec Corporation Virtual network system, virtual network control method, virtual network function database, integrated control device, control device, and control method and control program therefor
US11314546B2 (en) * 2016-11-18 2022-04-26 Data Accelerator Ltd Method and system for executing a containerized stateful application on a stateless computing platform using machine learning
US11669675B2 (en) 2016-11-23 2023-06-06 International Business Machines Corporation Comparing similar applications with redirection to a new web page
US10664262B2 (en) * 2017-08-29 2020-05-26 Crowdstrike, Inc. Binary suppression and modification for software upgrades
US11340894B2 (en) 2019-04-30 2022-05-24 JFrog, Ltd. Data file partition and replication
US11106554B2 (en) 2019-04-30 2021-08-31 JFrog, Ltd. Active-active environment control
US11886390B2 (en) * 2019-04-30 2024-01-30 JFrog Ltd. Data file partition and replication
US11386233B2 (en) 2019-04-30 2022-07-12 JFrog, Ltd. Data bundle generation and deployment
US10972289B2 (en) 2019-07-19 2021-04-06 JFrog, Ltd. Software release verification
US10999314B2 (en) 2019-07-19 2021-05-04 JFrog Ltd. Software release tracking and logging
US11695829B2 (en) 2020-01-09 2023-07-04 JFrog Ltd. Peer-to-peer (P2P) downloading
US11860680B2 (en) 2020-11-24 2024-01-02 JFrog Ltd. Software pipeline and release validation
US12061889B2 (en) 2021-10-29 2024-08-13 JFrog Ltd. Software release distribution across a hierarchical network
US11886849B2 (en) * 2022-01-20 2024-01-30 Dell Products L.P. System and method to compare modules for the common code, remove the redundancy and run the unique workflows
US11977880B2 (en) * 2022-05-19 2024-05-07 Kore.Ai, Inc. Systems and methods for comparing versions of a virtual assistant

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090249324A1 (en) * 2008-03-31 2009-10-01 Microsoft Corporation Virtualized application image patching
US20090271779A1 (en) * 2008-04-25 2009-10-29 Vmware, Inc. Updating a file using differences and file format therefor
CN101587736A (zh) * 2004-07-22 2009-11-25 松下电器产业株式会社 用于执行应用程序同步重放的重放装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0644079A (ja) * 1992-07-27 1994-02-18 Nec Corp 情報処理装置
EP1314092A4 (en) * 2000-08-02 2006-09-27 Ipass Inc METHOD AND SYSTEM FOR CUSTOMIZING AND UPDATING A NETWORK CONNECTION APPLICATION FOR BROADCAST USE TO MULTIPLE END USERS
JP4221892B2 (ja) * 2000-11-02 2009-02-12 ソニー株式会社 ナビゲーション装置におけるプログラム書き換え方法、およびナビゲーション装置
US20020065919A1 (en) * 2000-11-30 2002-05-30 Taylor Ian Lance Peer-to-peer caching network for user data
JP2004302953A (ja) * 2003-03-31 2004-10-28 Seiko Epson Corp 端末装置およびクライアントサーバシステム
JP2005128894A (ja) * 2003-10-24 2005-05-19 Sanyo Electric Co Ltd 不揮発性メモリ書き換え装置
US7383289B2 (en) * 2003-12-02 2008-06-03 Sap Aktiengesellschaft Updating and maintaining data in a multi-system network using asynchronous message transfer
US7373451B2 (en) * 2003-12-08 2008-05-13 The Board Of Trustees Of The Leland Stanford Junior University Cache-based system management architecture with virtual appliances, network repositories, and virtual appliance transceivers
US7546594B2 (en) * 2003-12-15 2009-06-09 Microsoft Corporation System and method for updating installation components using an installation component delta patch in a networked environment
JP2007006119A (ja) * 2005-06-23 2007-01-11 Fuji Xerox Co Ltd 画像読取装置、画像形成装置、画像処理システムおよびそのシステム成立方法
US8291093B2 (en) * 2005-12-08 2012-10-16 Microsoft Corporation Peer-to-peer remediation
JP2007310783A (ja) * 2006-05-22 2007-11-29 Sharp Corp 画像形成装置におけるファームウェアのアップデート方法、プログラム、記録媒体
JP4504969B2 (ja) * 2006-12-18 2010-07-14 みずほ情報総研株式会社 データ更新処理装置、データ更新処理方法及びデータ更新処理プログラム
JP4539676B2 (ja) * 2007-04-19 2010-09-08 コニカミノルタビジネステクノロジーズ株式会社 画像形成装置、プログラム更新システム、プログラム更新方法およびプログラム更新プログラム
US8990215B1 (en) * 2007-05-21 2015-03-24 Amazon Technologies, Inc. Obtaining and verifying search indices
JP2009122866A (ja) * 2007-11-13 2009-06-04 Sharp Corp 電子ファイル記憶装置および電子ファイル記憶方法
US8572580B2 (en) * 2008-07-28 2013-10-29 Microsoft Corporation Computer application packages with customizations
US8464242B2 (en) * 2009-07-08 2013-06-11 Tranxition Corporation Virtualization of configuration settings

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101587736A (zh) * 2004-07-22 2009-11-25 松下电器产业株式会社 用于执行应用程序同步重放的重放装置
US20090249324A1 (en) * 2008-03-31 2009-10-01 Microsoft Corporation Virtualized application image patching
US20090271779A1 (en) * 2008-04-25 2009-10-29 Vmware, Inc. Updating a file using differences and file format therefor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KATARZYNA KEAHEY等: "From Sandbox to Playground:Dynamic Virtual Environments in the Grid", 《PROCEEDINGS OF THE FIFTH IEEE/ACM INTERNATIONAL WORKSHOP ON GRID COMPUTING》, 8 November 2004 (2004-11-08) *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104049968A (zh) * 2013-03-15 2014-09-17 国际商业机器公司 普及环境中的元数据驱动版本管理服务的方法和系统
CN104049968B (zh) * 2013-03-15 2017-12-12 国际商业机器公司 普及环境中的元数据驱动版本管理服务的方法和系统
CN111026430A (zh) * 2013-05-20 2020-04-17 派克赛泽有限责任公司 本地或分布式计算机系统上的柔性节点组成的方法和系统
CN111026430B (zh) * 2013-05-20 2023-10-13 派克赛泽有限责任公司 本地或分布式计算机系统上的柔性节点组成的方法和系统

Also Published As

Publication number Publication date
US20120131566A1 (en) 2012-05-24
AU2011332237A1 (en) 2013-05-30
WO2012071141A2 (en) 2012-05-31
JP2014502396A (ja) 2014-01-30
WO2012071141A3 (en) 2012-07-19
EP2643754A4 (en) 2014-05-21
CA2816419A1 (en) 2012-05-31
EP2643754A2 (en) 2013-10-02

Similar Documents

Publication Publication Date Title
CN102520991A (zh) 高效的虚拟应用更新
CN103493011A (zh) 与库操作系统的应用兼容性
CN101809566B (zh) 高效的文件散列标识符计算
JP4901095B2 (ja) 不揮発性ストレージにカスタム・ソフトウェア・イメージ・アップデートを適用するフェイルセーフな方法
US10810017B2 (en) Systems and methods for handling firmware driver dependencies in host operating systems while applying updates from bootable image file
Gilbert et al. Pocket ISR: Virtual machines anywhere
US20130067449A1 (en) Application packages using block maps
CN102521081A (zh) 修复遭破坏的软件
CN103608798A (zh) 集群文件服务
CN102124437A (zh) 包括虚拟盘的计算机的恢复
KR20080059583A (ko) 개인용 인터넷 커뮤니케이터용 하드 드라이브를 위한 부팅성능 최적화
CN102150136A (zh) 固件更新系统、以及更新镜像生成/分发服务器装置
US10331427B2 (en) Capturing and deploying an operation system in a computer environment
US20220368613A1 (en) Adaptive Storage Processing For Storage-As-A-Service
CN102567044A (zh) 代码部署协助
US20230273799A1 (en) Storage system with boot volume rollback points
CN115964061A (zh) 插件更新方法、装置、电子设备和计算机可读存储介质
US11630742B2 (en) System and method of performing recovery using a backup image
CN115336237A (zh) 远程存储的文件的预测性供应
CN107667343B (zh) 用于加载按需加载资源的系统和方法
US11341063B2 (en) Systems and methods for safely detecting indeterminate states of ranges in a self-encrypting storage resource
US11340882B2 (en) Systems and methods for enforcing update policies while applying updates from bootable image file
US11347664B1 (en) Shared transient memory storage in basic input/output system environment
US20220374256A1 (en) Information processing system, information processing apparatus, method of controlling the same, and storage medium
US11947495B1 (en) System and method for providing a file system without duplication of files

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150721

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150721

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120627