用于检测和处理对应用程序包作出的对资源的改变的方法和系统转让专利

申请号 : CN200980130471.1

文献号 : CN102105874B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : J·M·希恩K·H·雷厄森

申请人 : 微软公司

摘要 :

可以将在虚拟环境内操作的应用程序组织成含有各种软件组件的包。每一软件组件或资源可以具有专用名和其他元数据,包括用来盖写或修改组件的指示符。策略可以定义可如何基于该指示符来存储和检索对特定软件组件的任何改变。可以生成、留存以及再次应用一个或多个经改变组件集,以便基于原始包创建该应用程序的经定制版本。可以在虚拟应用程序环境内或在专用虚拟机环境内操作该应用程序。

权利要求 :

1.一种用来检测和处理对应用程序包作出的对资源的改变的方法,所述方法包括:创建包括多种资源的第一应用程序包(302),所述多种资源中的每一个具有至少定义用户配置指定和唯一标识符的资源元数据,所述第一应用程序包具有第一版本;

在虚拟环境中执行所述第一应用程序包(306);

在所述执行期间检测对第一资源的改变(308),所述第一资源是所述多种资源中的一个;

评估与所述第一资源相关联的所述元数据(310)并确定应存储所述改变;

按照一策略将所述改变存储在经定制的资源中(312),所述策略被用来分类对经定制资源集的改变,所述经定制的资源与所述第一资源有关,以使得当在另一虚拟环境上下文中重新启用所述第一应用程序时可以代替所述第一资源使用所述经定制的资源。

2.如权利要求1所述的方法,其特征在于,所述方法还包括:接收包括第二多个资源的所述应用程序包的第二版本,所述资源中的每一个具有包括盖写元数据的元数据,所述应用程序包的所述第二版本;

对于所述应用程序包的所述第二版本中的所述多个资源中的第二资源,所述第二资源对应于所述第一资源:评估所述元数据以确定所述第二资源将盖写所述经定制的资源;以及当执行所述应用程序包的所述第二版本时,代替所述经定制的资源使用所述第二资源。

3.如权利要求2所述的方法,其特征在于,所述方法还包括:在虚拟环境中执行所述应用程序包的所述第二版本;

在所述执行期间检测对所述第二资源的改变;

评估与所述第二资源相关联的所述元数据并确定将存储所述改变;

将所述改变存储在第二经改变的资源中,所述第二经改变的资源与所述第二资源有关,以使得当执行所述应用程序包的所述第二版本时可以代替所述第二资源使用所述第二经改变的资源。

4.如权利要求2所述的方法,其特征在于,所述应用程序包的所述第二版本包括差别资源集,所述差别资源集包括用于所述第一应用程序包的子集的经更新的资源。

5.如权利要求2所述的方法,其特征在于,所述应用程序包的所述第二版本包括构成所述应用程序包的所述第二版本的所述资源的完全集。

6.如权利要求2所述的方法,其特征在于,通过比较资源名称来确定所述对应。

7.如权利要求2所述的方法,其特征在于,使用查找表来确定所述对应。

8.如权利要求7所述的方法,其特征在于,所述查找表包括全局唯一标识符。

9.如权利要求1所述的方法,其特征在于,所述方法还包括:接收包括第二多个资源的所述应用程序包的第二版本,所述资源中的每一个具有包括盖写元数据的元数据,所述应用程序包的所述第二版本;

对于所述应用程序包的所述第二版本中的所述多个资源中的第二资源,所述第二资源对应于所述第一资源:评估所述元数据以确定所述经定制的资源将盖写所述第二资源;以及当执行所述应用程序包的所述第二版本时,代替所述第二资源使用所述经定制的资源。

10.如权利要求1所述的方法,其特征在于,所述虚拟环境是虚拟机环境。

11.如权利要求1所述的方法,其特征在于,所述虚拟环境是虚拟应用程序环境。

12.如权利要求1所述的方法,其特征在于,所述方法还包括:创建所述应用程序的所述第一版本的经用户修改的版本。

13.如权利要求12所述的方法,其特征在于,所述经用户修改的版本包括经用户修改的资源集和所述应用程序包的所述第一版本。

14.如权利要求12所述的方法,其特征在于,所述经用户修改的版本包括所述应用程序包的所述第一版本的经用户修改的包。

15.一种用来检测和处理对应用程序包作出的对资源的改变的系统,所述系统包括:被配置成在虚拟环境中执行第一应用程序包的执行引擎(210),所述第一应用程序包包括所述应用程序的第一版本且还包括多个资源盖写元数据;以及运行时改变管理器(214),所述运行时管理器被配置成:确定关于第一资源已经发生改变(308),所述第一资源是所述第一应用程序包中的所述多个资源中的一个;

评估与所述第一资源相关联的所述元数据(310)并确定将存储所述改变;

按照一策略将所述改变存储(312)在经定制的资源中,所述策略被用来分类对经定制资源集的改变,所述经定制的资源与所述第一资源有关,以使得当在另一虚拟环境上下文中重新启用所述第一应用程序时可以代替所述第一资源使用所述经定制的资源。

说明书 :

用于检测和处理对应用程序包作出的对资源的改变的方法

和系统

[0001] 背景
[0002] 应用程序可以是执行功能或服务的任何类型的计算机软件。在许多情况中,应用程序可以是允许用户执行诸如字处理等的任务、准备和显示演示或者跟踪和分析财务的软件系统。这样的软件系统可以具有若干不同类型的文件和其他资源,包括一起作用以提供应用程序的服务或功能的可执行文件、脚本、动态链接库、元数据、注册表设置以及其他资源。
[0003] 许多应用程序具有可以被定制的元件。例如,用户界面可以被配置成带有具体的外观和感观,且某些功能可以被启用、被禁用或被配置成以具体的方式动作。 [0004] 概述
[0005] 可以将在虚拟环境内操作的应用程序组织成含有各种软件组件的包。每一软件组件可以具有专用名和其他元数据,包括用来盖写或修改资源的指示符。策略可以定义可如何基于该指示符来存储和检索对特定软件组件的任何改变。可以生成、留存以及再次应用一个或多个经改变组件集,以便基于原始包创建该应用程序的经定制版本。可以在虚拟应用程序环境内或专用虚拟机环境内操作该应用程序。
[0006] 提供本概述以便以简化形式介绍下面在详细描述中进一步描述的概念的选集。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用来限制所要求保护的主题的范围。
[0007] 附图说明
[0008] 附图中,
[0009] 图1是阐释示出用来执行应用程序包的系统的实施例的图。
[0010] 图2是阐释示出用来执行应用程序包的系统的功能元件的实施例的图。 [0011] 图3是阐释示出用来跟踪改变的方法的实施例的流程图。
[0012] 图4是阐释示出用来更新应用程序包的方法的实施例的流程图。
[0013] 详细描述
[0014] 可以将应用程序创建成在虚拟环境中执行的包。该包可以含有可以组成应用程序的所有各种文件或其他资源。该包内的每一文件或资源可以具有可以用来跟踪对该包的改变的元数据集。可以将各改变合并到可以含有经改变文件的经修改版本的修改包中。 [0015] 可以结合原始的应用程序包使用经修改的文件来创建应用程序包的经修改版本。在一些实施例中,可以在经修改的文件被包括以代替该应用程序包的原始文件的场合创建所定制的应用程序包。
[0016] 该包内的每一文件可以具有可以允许做出改变、留存改变和稍后使用改变的盖写位或其他某个元数据。该包内的其他文件可以不具有此类元数据,且不可以改变这些文件。可以允许改变一些文件,但是可能不留存该改变。
[0017] 可以使用一组策略来确定可如何留存具体类型的改变或对特定文件的改变。在一些情况中,一策略可以允许改变作为系统专用的改变而被应用到系统的其他用户。可以将策略应用到用户以使得用户体验与正被使用的机器无关的定制。策略的其他应用可以允许将改变传播到系统或用户的组、将改变应用于具体环境或其他定义。
[0018] 在更新应用程序包时,可以创建各包的不同版本。当在虚拟环境中执行应用程序时,可以检索和执行包的最新版本。更新管理器可以基于与个体文件相关联的元数据来将经改变文件集与经更新的应用程序包结合起来。例如,可以将应用程序包中的一些经更新的文件设置为盖写由用户定制或修改的文件,同时不可以这样设置其他经更新的文件。 [0019] 贯穿此说明书,类似的参考数字贯穿各图的描述表示相同的元素。 [0020] 当元素被称为“被连接”或“被耦合”时,元素可以直接地被连接或被耦合在一起,或者还可以存在一个或多个中介元素。相反,当元件被称为“被直接连接”或“被直接耦合”时,不存在中介元素。
[0021] 本主题可以被具体化为设备、系统、方法和/或计算机程序产品。因此,可以将本主题中的一些或全部具体化在硬件和/或软件(包括固件、驻留的软件、微代码、状态机、门阵列等等)中。此外,本发明可以采用其上包含有供指令执行系统使用或结合其使用的计算机可使用或计算机可读程序代码的计算机可使用 或计算机可读存储介质上的计算机程序产品的形式。此文档的上下文中,计算机可使用介质或计算机可读介质可以是可以含有、存储、传送、传播、或传输程序以便由指令执行系统、装置或设备使用或者结合指令执行系统、装置或设备使用的任何介质。
[0022] 计算机可使用介质或计算机可读介质可以是例如但不限于电、磁、光、电磁、红外或半导体系统、装置、设备或传播介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
[0023] 计算机存储介质包括以用来存储诸如计算机可读指令、数据结构、程序模块或其他数据等的信息的任何方法或技术实现的易失性介质和非易失性介质、可移动介质和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字多用盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或可以用来存储所期望的信息且可以由指令执行系统访问的任何其他介质。注意,计算机可使用介质或计算机可读介质可以是其上打印有程序的纸件或另一合适的介质,这是因为可以经由例如纸件或其他介质等光学扫描来电子地捕捉程序,然后将其编译、解释、或者另外以适当的方式处理,且如果有需要的话然后存储在计算机存储器中。
[0024] 通信介质通常以诸如载波或其他传输机制等的经调制的数据信号来具体化计算机可读指令、数据结构、程序模块或其他数据,且包括任何信息传输介质。术语“经调制的数据信号”意指以将信息编码在信号中的形式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等的有线介质以及诸如声学、射频、红外和其他无线介质等的无线介质。以上中的任何的组合也应被包括在计算机可读介质的范围内。
[0025] 当在计算机可执行指令的一般上下文中具体化本主题时,实施例可以包括由一个或多个系统、计算机或其他设备执行的程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、资源、数据结构等等。通常,程序模块的功能性可以按照各种实施例中所期望的来组合或分布。
[0026] 图1是示出用来执行应用程序包的系统的实施例100的图。实施例100是当应用程序被用户定制并被应用程序开发者升级时可以管理应用程序包的系统的示例。可以将应用程序配置成包并在虚拟环境中执行。当对与应用程序相 关联的资源做出改变时,可以基于与资源相关联的元数据以及定义如何处理改变的一组策略来保存或放弃那些改变。 [0027] 图1的图阐释系统的功能组件。在一些情况中,组件可以是硬件组件、软件组件或者硬件和软件的组合。组件中的一些可以是应用程序级软件,而其他组件可以是操作系统级组件。在一些情况中,一个组件到另一组件的连接可以是其中两个或更多个组件在单个硬件平台上操作的紧密连接。在其他情况中,可以在跨越长距离的网络连接上进行连接。每一实施例可以使用不同的硬件、软件和互连体系结构来实现所描述的功能。 [0028] 实施例100是阐释用来管理经封装的应用程序的系统的若干组件和一般体系结构的功能图。该体系结构可以包括可以通过网络106连接到客户端102的包分发服务器104。在许多实施例中,包分发服务器104可以是计算机服务器,且客户端102可以是连接在局域网上的个人计算机。在其他实施例中,服务器104和客户端102可以跨包括因特网或其他广域网在内的网络106被连接。
[0029] 在实施例100中阐释的体系结构是可以在商业或其他企业中找到的典型类型的客户端-服务器体系结构。其他实施例可以使用其中针对服务器104描述的功能性中的一些可以由客户端102执行且反之亦然的不同类型的体系结构。
[0030] 客户端102可以是任何类型的计算平台,包括个人计算机、手持式移动设备、蜂窝式电话、手持式扫描仪、膝上型计算机或其他便携式计算机、网络家电、可联网测量仪器或可以具有用户界面112的任何其他设备。
[0031] 实施例100阐释一系统,包分发服务器104可以通过该系统将应用程序包108分发给客户端102,以使得可以在虚拟环境110中执行应用程序包108。在许多实施例中,出于客户端102的利益起见,可以在虚拟环境110中执行该包。
[0032] 例如,可以将字处理器应用程序配置成应用程序包108并将其传送给客户端102,其中客户端102可以致使字处理器应用程序执行。用户界面112可以示出字处理器的动作,且可以是供用户使用应用程序的机制。
[0033] 在一些实施例中,应用程序包108可以对应于可以与另一计算机连接的服务或其他应用程序。此类应用程序可以使用或者不可以使用用户界面112。
[0034] 客户端102可以导致在虚拟环境110内执行应用程序包108。虚拟环境110可以是虚拟机环境或虚拟应用程序环境。虚拟机环境可以是模拟其中可执行应用程序包的操作系统环境的软件构造。
[0035] 虚拟应用程序环境是藉此可以执行应用程序而不会干扰其他应用程序的机制。应用程序虚拟化可以创建共享资源的应用程序专用副本。每一应用程序可以具有诸如注册表条目、动态链接库以及可以与应用程序一起封装的其他对象等潜在共享资源的独立配置。可以在高速缓存中执行该包,从而创建虚拟应用程序。当部署虚拟应用程序时,它使用这些共享资源的其自己的副本。
[0036] 因为可以在虚拟环境中执行应用程序,所以可以改变、修改和更新应用程序而不会干扰可使用共享资源的其他应用程序。虚拟环境可以允许在其他应用程序之间的分离,并允许分开地配置每一应用程序。
[0037] 应用程序包108可以含有用来执行应用程序的所有文件和资源。此类资源或组件可以包括可执行文件、脚本、配置文件、动态链接库、数据文件、模板、注册表设置、元数据和任何其他文件类型、数据或其他元件。
[0038] 每一应用程序包108可以包括用于每一资源的元数据,该元数据尤其可以描述是否可以更新资源以及如何处理那些更新。例如,元数据可以定义用户是否可以改变资源以及该改变是否可以留存。在另一示例中,元数据还可以定义当应用程序的新版本可用时可以如何更新资源。在又另一示例中,元数据可以定义通过其留存改变以及如何可以将改变传播到其他用户或其他设备的机制。元数据可以含有在应用程序包的新版本的初始构建期间所使用的信息,并且可以在该包是完整的之后以及正在执行该包时所使用的不同信息。 [0039] 当更新、修改或配置应用程序包108内的资源时,可以留存改变,并在相似的上下文中重新启用应用程序包时再次使用该改变。可以经由若干不同的机制留存改变并重用该改变。
[0040] 应用程序包108可以含有可以跟踪和存储其改变的文件以及其他资源。贯穿此说明书,术语资源被用来例示可包括可执行文件、数据文件、配置文件、注册表条目、COM资源、IP地址、元数据、配置元件、设置和其他资源在内的那些资源。对资源的任何提及可以包括任何类型的资源,包括上面描述的那些资源。
[0041] 在第一机制中,可以将所作出的改变存储在分开的经定制资源集114中。当启动应用程序包108时,在运行时,通过用经定制资源114代替应用程序包108中的对应资源,可以将经定制资源集114合并到应用程序包108中。
[0042] 这样的实施例具有若干独特的特性。应用程序包108可以是含有应用程序内的资源的所有未经改变版本的原始包。可以在经定制资源114的组中分开地 存储对应用程序的配置所作出的任何改变。这样的实施例具有更为复杂的启动例程,这是因为经定制资源114可被合并到应用程序包108中。
[0043] 在第二机制中,可以使用改变来创建应用程序包的经定制版本116。可以创建应用程序包的若干不同的经定制版本116,每一版本用于不同的用户或不同的情况。应用程序包的经定制版本116可以是包括构成应用程序的所有各种资源在内的完整的应用程序包。 [0044] 这样的实施例具有若干独特的特性。应用程序包116中可能各自都十分大,且当存在许多不同的配置时,由应用程序包116使用的存储量会是大的。然而,应用程序包116可以是含有被用于执行的所有资源的完整的独立应用程序。作为完整的应用程序包,可以比使用第一机制更快速地启动它们,且可以更快速地开始执行。
[0045] 其他实施例可以具有用来管理、存储和检索经定制资源或经修改的资源的不同机制。在一些实施例中,元数据或策略可以被用来确定可以将对包的一些类型的改变存储在经定制资源114中,且其他改变可以被用来创建应用程序包的经定制版本116。一些改变可以实质上是本地的,且可以仅影响特定客户端102的用户。其他改变可以被更广泛地部署,且可以由包分发服务器104通过应用程序包的经定制版本116来与其他客户端设备共享。 [0046] 更新服务器118可以不时地将更新包120分发给包分发服务器104。更新包120可以包括隐错修复、升级、新特征或对应用程序包108的其他改变。包分发服务器104可以具有可使用包更新120来创建新的应用程序包108的更新管理器。
[0047] 包更新120可以是以完整包的形式或以诸如差别资源集等的一组经修改的资源或经更新的资源的形式。在任一种情况中,可以关于如何将经定制资源114合并到经更新的包作出判定。在一些情况中,来自更新服务器118的资源可以具有强迫资源盖写任何现有资源的元数据,如果它们是在应用程序包的先前版本108中的原始资源或可以由用户的创建或修改的经定制资源114的话。
[0048] 包更新120中的元数据可以定义是否代替任何现有资源而使用经更新的资源。此类元数据可以指示将代替任何先前版本而使用经更新的资源,或者可以指示可以代替较早版本而非用户定制版本来使用经更新的资源。元数据可以分开地定义是否可以由用户做出对资源的修改以及如何可以留存那些修改。
[0049] 图2是示出用来执行应用程序包的系统的实施例200的示图。实施例200是当应用程序被用户定制并被应用程序开发者升级时可以管理应用程序包的系统的功能组件的示例。
[0050] 图2的示图阐释系统的功能组件。在一些情况中,组件可以是硬件组件、软件组件、或硬件和软件的组合。组件中的一些可以是应用程序级软件,而其他组件可以是操作系统级组件。在一些情况中,一个组件到另一组件的连接可以是其中两个或更多个组件在单个硬件平台上操作的紧密连接。在其他情况中,可以在跨越长距离的网络连接上进行连接。每一实施例可以使用不同的硬件、软件和互连体系结构来实现所描述的功能。 [0051] 实施例200是可以用来管理对可执行应用程序包的更新的功能元件的示例。功能元件可以是可以在一个或多个设备上执行以及在许多不同的配置中执行的各种功能。在一些情况中,各种功能可以由通过局域网或诸如因特网等的广域网连接的不同物理设备执行。在其他情况中,各种功能中的两个或更多个、或者可能全部都可以在单个设备上执行。 [0052] 实施例200中描述的功能阐释可以通过其在各种更新循环中管理应用程序包的一种机制。在一些情况中,可以由应用程序开发者或软件制造商创建该包的经更新版本。经更新版本可以被用来创建应用程序包的当前版本。在其他情况中,可以由用户、系统管理员或其他实体做出修改或定制,且可以留存那些定制并将其合并到应用程序包中。 [0053] 可以与由软件制造商创建的更新分开地跟踪和处理经修改的资源或经定制资源。
应用程序包内的元数据可以定义如何处理更新。元数据可以允许或禁止更新,且可以允许留存一些更新、一些更新盖写其他更新、以及许多其他选项。
[0054] 一组策略可以被用来定义可如何留存和应用经定制资源。一种策略可以定义一些更新或定制将被留存并应用到设备的所有用户、用户的各种组或者个体用户。一种策略可以分类具体类型的更新并以不同方式来应用那些更新。
[0055] 更新管理器204可以向执行引擎210提供要执行的应用程序包。应用程序包可以包括来自包的当前版本202的资源以及一些经定制资源集206。更新管理器204可以通过融合包的当前版本202和经定制资源集206的组来创建经定制的应用程序包。 [0056] 在一些情况中,更新管理器可以基于策略216应用两个或更多个经定制资源集206。可以基于策略216为各种类型的改变创建经定制资源集206。可以将一些改变应用到整个公司或企业,而可以将其他改变应用到企业内的各部门、部门内的各个组或特定用户或设备。可以将一些改变应用到不同类型的设备而不考虑用户,而可以将其他改变应用到不同类型的用户而不考虑正被使用的设备。
[0057] 在一些情况中,可以为某些环境创建特定经定制资源集。例如,由安保用来监视建筑物的应用程序可具有为建筑物的夜间监视定义的定制,以及为日间建筑物操作定义的分开的定制集。在另一示例中,会计应用程序可具有为年终会计定义的特定特征或定制集,以及为法务会计定义的分开的定制集。
[0058] 在其中使用两个或更多个经定制资源集的情况中,可以以特定次序应用经定制资源,且所应用的最后集具有优先权。例如,可以首先应用公司范围的定制集,然后应用部门范围的定制集,且最后应用用户专用的定制集。其他实施例可以具有用来合并多个定制集的不同技术或机制。
[0059] 经定制资源集206可以包括可以修改应用程序的任何部分的配置资源、数据文件或其他类型的资源的集合。在一些情况中,经定制资源可以包括改变应用程序的外观和感观或用户界面的项目。例如,公司范围的经定制资源集可以包括用于公司的内部服务台的公司徽标和电话号码或电子邮件地址。用户创建的经定制资源集可以包括关于字体大小和配色方案的设置。在另一示例中,配置资源集可以包括可以允许应用程序连接到在位于局域网中或可通过因特网获得的服务器上主存的远程服务的网络设置和地址。可以使用不同的配置资源,这取决于在启动应用程序时设备的物理位置或网络位置。
[0060] 在其他情况中,经定制资源可以包括改变应用程序的功能或性能的项目。例如,经定制资源集206可以包括允许或禁用具体的功能或对应用程序的其他功能改变的脚本、宏或执行具体任务的可执行文件、应用程序插件模块、配置资源。在另一示例中,经定制资源集206可以包括允许应用程序连接到在具体网络地址处提供的特定服务的网络地址和连接参数,而不同的经定制资源集206可以被用来连接到在不同的服务器上的相似服务。 [0061] 在又其他情况中,经定制资源可以包括可以由应用程序使用的数据。例如,字处理程序可以具有包括公司信头或个性化信纸在内的经定制资源集。一些此类经定制资源可以包括在各种功能或操作中使用的模板、格式或默认数据集。
[0062] 经定制资源集206可以由不同类型的用户创建或者可以以不同的方式分类。可以在与资源相关联的元数据以及策略216中定义定制的类型和特定类型的用户修改特定资源的能力。例如,一些类型的企业范围的定制可以由具有管理权限的用户来实现。例如,应用程序包可以具有可以基于许可限制或一般公司策略而被允许或禁用的特定特征。此类改变可以由管理员而非一般用户来准许。
[0063] 一些用户可以被定义为组管理员,且能够添加或修改由诸如公司内的部门等一组用户使用的定制,但是不能发起用在其他部门或组中的改变。
[0064] 一些实施例可以准许用户创建经定制资源或改变现有资源,然后定义可如何传播该改变。例如,用户可以对应用程序包内的现有资源做出改变。可以向用户呈现关于可如何跨应用程序的其他实例应用改变的选项集。用户可以例如允许由其他个体或用户组使用该改变。通过选择可如何应用该改变,可以将该改变保存在不同的经定制资源集206中。 [0065] 策略216可以准许使用不同的机制来留存改变。例如,一些改变可以被留存在本地存储设备上,且当在本地设备上执行应用程序时被使用。其他改变可以被留存在网络服务器上,且跨其他用户和其他设备地被共享。
[0066] 一些策略可以使得能基于用户基础以及设备基础或功能基础来应用经定制资源集206。用户基础可以是指基于诸如特定用户或用户组等用户身份来应用经定制资源集。用户组可以按诸如管理员、高级用户、一般用户或来宾用户等用户类型来定义。其他用户组可以由诸如程序管理员或者管理助理等功能来定义。又其他用户组可以按诸如销售部门成员或者自行车俱乐部成员等从属关系来定义。
[0067] 用来应用经定制资源集的设备基础可以基于特定设备身份或设备组。一些设备组可以按诸如例如设备是否具有特定能力或附连的外围设备等各种功能特性来标识。一些设备组可以使用诸如特定子网内的设备等的网络地址来标识。设备组还可以包括与诸如会计部门等公司部门相关联的设备。一些设备可以按诸如膝上型计算机、台式计算机、服务器计算机、手持式扫描仪、移动电话或其他类型的设备等类型来分类。
[0068] 用来应用经定制资源集的功能基础可以基于可以借助于应用程序执行的特定功能。例如,库存管理应用程序可以具有当要执行装运和接收功能时所选择的经定制资源集。当要执行物理货存功能时可以选择不同的经定制资源集。
[0069] 在一些实施例中,策略216可以准许用来选择经定制资源集206并将其应用到应用程序包的当前版本202的复杂准则集。例如,在具体的设备上执行具体的功能的用户可以使用包括公司范围的定制、部门专用的定制、功能专用的定制、设备专用的定制和用户专用的定制在内的定制集。每一定制集可以对应用程序包添加或移除各种元件,以使得应用程序包可以看上去被完全定制,但是可以源于跨许多用户、设备和功能使用的应用程序包的单个当前版本202。
[0070] 经定制资源集206内的经定制资源中的一些可以是对现有资源的修改或者可以是与其他资源不相关的分开的资源。对现有资源的修改可以是应用程序包内的标准资源的经更新版本。
[0071] 例如,可以在应用程序包中定义配置资源,且与配置资源相关联的元数据可以准许用户改变配置资源。在一些情况中,元数据可以限定用户改变配置资源的某些部分,而在其他情况中,元数据可以准许对配置资源的任何类型的改变。经更新的配置资源可以作为经定制资源被存储在经定制资源集206中。
[0072] 从应用程序包取出的经更新的资源可以与在经更新的资源和应用程序包内的原始资源之间定义的关系一起被存储。在一些情况中,经更新的资源可以与应用程序包中的原始资源共享相同的名称。在其他情况中,可以为原始资源定义全局唯一标识符(GUID)。经更新的资源可以以某种方式引用原始资源的GUID,以使得这两种资源是相关的。在一些情况中,可以定义用于经更新的资源的GUID,且可以定义关系表,以便存储和跟踪原始资源和经定制资源之间的关系。
[0073] 更新管理器204可以合并应用程序包的当前版本202和各种经定制资源集206。在一些实施例中,更新管理器204可以创建含有可以由执行引擎210在虚拟环境212中执行的资源的完全集的经定制的应用程序包。在其他情况中,更新管理器204可以连同可应用于特定情况的经定制资源集206一起传送应用程序包202。
[0074] 应用程序包的当前版本202可以是应用程序的恒定版本或‘黄金(golden)’版本。应用程序包202可以是可以从中应用其他定制的标准化副本或基础版本。在应用程序的企业部署中,应用程序的单个黄金版本都可以跨整个企业被使用,但是每一部门、用户或组可以体验不同的版本。每一用户可以定制应用程序的某些部分,且使得那些定制在每次用户启动应用程序时出现。
[0075] 从用户的立场来看,每一用户可以体验不同的应用程序,然而,从软件管理的立场来看,可以跨许多不同的用户管理和部署单个应用程序包。
[0076] 执行引擎210可以接收应用程序包,且可以导致应用程序包在虚拟环境中执行。在一些实例中,可以由执行引擎210专门为应用程序创建和配置虚拟环境212。 [0077] 虚拟环境212可以是在任何类型的配置的任何类型的虚拟环境。在许多情况中,虚拟环境可以是虚拟应用程序环境。在其他情况中,虚拟环境可以是虚拟机环境。在一些情况中,可以在与执行引擎210相同的物理设备上创建虚拟环境,而在其他情况中,执行引擎210可以使用可在诸如例如服务器等不同的物理设备上操作的虚拟环境212。 [0078] 可以使用用户界面208来连同定制一起选择和启动应用程序。在台式计算机场景中,用户可以点击图标以启动应用程序。台式计算机可以连接到可从中获得应用程序包的当前版本202和经定制资源集206的服务器设备。在台式计算机内,执行引擎210可以配置虚拟环境212并导致应用程序开始执行。在一些实施例中,可以将应用程序呈现给用户界面208,如同应用程序在台式计算机操作系统上自然地执行一样。
[0079] 在一些此类实施例中,当启动应用程序时,用户可以具有供选择的各种选项。此类选项可以允许更新管理器204选择适当的定制资源集206以便在具体的实例中应用。在一些情况中,用户可以从适当的定制资源集206的菜单或选项集中选择,且在其他情况中,此类选择可被自动地进行。例如,当膝上型计算机被连接到具有带有更新管理器204的服务器的局域网时,膝上型计算机可以使用一个定制资源集来执行应用程序。当膝上型计算机通过因特网被连接到相同的服务器时,膝上型计算机可以使用不同的定制资源集来执行相同的应用程序。
[0080] 运行时改变管理器214可以检测何时对应用程序包中的资源做出改变,且可以使用策略216来归类、分类和配置对经定制资源集206的改变。在一些情况中,运行时改变管理器214可以在后台操作且可以执行其功能而无需用户介入。在其他情况中,运行时改变管理器214可以与用户交互以便确定将如何管理改变。
[0081] 更新管理器204还可以处理应用程序包的新版本218的管理。当接收到应用程序包的新版本218时,更新管理器204可以创建经更新的‘黄金’应用程序包,然后将该经更新的‘黄金’应用程序包设置为应用程序包的当前版本202。
[0082] 更新管理器204可以基于与经更新的包218中的个体资源相关联的元数据来更新应用程序包的当前版本202内的各种资源。在一些情况中,元数据将导致包的新版本218中的资源盖写包的当前版本202中的对应资源。在一些情况中,元数据将导致经定制资源集206的对应资源也被删除,且在一些情况中被包的新版本218中的资源所替换。元数据可以允许或阻止用户对新资源的后继改变。
[0083] 图3是阐释示出用来跟踪对应用程序包中的资源的改变的方法的实施例300的流程图。实施例300是可以是除由更新管理器204和执行引擎210的执行一些操作之外的主要由运行时改变管理器214执行的各种操作的示例。
[0084] 其他实施例可以使用不同的排序、附加或较少的步骤以及不同的命名法或术语学来实现相似的功能。在一些实施例中,各种操作或操作集可以以同步方式或异步方式与其他操作并行执行。选择在此所选择的步骤是为了以简化形式阐释操作的一些原理。 [0085] 实施例300阐释用来检测和处理对应用程序包做出的对资源的改变的方法。可以基于与资源相关联的元数据以及策略来处理改变。
[0086] 在框302中,可以创建应用程序包,且在框306中,可以在虚拟环境中执行应用程序包。
[0087] 在框302中,可以使用各种机制来创建应用程序包。在一些情况中,可以由更新管理器通过融合当前的应用程序包和经定制资源集来创建应用程序包。在一些情况中,可以执行应用程序包而无需附加的经定制资源。
[0088] 在框304中,可以使用诸如虚拟机环境或虚拟应用程序环境等任何类型的虚拟环境来执行应用程序包。
[0089] 当在框308中检测到资源改变且在框310中与资源相关联的元数据准许改变时,在框312中,可以按照策略存储该改变。如果在框310中元数据不准许改变,则不保存该改变,且该过程返回到框306。
[0090] 运行时改变管理器214可以监视应用程序执行且可以检测对应用程序包内的资源做出的任何改变。运行时改变管理器可以是在与正执行的应用程序相同的虚拟环境内操作的功能,或者可以是在虚拟环境外操作的功能。在一些情况 中,运行时改变管理器可以是连同应用程序包一起由执行引擎启动的功能。不同的实施例可以各自具有不同的功能体系结构。
[0091] 在框310中使用的元数据可以是与个体资源相关联的元数据,且可以是作为应用程序包的部分的元数据。在一些情况中,每一资源可以具有分开且不同的元数据集。在其他情况中,可以将元数据集应用到资源组。
[0092] 框310的元数据可以准许或拒绝对特定资源或资源组的改变。元数据可以定义应用程序包内不能被改变的某些资源。此类资源可以包括如果被改变则应用程序不能适当地运行的资源,这些资源诸如可执行文件、动态链接库、注册表设置、COM对象、IP地址和其他资源。
[0093] 应用程序包内的一些资源可以是可修改的。此类资源可以是可以包含用户可配置设置、默认模板或其他资源的配置文件。框310的元数据可以由软件制造商定义,且可以是应用程序设计的底层结构的部分。
[0094] 在框312中,策略可以定义可如何在企业环境内存储和管理改变。改策略可以是本地定义和本地管理的规则集,该规则集可被度身定制到公司或企业的内部规程和企业模型。
[0095] 策略可以定义用于对应用程序的改变的不同分类,且可以定义用于存储改变的条件和机制。例如,一些改变可以被标识为本地的、用户专用的改变,且可以被存储在台式计算机上。其他改变可以被标识为可以跨不同的计算机共享的改变,且此类改变可以被存储在服务器设备上。
[0096] 在一些情况中,即使在元数据可以准许改变时,策略也可以拒绝在特定环境中保存改变。例如,用户可以创建资源的经改变版本,但是可能不具有如该策略中所定义的存储改变的授权。
[0097] 图4是阐释示出用来更新应用程序包的方法的实施例400的流程图。实施例400是当接收到应用程序包的新版本218时可以由更新管理器204执行的各种操作的示例。 [0098] 其他实施例可以使用不同的排序、附加或较少的步骤以及不同的命名法或术语学来实现相似的功能。在一些实施例中,各种操作或操作集可以以同步方式或异步方式与其他操作并行地执行。选择在此所选择的步骤是为了以简化形式阐释操作的一些原理。 [0099] 实施例400是用来使用与经更新的应用程序包的资源相关联的元数据来创建应用程序包的新版本的方法的示例。实施例400对应用程序包的旧版本中的 每个资源执行分析。其他实施例可以分析应用程序包的新版本中的每个资源以便产生相似的结果。实施例400仅仅是更新应用程序包内的个体资源以及如果经定制资源干扰更新则删除那些经定制资源的一般过程的示例。
[0100] 实施例400步进地通过应用程序包中的每个资源,并且如果存在资源的新版本则用新版本替换旧版本。如果存在旧资源的经修改版本,则与新资源相关联的元数据可以指示经修改版本与经更新的应用程序包不兼容,且可以移除经修改的资源或经定制资源。如果资源的经修改版本是兼容的,则可以保留经修改版本。
[0101] 在框402中,可以接收应用程序包的旧版本,并且在框404中,可以接收应用程序包的新版本,以及在框406中,接收用于该包的任何经修改的资源。
[0102] 在框404中,应用程序包的新版本可以是完整应用程序包的形式,或者可以是用于应用程序包的经改变的资源或经更新的资源的形式。在许多情况中,例如,应用程序包的经更新版本可以由软件制造商创建,并被分发给更新服务的订户。
[0103] 在框408中,对于应用程序包的旧版本中的每个资源,执行对该资源的分析,且可以更新该资源,且可以配置对应的经定制资源。
[0104] 在框410中,可以标识应用程序包的新版本中的对应资源。不同的实施例可以具有用来判断哪些资源彼此有关的不同机制。在一些情况中,可以向每个资源指派全局唯一标识符(GUID)或一些其他唯一名称。在框412中,当包的旧版本中的资源具有与新版本中的资源相同的GUID时,各资源是相同的。在框412中,如果各GUID是不同的,各资源可以是不同的,且在框414中,可以用新的资源来替换旧的资源。
[0105] 一些实施例可以使用查找表或其他引用来确定应用程序包的新版本中的哪些资源可以替换应用程序包的旧版本中的资源。
[0106] 在其中新的应用程序包是作为资源的完全集而被部署的实施例中,可以省略框412和框414的操作。
[0107] 在框416中,如果不存在当前资源的经修改版本,则该过程可以返回到框408以便处理下一资源。
[0108] 在框416中,如果存在资源的经修改版本,则在框418中分析与资源的新版本相关联的元数据。与资源的新版本相关联的元数据可以具有指示经修改资源的旧版本是否与经更新的应用程序包相兼容的标记或定义。
[0109] 在框420中,如果元数据指示可以使用经修改的资源,则在框424中,可以保留经修改版本。在框420中,如果元数据指示将不使用经修改的资源,则在框422中,可以删除资源的经修改版本。
[0110] 在一些实施例中,资源的经修改版本可以在若干不同的经定制资源集中被找到。在此类实施例中,可以删除经修改的资源的每一实例。在一些实施例中,代替删除经修改的资源,经修改的资源可以被标记为非活动的、被移动到不同的位置或者可以其他方式被呈现为不可用的。
[0111] 已经出于阐释和描述的目的呈现了本主题的前述描述。它不旨在是详尽的或将本主题限制在所公开的准确形式,且在上述教导的启发下可能进行其他修改和变更。选择和描述实施例是为了最好地解释本发明的原理及其实践应用,以便由此使得本领域的其他技术人员在适于预期的特定用途的各种实施例和各种修改中最佳地利用本发明。所附权利要求旨在被解释成包括除受现有技术所限的范围之外的其他替换实施例。