CN102193818B - 虚拟应用程序包重构 - Google Patents

虚拟应用程序包重构 Download PDF

Info

Publication number
CN102193818B
CN102193818B CN201110072225.4A CN201110072225A CN102193818B CN 102193818 B CN102193818 B CN 102193818B CN 201110072225 A CN201110072225 A CN 201110072225A CN 102193818 B CN102193818 B CN 102193818B
Authority
CN
China
Prior art keywords
trade
tricks
virtual
information
file
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.)
Active
Application number
CN201110072225.4A
Other languages
English (en)
Other versions
CN102193818A (zh
Inventor
J·M·希恩
C·W·梅福德
T·K·安娜
J·莱姆斯
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 Technology Licensing LLC
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 Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102193818A publication Critical patent/CN102193818A/zh
Application granted granted Critical
Publication of CN102193818B publication Critical patent/CN102193818B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Abstract

本文中描述了虚拟应用程序包重构,并公开了创建和使用诀窍来创建虚拟应用程序的虚拟包的技术。用于创建虚拟包的现有方法可能要求利用专家或者可能是不可靠的。在一些实施例中,用脱水器来创建诀窍。脱水器可将基准虚拟包和应用程序的安装介质作为输入,并输出可用于创建用于特定操作系统和/或环境的特定虚拟包的诀窍。在一些实施例中,可用再水化器从诀窍创建特定虚拟包。再水化器可将诀窍和应用程序的安装介质作为输入,并输出用于特定操作系统和/或环境的特定虚拟包。

Description

虚拟应用程序包重构
技术领域
本发明涉及计算机信息技术,尤其涉及虚拟应用程序包重构技术。
背景技术
计算机用户可能希望在计算机上安装额外的应用程序或者将现有应用程序升级到新版本。例如,想使用电子表格程序的用户可能希望安装MICROSOFTOFFICE或者可能希望将现有的MICROSOFTOFFICE安装程序升级到更新版本。
应用程序的安装可自安装介质开始。例如,安装介质可以是CD、DVD、远程计算机或者远程计算机可读介质。用户可执行安装介质上的程序,该程序可在安装应用程序的多步骤过程中引导用户。安装过程可涉及指定在何处安装该应用程序、哪些用户将可以访问该应用程序、应用程序的选项、以及用户是否同意许可协定。
在计算机上安装应用程序可能改变操作系统的各方面并且可能影响先前安装在计算机上的其它应用程序。例如,在计算机上安装应用程序可包括向计算机添加文件或更改现有文件。这些文件中的一些可被存储在为正被安装的应用程序所专用的位置上,而这些文件中的另一些可被存储在可与其它应用程序或与操作系统共享的位置上。
应用程序的安装也可改变操作系统的环境。例如,计算机上的应用程序可与操作系统交互,且访问或修改环境可方便与操作系统的交互。应用程序还可与其它应用程序交互,且访问或修改环境可方便与其它应用程序的交互。此外,用户可设置环境中的选项或其它配置值以控制所安装的应用程序的各方面。
操作系统的环境可用多种方式来指定,这些方式中的一种可以是集中式信息储存库。例如,在MICROSOFTWINDOWS操作系统中,环境包括注册表,该注册表包括键-值对。在AppleOSX操作系统中,环境可包括属性表(plist)或属性列表文件。在LINUX操作系统中,环境可包括存储在路径为“/etc.”的目录中的各种文件。
在某些情况下,使用虚拟应用程序代替常规应用程序可能是有利的。虚拟应用程序与常规应用程序的不同之处在于,虚拟应用程序的安装不修改操作系统上的文件并且也不修改操作系统的环境。
在用户使用虚拟应用程序来代替常规应用程序或作为其补充的情况下,用户可在他或她的计算机上安装虚拟应用程序客户机。虚拟应用程序客户机可具有对用户可用的虚拟应用程序的列表。在用户希望使用虚拟应用程序之一而该虚拟应用程序尚不在该用户的计算机上的情况下,虚拟应用程序客户机可从服务器下载虚拟包并在该用户的计算机上安装该虚拟应用程序。服务器可由管理员操作,该管理员使得虚拟包对用户可用。
图1示出在其中一个或多个用户130可使用虚拟应用程序的示例性计算机网络100。用户130可连接至诸如因特网之类的计算机网络120。服务器110也可连接至网络,并且服务器110可具有与对用户130可用的虚拟应用程序相对应的一个或多个虚拟包。用户130可从服务器110下载虚拟包,然后使用该虚拟包来在用户的计算机上安装虚拟应用程序。
图2示出具有允许用户运行虚拟应用程序的虚拟应用程序客户机240的计算机200。计算机200可具有操作系统220。操作系统220可具有文件225和环境230。操作系统220还可具有常规应用程序(未示出)。计算机200还可具有一个或多个虚拟应用程序,例如虚拟应用程序260和虚拟应用程序280。虚拟应用程序客户机240如同虚拟应用程序是在由操作系统220所创建的环境中执行的那样为虚拟应用程序提供操作环境,而不需要虚拟应用程序与操作系统220直接交互。因此,每个虚拟应用程序可具有其自己的文件和环境。例如,虚拟应用程序260可具有文件265和环境270,且虚拟应用程序280可具有文件285和环境290。
当用户请求运行虚拟应用程序时,虚拟应用程序客户机240可查看用户先前是否已安装了该虚拟应用程序并且还可查看该虚拟应用程序的较新版本是否可用。在用户先前未安装该虚拟应用程序或较新版本可用的情况下,虚拟应用程序客户机240可从服务器110下载与该虚拟应用程序相对应的虚拟包。在虚拟应用程序客户机下载虚拟包之后,虚拟应用程序随后可在用户的计算机上可用。
虚拟包可提前生成。在企业设置中,网络管理员例如可创建旨在在整个企业的用户计算机上使用的虚拟包。创建虚拟包可涉及定序器(sequencer)的使用。为了利用定序器创建虚拟包,管理员可将常规应用程序从安装介质安装到计算机并且遵循配置计算机的多步骤过程来执行常规应用程序。定序器可记录在安装过程期间对计算机做出的所有改变,并且创建体现出在安装常规应用程序期间对计算机所做的改变的虚拟包。在一些场景中,网络管理员可能需要专家建议,这些专家建议可通过使专家直接参与制作虚拟包或者通过访问专家所编写且使其可用的信息来获得。
发明内容
虽然虚拟应用程序具有优于常规应用程序的益处,申请人已经认识到并且已经明白虚拟应用程序的使用可通过降低与创建虚拟包相关联的复杂度来扩展。虚拟包可能需要与用户的特定操作系统和环境兼容,因而单个虚拟包可能不会与所有的计算机一起恰当地工作并且特定虚拟包可能需要被创建成与用户的计算机兼容。特定虚拟包是为特定的操作系统和/或环境所创建的虚拟包。
申请人明白,为虚拟应用程序创建特定虚拟包的过程可通过使用诀窍(recipe)来改进。诀窍提供可用于从安装介质创建特定虚拟包而无需使用定序器的信息。在一些实施例中,诀窍可包含解释如何能将来自安装介质的文件及其它信息放入特定虚拟包的元数据,并且还可包含有效载荷,该有效载荷包含可被放入特定虚拟包的文件。
在此处所述的本发明的实施例中,应用程序的基准虚拟包和应用程序的安装介质可用于通过使用脱水器(dehydrator)来创建诀窍。基准虚拟包可由专家来创建或通过使用从专家处获得的信息来创建。脱水器可从基准虚拟包选择信息,例如虚拟包环境中的文件或信息,并且确定该信息是否在安装介质上。如果该信息存在于安装介质上,则脱水器可在诀窍中存储指示该信息在基准虚拟包和/或安装介质中的位置的信息。如果该信息不存在于安装介质上,则脱水器可将该信息作为有效载荷存储在诀窍中。通过对基准虚拟包中的其它信息重复这一过程,诀窍可创建对基准虚拟包的完整描述。
在此处所述的本发明的实施例中,诀窍和安装介质可用于通过使用再水化器(rehydrator)来创建应用程序的特定虚拟包。再水化器从诀窍选择信息,并使用该信息来创建该特定虚拟包。在来自虚拟包的信息与安装介质上的信息(例如文件)有关的情况下,再水化器可将该文件复制到该特定虚拟包的适当位置。在诀窍中的信息与诀窍中的有效载荷有关的情况下,再水化器可将有效载荷中的信息复制到该特定虚拟包中的适当位置。在信息与将在其中安装该特定虚拟包的环境有关的情况下,再水化器可更改虚拟包中指定该环境的内容。
以上概述是对由所附权利要求定义的本发明的非限定性的概述。
附图说明
附图不旨在按比例绘制。在附图中,各个附图中示出的每一完全相同或近乎完全相同的组件由同样的标号来表示。出于简明的目的,不是每一个组件在每张附图中均被标号。在附图中:
图1示出在其中用户可使用虚拟应用程序的示例性计算机网络;
图2示出可在其上执行虚拟应用程序的计算机。
图3是可用于使用定序器从安装介质创建虚拟包的系统的框图。
图4是可用于从基准虚拟包和安装介质创建用来创建特定虚拟包的诀窍的系统的框图。
图5是可用于从诀窍和安装介质创建特定虚拟包的系统的框图。
图6示出可与本发明的各实施例一起使用的示例性诀窍。
图7是用于从基准虚拟包和安装介质创建用来创建特定虚拟包的诀窍的示例性过程的流程图。
图8是用于从诀窍和安装介质创建特定虚拟包的示例性过程的流程图。
具体实施方式
申请人明白,虚拟应用程序的管理员和用户可从具有用于创建虚拟包的更简单且更可靠的方法获益。通过简化用于创建虚拟包的过程,管理员可能能够提供更大数量且各种各样的虚拟包。简化该过程还可降低管理员使虚拟包可用的成本。
申请人还明白,可通过使用诀窍和基准虚拟包来使虚拟包的创建更简单且更可靠。基准虚拟包是用于应用程序的虚拟包,其可用任何合适的方式来创建。例如,基准虚拟包可结合专家输入使用定序器来创建,如以下更详细描述的。由于基准虚拟包可能并不与所有的操作系统和环境兼容,因此可能有必要创建与用户的操作系统和环境兼容的特定虚拟包。特定虚拟包是为特定的操作系统和/或环境所创建的虚拟包。
诀窍提供可用于从安装介质创建特定虚拟包的信息。诀窍可包含封装专家输入的信息,以指示诸如虚拟应用程序的环境的可能需要设置的参数之类的事物。虚拟包可标识来自安装介质的要被包括在虚拟包中的文件及其它信息,并且还可包含有效载荷,其中该有效载荷包含将被包括在虚拟包中的文件。从诀窍创建特定虚拟包的过程可比用于创建特定虚拟包的其它方法更简单且更可靠。
图3示出用于使用定序器320从应用程序的安装介质340创建该应用程序的特定虚拟包360的系统300的框图,其中定序器320可以是本领域已知的定序器。在系统300中,计算机310可以是特定虚拟包360预期供其使用的操作系统和环境的干净安装。在一些实施例中,计算机310可以是运行目标操作系统和环境的虚拟机。
在创建特定虚拟包360时,系统300操作用于将来自安装介质340的应用程序安装到计算机310上,以使得该应用程序将在虚拟环境中执行。安装介质340可被存储在对于计算机310可以是内置或外置的计算机可读介质330上。
安装可由专家来执行,或者可通过使用专家所提供的指令、提示或暗示来执行。在从安装介质340向计算机310安装应用程序的同时,定序器320可记录对计算机310所做的改变。在应用程序的安装期间对计算机310的改变可包括向计算机310添加文件、修改计算机310上的文件、以及对计算机310的环境的改变。无论所发生的改变的类型如何,它们都可在特定虚拟包360中有所反映。
遵循应用程序的常规安装,定序器320可创建特定虚拟包360并可将其存储在对于计算机310可以是内置或外置的计算机可读介质350上。特定虚拟包360可预期用于在具有与计算机310相同的操作系统和环境的计算机上运行,并且可以或者可以不在其它操作系统和/或环境上运行。
系统300可能对于较简单的应用程序工作良好,但是对于更复杂的应用程序可能并不能很好地工作。对于更复杂的应用程序,寻找适当地创建特定虚拟包360所需的适用专家知识可能是成问题的,因此对于虚拟包的管理员而言可能需要更多的时间和费用。此外,特定虚拟包可能不会正确地工作,且在部署特定虚拟包360前可能需要测试,这也需要管理员花费更多的时间和费用。
申请人明白,作为系统300的定序器320的替换,可改用诀窍来创建特定虚拟包。诀窍封装关于用于虚拟包的要求的专家知识。该知识以可被容易地应用来创建特定虚拟包的方式来格式化。图4示出用于创建诀窍的过程的框图,其中该诀窍可用于创建特定虚拟包。图5示出用于从诀窍创建特定虚拟包的过程的框图。
在图4中,系统400采用脱水器420来创建用于创建特定虚拟包的诀窍470。系统400从应用程序的基准虚拟包440和该应用程序的安装介质450开始。基准虚拟包440和安装介质450可存储在计算机可读介质430上(或者可存储在不同的计算机可读介质上),计算机可读介质430对于计算机410可以是外置或者内置的。安装介质450可以是用于将常规应用程序安装到计算机上的同一安装介质。基准虚拟包440可以用任何合适的方式来创建。例如,基准虚拟包440可通过使用图3的定序器320来创建。在一些实施例中,不管是否使用定序器,基准虚拟包440都封装由专家提供或源自专家的知识。
在系统400中,计算机410可使用脱水器420从基准虚拟包440和安装介质450来创建诀窍470。脱水器420可以是计算机可执行指令的集合,或者其它合适组件,当它们被执行时,从基准虚拟包440提取信息并将其以可用于创建特定虚拟包的格式来进行存储。计算机410可具有任何操作系统和/或环境,并且不需要具有特定虚拟包预期供其使用的计算机的相同操作系统和/或环境。
脱水器420通过将基准虚拟包440中的信息与安装介质450中的信息相比较来创建诀窍470。例如,脱水器420可解析基准虚拟包440来标识其组件,然后确定如何将这些组件并入特定虚拟包中。可在诀窍中记录该信息。
例如,脱水器420可标识基准虚拟包440中的文件或者可标识建立基准虚拟包440将在其中操作的环境的信息。脱水器然后可将来自基准虚拟包440的这些项与安装介质450中的信息相比较以确定将什么信息放置在诀窍470中。例如,在脱水器420标识基准虚拟包440中的文件且该文件在安装介质450上的情况下,脱水器420可将该文件在基准虚拟包440中的位置和/或该文件在安装介质450中的位置存储在诀窍470中。
通过处理基准虚拟包440中存在的某些或全部信息,脱水器420将可用于创建用于应用程序的特定虚拟包的信息放入诀窍470中。脱水器420可将诀窍470存储在对于计算机410可以是外置或内置的计算机可读介质460上。
在图5中,系统500采用再水化器520来创建特定虚拟包570。系统500从应用程序的安装介质550和诀窍540开始。诀窍540和安装介质550可存储在计算机可读介质530上(或者可存储在不同的计算机可读介质上),计算机可读介质530对于计算机510可以是外置或者内置的。诀窍540可使用图4的系统400来创建或者可以用任何其它合适的方式来创建。安装介质550可以是用于将常规应用程序安装到计算机上的同一安装介质。
在系统500中,计算机510可使用再水化器520从诀窍540和安装介质550来创建特定虚拟包570。再水化器520通过使用诀窍540中所包含的信息来创建特定虚拟包570。例如,再水化器520可处理诀窍540中的某些或全部信息。例如,再水化器520可从诀窍540选择指示安装介质550上的文件可被放置在特定虚拟包570中的指定位置的信息,然后再水化器520可将该文件从安装介质550复制到特定虚拟包570中的该指定位置。再水化器可从诀窍540选择指示诀窍540包含要被复制到特定虚拟包570的文件的内容和位置的信息,并且再水化器可将该文件从诀窍540复制到特定虚拟包570中的指定位置。再水化器还可从诀窍540选择指示对特定虚拟包570的环境的改变的信息,并且可将在安装特定虚拟包时会导致所指示的改变的信息插入特定虚拟包570中。
通过处理诀窍540中存在的某些或全部信息,再水化器520将创建特定虚拟包570。再水化器520可将特定虚拟包570存储在对于计算机510可以是外置或内置的计算机可读介质560上。
图6示出可根据本发明的各实施例使用的示例性诀窍600。本发明的各实施例可使用诀窍600的任何合适的格式,且不限于此处所述的特定示例。诀窍600可包含可被再水化器用来从安装介质创建特定虚拟包的信息,并且可包含一个或多个部分。然而,各部分的数量和类型并不是本发明的限制性特征。例如,诀窍可包含元数据部分605和有效载荷部分630。诀窍600的每个部分可进一步包含子部分。元数据部分605可包含头部子部分610、文件系统子部分615、环境子部分620以及优化子部分625。有效载荷部分630可包含平台文件部分635和应用程序文件部分640。子部分的数量和类型也不是本发明的限制性特征。诀窍600的部分和子部分可按任何合适的方式来存储。例如,部分和子部分可存储在单个文件中,可存储在分开的文件中,或者可按包含诸如箱文件或zip文件之类的多个文件的存档格式来存储。
诀窍600的元数据部分605可按任何合适的方式来存储信息。例如,元数据部分605可使用可扩展标记语言来存储信息。元数据部分605的子部分也可使用可扩展标记语言来存储信息。
元数据部分605可包括头部子部分610,头部子部分610包括关于诀窍的概要信息,比如id号、版本号、创建时间戳的日期、修改时间戳的日期、压缩类型、块大小以及历史信息。头部子部分610中可包括任何合适的信息,且本发明并不限于任何特定类型的信息。
元数据部分605可包括文件系统子部分615,文件系统子部分615包括关于文件系统以及在应用诀窍时可被包括在虚拟包中的个体文件的信息。如果文件的合适标识被包括,则文件本身并不需要被包括在该部分中。例如,文件系统子部分615可包括长文件名、短文件名、文件属性、版本号、id号、文件散列、文件在安装介质上的位置以及文件在虚拟包中的位置。文件系统子部分615中可包括任何合适的信息,且本发明并不限于任何特定类型的信息。
元数据部分605可包括环境子部分620,环境子部分620包括关于在安装虚拟包时要创建的环境的信息。例如,环境子部分620可包括虚拟字体、短路径表以及要存储在虚拟包环境的集中式储存库(诸如注册表)中的键-值对。环境子部分620中可包括任何合适的信息,且本发明并不限于任何特定类型的信息。
元数据部分605可包括优化子部分625,优化子部分625包括用于对虚拟包的性能进行优化的信息。例如,一些虚拟包可能非常大并且需要大量时间来下载到用户的计算机。等待整个虚拟包下载可能需要用户在能够使用虚拟应用程序之前等待相当长的时间。然而,对于某些虚拟包,用户可能能够首先下载虚拟包的必要部分且稍后下载该虚拟包的其它部分。通过先下载虚拟包的必要部分,用户可能能够在相对较短的时间长度内启动虚拟应用程序。优化子部分625可指示虚拟包的哪些部分应首先被下载以及哪些部分可稍后下载。优化子部分625中可包括任何合适的信息,且本发明并不限于任何特定类型的信息。
诀窍600的有效载荷部分630可按任何合适的方式存储在应用诀窍时要被包括在特定虚拟包中的信息。该信息可包括要被包括在特定虚拟包中的文件。例如,有效载荷部分630可使用诸如箱文件或zip文件之类的存档格式来存储文件。有效载荷部分630的子部分也可使用箱文件或zip文件来存储文件。在一些实施例中,诀窍600的有效载荷部分630可将包含可执行代码的文件排除在外。
有效载荷部分630可包括平台文件子部分635,平台文件子部分635可存储由虚拟应用程序客户机使用的文件。例如,平台文件子部分635可包括由虚拟应用程序客户机使用的配置文件和清单文件。平台文件子部分635中可包括任何合适的信息,且本发明并不限于任何特定类型的信息。
有效载荷部分630可包括应用程序文件子部分640,应用程序文件子部分640可存储作为虚拟应用程序的部分的文件。例如,应用程序文件子部分中的文件可包括由常规应用程序安装所创建的快捷方式、由常规应用程序安装所创建的配置文件以及未在安装介质上找到的其它文件。应用程序文件子部分640中可包括任何合适的信息,且本发明并不限于任何特定类型的信息。
图7示出用于从基准虚拟包和安装介质创建用来创建特定虚拟包的诀窍的过程700的示例。过程从框705开始,在那里接收应用程序的安装介质的位置和基准虚拟包的位置。这些位置可按任何合适的方式来指定,包括例如文件系统路径或网络位置。
过程继续至框710,在那里解析基准虚拟包以使得基准虚拟包中的各个项可被单独地处理。以此方式,可从基准虚拟包依次选择信息项,但是应当明白,并不要求顺序地处理基准包中的项。从基准虚拟包选择的项可标识诸如基准虚拟包中的文件、来自虚拟包的环境的信息、以及如基准虚拟包中的文件属性等其它信息之类的事物。从基准虚拟包选择的信息的类型不是本发明的限制性特征。
过程继续至框715,在那里确定在框710处从基准虚拟包选择的信息是否存在于安装介质上。例如,如果所选择的信息是基准虚拟包中的文件,则框715可确定该文件的副本是否存在于安装介质上。
如果所选择的信息并不存在于安装介质上,则过程前进至框720。在框720处确定所选择的信息是否是作为虚拟应用程序的部分的文件。如果所选择的信息是作为虚拟应用程序的部分的文件,则过程前进至框730,在框730处将所选择的信息存储到诀窍中。例如,在所选择的信息是作为虚拟应用程序的部分的文件的情况下,可将所选择的信息存储到如图6所示的诀窍的有效载荷部分的应用程序文件子部分中。
如果在框720处确定所选择的信息不是作为虚拟应用程序的部分的文件,则过程前进至框725,在框725处确定所选择的信息是否是与图2的虚拟应用程序客户机240有关的平台文件。如果所选择的信息是平台文件,则过程前进至框730,在框730处将所选择的信息存储到诀窍中。例如,在所选择的信息是平台文件的情况下,可将所选择的信息存储到如图6所示的诀窍的有效载荷部分的平台文件子部分中。
如果在框725处确定所选择的信息不是平台文件,则过程前进至框750,在框750处确定所选择的信息是否是被过程700所理解的其它信息。如果所选择的信息是被理解的,则过程前进至框730,在框730处将所选择的信息存储到诀窍中。例如,如果所选择的信息是与虚拟包的环境有关的元数据,则可将所选择的信息存储到如图6所示的诀窍的元数据子部分的环境子部分中。如果所选择的信息与文件属性有关,则可将所选择的信息存储到如图6所示的诀窍的元数据部分的文件系统子部分中。本发明不限于任何特定类型的元数据,并且与基准虚拟包有关的任何合适的元数据可存储在诀窍中。
如果在框750处确定所选择的信息是不被理解的,则过程700可引发出错,因为它可能不知道如何处理所选择的信息。响应于这一出错,可接收手动输入或者可按任何合适的方式来处理该出错。在该点处引发出错可阻止非预期信息被添加到诀窍并进而被添加到由诀窍创建的特定虚拟包。在这一实施例中,可复制和分发诀窍而不引发可能出现的技术或法律问题——例如,如果有版权的图像或软件被插入到诀窍中。
返回至框715,如果所选择的信息存在于安装介质上,则过程继续至框735,在框735处在诀窍中存储指示所选择的信息可在安装介质上找到的信息。例如,在一些实施例中,可向在图6中所示的诀窍的元数据部分的文件系统子部分添加条目,包括所选择的信息在安装介质上的位置和/或所选择的信息在基准虚拟包中的位置。
在框735和框730之后,过程前进至框740,在框740处确定过程是否完成。在一些实施例中,过程700可在基准虚拟包中所包含的所有信息上重复,而在其它实施例中过程700可在基准虚拟包中所包含的信息的子集上重复。无论要处理的基准虚拟包的量是多少,如果基准虚拟包中的附加信息仍需处理,则过程随后返回至框710,在框710处从基准虚拟包选择附加信息。如果没有更多的信息留待处理,则随后过程结束。
一旦完成诀窍的过程结束,则可将诀窍用于创建特定虚拟包。在一些场景中,诀窍可由创建它的实体来使用。但是,在许多场景中,诀窍将被分发给其创建者以外的人或实体。例如,诀窍可由专家来创建,比如专门从事对应用程序进行虚拟化的顾问或公司。专家可按任何合适的方式来分发诀窍。
不管是谁使用诀窍以及它是如何获得的,诀窍可用于创建特定虚拟包。图8示出用于从诀窍和安装介质创建特定虚拟包的过程800的示例。过程从框805开始,在那里接收应用程序的诀窍和安装介质的位置。这些位置可按任何合适的方式来指定,包括例如文件系统路径或网络位置。
诀窍可被解析,且诀窍中的项可按任何合适的次序来选择和处理。因此,过程继续至框810,在那里从诀窍中选择信息。从诀窍中选择的信息可包括例如图6所示的任何元数据,但是从诀窍中选择的信息不需要采用元数据的形式并且也不限于图6中的信息。
过程继续至框815,在那里确定所选择的信息是否与虚拟包的环境有关。如果所选择的信息与虚拟包的环境有关,则过程继续至框820,在框820处如所选择的信息所指示地修改虚拟包的环境。在框820之后,过程继续至框840。
返回至框815,如果所选择的信息并非与虚拟包的环境有关,则过程继续至框845,在框845处确定所选择的信息是否与虚拟包的文件有关。如果所选择的信息与虚拟包的文件有关,则过程继续至框825。
在框825处确定与所选择的信息相关联的文件是否在诀窍的有效载荷部分中。如果与所选择的信息相关联的文件在诀窍的有效载荷部分中,则过程随后继续至框830,在框830处根据所选择的信息将文件从诀窍的有效载荷复制到虚拟包。如果与所选择的信息相关联的文件不在诀窍的有效载荷部分中,则过程随后继续至框835,在框835处根据所选择的信息将文件从安装介质复制到虚拟包。在框830或框835之后,过程继续至框840。
返回至框845,如果所选择的信息并非与虚拟包的文件有关,则过程随后继续至框850。在框850处,适当地处理所选择的信息。例如,所选择的信息可对应于图6的头部子部分或优化子部分。本发明不限于包含在诀窍中的任何特定类型的信息,并且可对诀窍中的其它类型的信息应用任何适当的处理。在框850之后,过程继续至框840。
在框840处,确定过程800是否完成。在一些实施例中,过程800可处理包含在诀窍中的全部信息,而在其它实施例中过程,800可仅处理诀窍中的信息的子集。如果诀窍中还有信息留待处理,则过程800继续至框810以从诀窍中选择附加信息。如果没有信息留待处理,则过程800完成。
至此描述了本发明的至少一个实施例的若干方面,可以理解,本领域的技术人员可容易地想到各种更改、修改和改进。
这样的更改、修改和改进旨在是本发明的一部分且旨在处于本发明的精神和范围内。因此,上述描述和附图仅用作示例。
可以用多种方式中的任一种来实现本发明的上述实施例。例如,可使用硬件、软件或其组合来实现各实施例。当使用软件实现时,该软件代码可在无论是在单个计算机中提供的还是在多个计算机之间分布的任何合适的处理器或处理器集合上执行。
此外,应当理解,计算机可以用多种形式中的任一种来具体化,如机架式计算机、台式计算机、膝上型计算机、或平板计算机。另外,计算机可以具体化在通常不被认为是计算机但具有合适的处理能力的设备中,包括个人数字助理(PDA)、智能电话、或任何其他合适的便携式或固定电子设备。
同样,计算机可以具有一个或多个输入和输出设备。这些设备特别地可被用来呈现用户界面。可被用来提供用户界面的输出设备的示例包括用于可视地呈现输出的打印机或显示屏和用于可听地呈现输出的扬声器或其他声音生成设备。可被用于用户界面的输入设备的示例包括键盘和诸如鼠标、触摸板和数字化输入板等定点设备。作为另一示例,计算机可以通过语音识别或以其他可听格式来接收输入信息。
这些计算机可以通过任何合适形式的一个或多个网络来互连,包括作为局域网或广域网,如企业网络或因特网。这些网络可以基于任何合适的技术并可以根据任何合适的协议来操作,并且可以包括无线网络、有线网络或光纤网络。
而且,此处略述的各种方法或过程可被编码为可在采用各种操作系统或平台中任何一种的一个或多个处理器上执行的软件。此外,这样的软件可使用多种合适的程序设计语言和/或程序设计或脚本工具中的任何一种来编写,而且它们还可被编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。
就此,本发明可被具体化为用一个或多个程序编码的一个计算机可读介质(或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、紧致盘(CD)、光盘、数字视频盘(DVD)、磁带、闪存、现场可编程门阵列或其他半导体器件中的电路配置、或其他非瞬态的有形计算机存储介质),当这些程序在一个或多个计算机或其他处理器上执行时,它们执行实现本发明的上述各个实施例的方法。这一个或多个计算机可读介质可以是便携的,使得其上存储的一个或多个程序可被加载到一个或多个不同的计算机或其他处理器上以便实现本发明上述的各个方面。
此处以一般的意义使用术语“程序”或“软件”来指可被用来对计算机或其他处理器编程以实现本发明上述的各个方面的任何类型的计算机代码或计算机可执行指令集。另外,应当理解,根据本实施例的一个方面,当被执行时实现本发明的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以按模块化的方式分布在多个不同的计算机或处理器之间以实现本发明的各方面。
计算机可执行指令可以具有可由一个或多个计算机或其他设备执行的各种形式,诸如程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,在各实施例中,程序模块的功能可以视需要组合或分布。
而且,数据结构能以任何合适的形式存储在计算机可读介质上。为简化说明,数据结构可被示为具有通过该数据结构中的位置而相关的字段。这些关系同样可以通过对各字段的存储分配传达各字段之间的关系的计算机可读介质中的位置来得到。然而,可以使用任何合适的机制来在数据结构的各字段中的信息之间建立关系,包括通过使用指针、标签、或在数据元素之间建立关系的其他机制。
本发明的各个方面可单独、组合或以未在前述实施例中具体讨论的各种安排来使用,从而并不将其应用限于前述描述中所述或附图中所示的组件的细节和安排。例如,可使用任何方式将一个实施例中描述的各方面与其他实施例中描述的各方面组合。
同样,本发明可被具体化为方法,其示例已经提供。作为该方法的一部分所执行的动作可以按任何合适的方式来排序。因此,可以构建各个实施例,其中各动作以与所示的次序所不同的次序执行,不同的次序可包括同时执行某些动作,即使这些动作在各说明性实施例中被示为顺序动作。
在权利要求书中使用诸如“第一”、“第二”、“第三”等序数词来修饰权利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、先后次序或顺序、或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的一个权利要求元素与(若不是使用序数词则)具有同一名字的另一元素区分开的标签以区分各权利要求元素。
同样,此处所使用的短语和术语是出于描述的目的而不应被认为是限制。此处对“包括”、“包含”、或“具有”、“含有”、“涉及”及其变型的使用旨在包括其后所列的项目及其等效物以及其他项目。

Claims (10)

1.一种用于创建诀窍(470)的方法,所述诀窍可用于创建应用程序的特定虚拟包(570),且所述诀窍是从所述应用程序的安装介质(450)和基准虚拟包(440)创建的,所述方法包括:
由处理器从所述基准虚拟包选择项(710);
确定所述项是否构成在所述安装介质上存在的信息(715);
当所述项在所述安装介质上存在时,将指示所述项在所述安装介质中的位置的信息存储在所述诀窍中(735);以及
当所述项不构成在所述安装介质上存在的信息时,将描述所述信息的第二信息存储在所述诀窍中(730),
所述诀窍包括指示所述安装介质中的文件和其它信息如何被包括在特定的虚拟包中,所述诀窍还包括要被包括在所述特定的虚拟包中的文件,并且所述特定的虚拟包是针对特定的操作系统和环境创建的。
2.如权利要求1所述的方法,其特征在于,所述项是所述基准虚拟包中的文件(720)。
3.如权利要求1所述的方法,其特征在于,所述项是所述基准虚拟包的环境的键-值对。
4.如权利要求1所述的方法,其特征在于,存储在所述诀窍中的信息是元数据。
5.如权利要求1所述的方法,其特征在于,所述项是访问控制信息。
6.一种使用诀窍(540)和应用程序的安装介质(550)创建所述应用程序的特定虚拟包(570)的方法,所述方法包括:
从所述诀窍选择项(810);
当所述项是与在其中执行虚拟包的环境有关的信息时(815),将在安装所示虚拟包时修改所述环境的信息放入所述特定虚拟包中(820);
当所述项标识所述安装介质上的文件时,将所述文件从所述安装介质复制到所述特定虚拟包(835);以及
当所述项与所述诀窍中的文件有关时,将所述文件从所述诀窍复制到所述特定虚拟包(830)。
7.如权利要求6所述的方法,其特征在于,所述项是键-值对。
8.如权利要求6所述的方法,其特征在于,所述项包括文件在所述安装介质上的位置。
9.如权利要求6所述的方法,其特征在于,所述诀窍使用可扩展标记语言来存储信息。
10.如权利要求6所述的方法,其特征在于,所述项是存储在所述诀窍中的文件。
CN201110072225.4A 2010-03-17 2011-03-16 虚拟应用程序包重构 Active CN102193818B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/725,824 2010-03-17
US12/725,824 US10514940B2 (en) 2010-03-17 2010-03-17 Virtual application package reconstruction

Publications (2)

Publication Number Publication Date
CN102193818A CN102193818A (zh) 2011-09-21
CN102193818B true CN102193818B (zh) 2016-01-13

Family

ID=44601931

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110072225.4A Active CN102193818B (zh) 2010-03-17 2011-03-16 虚拟应用程序包重构

Country Status (2)

Country Link
US (1) US10514940B2 (zh)
CN (1) CN102193818B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010048531A1 (en) 2008-10-24 2010-04-29 Datcard Systems, Inc. System and methods for metadata management in content addressable storage
US8799221B2 (en) 2010-04-23 2014-08-05 John Canessa Shared archives in interconnected content-addressable storage systems
US9003397B2 (en) 2011-09-29 2015-04-07 Oracle International Corporation System and method for supporting automatically deploying/undeploying application components in a transactional middleware machine environment
US9367271B2 (en) * 2014-10-28 2016-06-14 Xerox Corporation System and method for achieving tap-to-print functionality on a mobile device
US10007500B1 (en) 2015-01-21 2018-06-26 Pivotal Software, Inc. Cloud computing platform architecture
CN105573741A (zh) * 2015-09-25 2016-05-11 中国电子科技集团公司第三十二研究所 界面可重构的虚拟应用系统和方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101027639A (zh) * 2004-07-21 2007-08-29 索芙特瑞斯提股份有限公司 用于在软件应用程序储存库内提取和创建应用程序元信息的系统和方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6324691B1 (en) 1998-11-12 2001-11-27 Hewlett-Packard Company Manufacture of software distribution media packages from components resident on a remote server source
US6282711B1 (en) 1999-08-10 2001-08-28 Hewlett-Packard Company Method for more efficiently installing software components from a remote server source
US6757894B2 (en) 2000-09-26 2004-06-29 Appstream, Inc. Preprocessed applications suitable for network streaming applications and method for producing same
US6954930B2 (en) 2002-02-19 2005-10-11 International Business Machines Corporation Remote validation of installation input data
US7533380B2 (en) 2002-06-05 2009-05-12 Sap Ag Installation tool for enterprise management systems based on building blocks
US7810133B2 (en) * 2002-08-23 2010-10-05 Exit-Cube, Inc. Encrypting operating system
US7194728B1 (en) 2002-11-18 2007-03-20 Bmc Software, Inc. System and method for packaging updates
US20040148370A1 (en) * 2003-01-23 2004-07-29 Electronic Data Systems Corporation System and method for composing, configuring, deploying, and managing services using a graphical user interface
US7818667B2 (en) 2005-05-03 2010-10-19 Tv Works Llc Verification of semantic constraints in multimedia data and in its announcement, signaling and interchange
US8364638B2 (en) * 2005-09-15 2013-01-29 Ca, Inc. Automated filer technique for use in virtualized appliances and applications
CN101390050B (zh) * 2005-12-22 2018-04-24 艾伦·J·薛比洛 通过相减性安装达成选择性分配软件资源的装置与方法
JP5190800B2 (ja) * 2006-02-21 2013-04-24 日本電気株式会社 プログラムの実行制御システム、実行制御方法、実行制御用コンピュータプログラム
US8327350B2 (en) * 2007-01-02 2012-12-04 International Business Machines Corporation Virtual resource templates
US8635611B2 (en) 2007-11-16 2014-01-21 Microsoft Corporation Creating virtual applications
US8615761B2 (en) * 2008-03-07 2013-12-24 Nec Corporation Virtual machine package generation system, virtual machine package generation method, and virtual machine package generation program
EP2274674A1 (en) 2008-04-25 2011-01-19 VMWare, Inc. Linking virtualized application namespaces at runtime
US20090288076A1 (en) * 2008-05-16 2009-11-19 Mark Rogers Johnson Managing Updates In A Virtual File System
US8407693B2 (en) * 2008-06-09 2013-03-26 International Business Machines Corporation Managing package dependencies
KR20100040545A (ko) * 2008-10-10 2010-04-20 삼성전자주식회사 구조화된 리치 미디어 데이터 기반의 사용자 인터페이스를 제공하기 위한 장치 및 방법
GB2465785B (en) * 2008-11-28 2012-07-04 Vmware Inc Computer system and method for resolving dependencies in a computer system
US8307351B2 (en) * 2009-03-18 2012-11-06 Oracle International Corporation System and method for performing code provenance review in a software due diligence system
US8423994B2 (en) * 2009-05-14 2013-04-16 Microsoft Corporation Recipe based application conversion
US8463887B2 (en) * 2009-12-23 2013-06-11 Citrix Systems, Inc. Systems and methods for server surge protection in a multi-core system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101027639A (zh) * 2004-07-21 2007-08-29 索芙特瑞斯提股份有限公司 用于在软件应用程序储存库内提取和创建应用程序元信息的系统和方法

Also Published As

Publication number Publication date
US10514940B2 (en) 2019-12-24
US20110231837A1 (en) 2011-09-22
CN102193818A (zh) 2011-09-21

Similar Documents

Publication Publication Date Title
US11762634B2 (en) Systems and methods for seamlessly integrating multiple products by using a common visual modeler
CN102193818B (zh) 虚拟应用程序包重构
CN108292231B (zh) 从数据生成应用的方法和系统
CN102971688B (zh) 跨平台应用程序框架
US9244709B2 (en) Automatic recognition of web application
CN1467632B (zh) 基于映像的软件安装的系统和方法
US20240045850A1 (en) Systems and methods for database orientation transformation
US20170052764A1 (en) Pluggable components for runtime-image generation
CN109542459A (zh) 应用程序打包方法及装置、计算机装置及计算机存储介质
US8548963B2 (en) Context sensitive media and information
CN111090437A (zh) 应用部署方法、装置及计算机可读存储介质
US20200134257A1 (en) Creating and modifying applications from a mobile device
JP2006048645A (ja) ドキュメントにコンテキスト情報を埋め込むための方法およびシステム
JP6002302B2 (ja) Webアプリケーション生成システム、Webアプリケーション生成システムの制御方法、Webアプリケーション生成システムのプログラム、Webアプリケーション生成装置、Webアプリケーション生成装置の制御方法、およびWebアプリケーション生成装置のプログラム
CN102388363A (zh) 以类别档案嵌入原生代码方式应用平台相依例行程序于虚拟机
CN102289367A (zh) 根据模式的命令行外壳命令生成
CN112631563A (zh) 基于框架的系统开发方法、装置、计算机设备及存储介质
Sur Visual Studio 2012 and. NET 4.5 Expert Development Cookbook
KR20190123146A (ko) 애플리케이션의 보안성 향상을 위한 애플리케이션 변환 장치 및 방법
CN115794253A (zh) 应用集成方法、装置、电子设备及计算机可读存储介质
US20140129934A1 (en) Dynamic model-based management tooling
KR20190112491A (ko) 애플리케이션 변환 장치 및 방법
CN113590166B (zh) 应用程序的更新方法、装置以及计算机可读存储介质
CN110688145B (zh) Android MVP代码自动生成方法、装置、介质、电子设备
KR20230119821A (ko) 코드 난독화 및 성능 개선을 위한 자동화된 패키지 재구성 방법 및 시스템

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: 20150727

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

Effective date of registration: 20150727

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant