关于 App-V 5.0 动态配置

应用到: Application Virtualization 5.0, Application Virtualization 5.0 SP1, Application Virtualization 5.0 SP2, Application Virtualization 5.0 SP3

可使用动态配置为用户自定义 App-V 5.0 包。使用以下信息创建或编辑现有动态配置文件。

编辑动态配置文件时,它会为用户或组自定义 App-V 5.0 包的运行方式。这有助于通过使用所需设置免除重新对包进行序列化的需求,从而提供更加方便的包自定义方法,并提供使包内容和自定义设置保持独立的方法。

高级:动态配置

虚拟应用程序包包含提供包的所有核心信息的清单。此信息包括包设置的默认值,并确定最基本形式的设置(没有其他自定义)。如果要为特定用户或组调整这些默认值,可创建和编辑以下文件:

  • 用户配置文件

  • 部署配置文件

之前的 .xml 文件指定包设置,并允许在不直接影响包的情况下自定义包。创建包时,Sequencer 使用包清单数据自动生成默认部署和用户配置 .xml 文件。因此,这些自动生成的配置文件直接反映出了包的默认设置,这些设置从序列化阶段就开始生效了。如果将这些配置文件应用到 Sequencer 生成的表单中的包,包将具有相同的来自其清单的默认设置。如果必须更改任何默认值,这会为你提供特定于包的模板以开始。

note备注
以下信息仅可用于修改 Sequencer 生成的配置文件以自定义包,从而满足特定用户或组的要求。

动态配置文件内容

配置文件中的所有添加、删除和更新都需要与包的清单信息指定的默认值相关。查看下表:

用户配置 .xml 文件

部署配置 .xml 文件

包清单

上表表示如何读取这些文件。第一项表示将最后读取的内容,因此,其内容将优先。因此,所有包本身就包含和提供来自包清单的默认设置。如果应用具有自定义设置的部署配置 .xml 文件,则它将覆盖包清单默认值。如果在此之前应用具有自定义设置的用户配置 .xml 文件,则它将覆盖部署配置和包清单默认值。

以下列表显示有关两种文件类型的详细信息:

  • “用户配置文件 (UserConfig)”– 使你可指定或修改包的自定义设置。当该包部署到运行 App-V 5.0 客户端的计算机时,这些设置将用于特定用户。

  • “部署配置文件 (DeploymentConfig)”– 使你可指定或修改包的默认设置。当包部署到运行 App-V 5.0 客户端的计算机时,这些设置将用于所有用户。

要在计算机上为特定组用户自定义包设置或做出更改并将更改应用于本地用户位置(例如 HKCU),应使用 UserConfig 文件。要在计算机上为所有用户修改包的默认设置或做出更改并将更改应用于全局位置(例如 HKEY_LOCAL_MACHINE)和所有用户文件夹,应使用 DeploymentConfig 文件。

UserConfig 文件提供可应用于单个用户而不影响客户端上任何其他用户的配置设置:

  • 将按用户集成到本机系统中的扩展:- 快捷方式、文件类型关联、URL 协议、AppPath、软件客户端和 COM

  • 虚拟子系统:- 应用程序对象、环境变量、注册表修改、服务和字体

  • 脚本(仅用户上下文)

  • 管理颁发机构(用于控制包与 App-V 4.6 的共存)

DeploymentConfig 文件提供两方面的配置设置,一个与计算机上下文相关,一个与用户上下文相关,提供以上 UserConfig 列表中所列出的相同功能:

  • 以上所有的 UserConfig 设置

  • 仅可在全局用于所有用户的扩展

  • 可为全局计算机位置配置的虚拟子系统,例如注册表

  • 产品源 URL

  • 脚本(仅计算机上下文)

  • 终止子进程的控件

文件结构

App-V 5.0 动态配置文件的结构将在下一节说明。

动态用户配置文件

“标头”- 动态用户配置文件的标头如下:

<?xml version="1.0" encoding="utf-8"?><UserConfiguration PackageId="1f8488bf-2257-46b4-b27f-09c9dbaae707" DisplayName="Reserved" xmlns="https://schemas.microsoft.com/appv/2010/userconfiguration">

“PackageId”与清单文件中的值相同。

“正文”- 动态用户配置文件的正文包括在清单文件中定义的所有应用程序扩展点以及用于配置虚拟应用程序的信息。正文中有四个子节:

  1. “应用程序”- 包内的清单文件中包含的所有应用程序扩展都分配有应用程序 ID,该 ID 也在清单文件中定义。这使你可启用或禁用包中给定应用程序的所有扩展。清单文件中必须有“应用程序 ID”,否则其将被忽略。

    <UserConfiguration PackageId="1f8488bf-2257-46b4-b27f-09c9dbaae707" DisplayName="Reserved" xmlns="https://schemas.microsoft.com/appv/2010/userconfiguration">

    <应用程序>

    <!-- 不能在策略中定义新的应用程序。AppV Client 将忽略任何也不在清单文件中的应用程序 ID -->

    <Application Id="{a56fa627-c35f-4a01-9e79-7d36aed8225a}" Enabled="false">

    </Application>

    </Applications>

    </UserConfiguration>

  2. 子系统 - 在 <子系统> 下面将 AppExtension 和其他子系统排列为子节点:

    <UserConfiguration PackageId="1f8488bf-2257-46b4-b27f-09c9dbaae707" DisplayName="Reserved" xmlns="https://schemas.microsoft.com/appv/2010/userconfiguration">

    <Subsystems>

    ..

    </Subsystems>

    ..

    </UserConfiguration>

    可使用“启用”属性启用/禁用每个子系统。以下列出了各个子系统和使用示例。

    扩展:

    一些子系统(扩展子系统)控制扩展。这些子系统包括:- 快捷方式、文件类型关联、URL 协议、AppPath、软件客户端和 COM

    可独立于内容之外启用和禁用扩展子系统。因此,如果启用了快捷方式,客户端将默认使用清单中的快捷方式。每个扩展子系统都可以包含 <Extensions> 节点。如果出现了此子元素,客户端将忽略该子系统的清单文件中的内容,并且仅使用配置文件中的内容。

    使用快捷方式子系统的示例:

    1. 如果用户在动态或部署配置文件作此定义:

                                   <Shortcuts  Enabled="true">

                                               <Extensions>

                                                ...

                                               </Extensions>

                                   </Shortcuts>

                       清单中的内容将被忽略。   

    2. 如果用户仅定义了以下内容:

                                  <Shortcuts  Enabled="true"/>

                       则清单中的内容将在发布期间集成。

    3. 如果用户定义了以下内容

                                 <Shortcuts  Enabled="true">

                                               <Extensions/>

                                   </Shortcuts>

    则仍将忽略清单中的所有快捷方式。将不会集成任何快捷方式。

    受支持的扩展子系统为:

    **快捷方式:**控制将要集成到本地系统中的快捷方式。以下为 2 个快捷方式的示例:

    <Subsystems>

    <Shortcuts  Enabled="true">

      <Extensions>

        <Extension Category="AppV.Shortcut">

          <Shortcut>

            <File>[{Common Programs}]\Microsoft Contoso\Microsoft ContosoApp Filler 2010.lnk</File>

            <Target>[{PackageRoot}]\Contoso\ContosoApp.EXE</Target>

            <Icon>[{Windows}]\Installer\{90140000-0011-0000-0000-0000000FF1CE}\inficon.exe</Icon>

            <Arguments />

            <WorkingDirectory />

            <AppUserModelId>ContosoApp.Filler.3</AppUserModelId>

            <Description> 填写动态表格以使用 Microsoft ContosoApp.</Description> 在整个组织中收集和重新使用信息。

            <Hotkey>0</Hotkey>

            <ShowCommand>1</ShowCommand>

            <ApplicationId>[{PackageRoot}]\Contoso\ContosoApp.EXE</ApplicationId>

          </Shortcut>

      </Extension>

      <Extension Category="AppV.Shortcut">

        <Shortcut>

          <File>[{AppData}]\Microsoft\Contoso\Recent\Templates.LNK</File>

          <Target>[{AppData}]\Microsoft\Templates</Target>

          <Icon />

          <Arguments />

          <WorkingDirectory />

          <AppUserModelId />

          <Description />

          <Hotkey>0</Hotkey>

          <ShowCommand>1</ShowCommand>

          <!-- 注意 ApplicationId 为可选项 -->

        </Shortcut>

      </Extension>

     </Extensions>

    </Shortcuts>

    **文件类型关联:**将文件类型与程序关联以按默认方式打开以及设置上下文菜单。(也可使用此子系统设置 MIME 类型)。示例文件类型关联如下所示:

    <FileTypeAssociations Enabled="true">

    <Extensions>

      <Extension Category="AppV.FileTypeAssociation">

        <FileTypeAssociation>

          <FileExtension MimeAssociation="true">

          <Name>.docm</Name>

          <ProgId>contosowordpad.DocumentMacroEnabled.12</ProgId>

          <PerceivedType>document</PerceivedType>

          <ContentType>application/vnd.ms-contosowordpad.document.macroEnabled.12</ContentType>

          <OpenWithList>

            <ApplicationName>wincontosowordpad.exe</ApplicationName>

          </OpenWithList>

         <OpenWithProgIds>

            <ProgId>contosowordpad.8</ProgId>

          </OpenWithProgIds>

          <ShellNew>

            <Command />

            <DataBinary />

            <DataText />

            <FileName />

            <NullFile>true</NullFile>

            <ItemName />

            <IconPath />

            <MenuText />

            <Handler />

          </ShellNew>

        </FileExtension>

        <ProgId>

           <Name>contosowordpad.DocumentMacroEnabled.12</Name>

            <DefaultIcon>[{Windows}]\Installer\{90140000-0011-0000-0000-0000000FF1CE}\contosowordpadicon.exe,15</DefaultIcon>

            <Description>Blah Blah Blah</Description>

            <FriendlyTypeName>[{FOLDERID_ProgramFilesX86}]\Microsoft Contoso 14\res.dll,9182</FriendlyTypeName>

            <InfoTip>[{FOLDERID_ProgramFilesX86}]\Microsoft Contoso 14\res.dll,1424</InfoTip>

            <EditFlags>0</EditFlags>

            <ShellCommands>

              <DefaultCommand>Open</DefaultCommand>

              <ShellCommand>

                 <ApplicationId>{e56fa627-c35f-4a01-9e79-7d36aed8225a}</ApplicationId>

                 <Name>Edit</Name>

                 <FriendlyName>&Edit</FriendlyName>

                 <CommandLine>"[{PackageRoot}]\Contoso\WINcontosowordpad.EXE" /vu "%1"</CommandLine>

              </ShellCommand>

              </ShellCommand>

                <ApplicationId>{e56fa627-c35f-4a01-9e79-7d36aed8225a}</ApplicationId>

                <Name>Open</Name>

                <FriendlyName>&Open</FriendlyName>

                <CommandLine>"[{PackageRoot}]\Contoso\WINcontosowordpad.EXE" /n "%1"</CommandLine>

                <DropTargetClassId />

                <DdeExec>

                  <Application>mscontosowordpad</Application>

                  <Topic>ShellSystem</Topic>

                  <IfExec>[SHELLNOOP]</IfExec>

                  <DdeCommand>[SetForeground][ShellNewDatabase "%1"]</DdeCommand>

                </DdeExec>

              </ShellCommand>

            </ShellCommands>

          </ProgId>

         </FileTypeAssociation>

       </Extension>

      </Extensions>

      </FileTypeAssociations>

    “URL 协议”:控制集成到客户端计算机(如“mailto:”)的本地注册表中的 URL 协议。

    <URLProtocols Enabled="true">

    <Extensions>

    <Extension Category="AppV.URLProtocol">

    <URLProtocol>

      <Name>mailto</Name>

      <ApplicationURLProtocol>

      <DefaultIcon>[{ProgramFilesX86}]\Microsoft Contoso\Contoso\contosomail.EXE,-9403</DefaultIcon>

      <EditFlags>2</EditFlags>

      <Description />

      <AppUserModelId />

      <FriendlyTypeName />

      <InfoTip />

    <SourceFilter />

      <ShellFolder />

      <WebNavigableCLSID />

      <ExplorerFlags>2</ExplorerFlags>

      <CLSID />

      <ShellCommands>

      <DefaultCommand>open</DefaultCommand>

      <ShellCommand>

      <ApplicationId>[{ProgramFilesX86}]\Microsoft Contoso\Contoso\contosomail.EXE</ApplicationId>

      <Name>open</Name>

      <CommandLine>[{ProgramFilesX86}\Microsoft Contoso\Contoso\contosomail.EXE" -c OEP.Note /m "%1"</CommandLine>

      <DropTargetClassId />

      <FriendlyName />

      <Extended>0</Extended>

      <LegacyDisable>0</LegacyDisable>

      <SuppressionPolicy>2</SuppressionPolicy>

       <DdeExec>

      <NoActivateHandler />

      <Application>contosomail</Application>

      <Topic>ShellSystem</Topic>

      <IfExec>[SHELLNOOP]</IfExec>

      <DdeCommand>[SetForeground][ShellNewDatabase "%1"]</DdeCommand>

      </DdeExec>

      </ShellCommand>

      </ShellCommands>

      </ApplicationURLProtocol>

      </URLProtocol>

      </Extension>

      </Extension>

      </URLProtocols>

    “软件客户端”:使应用程序可注册为电子邮件客户端、新闻阅读器、媒体播放机并且使该应用程序在设置程序访问和计算机默认值 UI 中显示。在大多数情况下,你仅需启用和禁用它。还有一种控件可用来启用和禁用电子邮件客户端,特别是在你想要除该客户端以外的其他客户端仍可启用时。

    <SoftwareClients Enabled="true">

      <ClientConfiguration EmailEnabled="false" />

    </SoftwareClients>

    AppPath:- 如果 contoso.exe 应用程序使用了“myapp”的 apppath 名称注册,则你可在运行菜单下键入“myapp”,然后将打开 contoso.exe。

    <AppPaths Enabled="true">

    <Extensions>

    <Extension Category="AppV.AppPath">

    <AppPath>

      <ApplicationId>[{ProgramFilesX86}]\Microsoft Contoso\Contoso\contosomail.EXE</ApplicationId>

      <Name>contosomail.exe</Name>

      <ApplicationPath>[{ProgramFilesX86}]\Microsoft Contoso\Contoso\contosomail.EXE</ApplicationPath>

      <PATHEnvironmentVariablePrefix />

      <CanAcceptUrl>false</CanAcceptUrl>

      <SaveUrl />

    </AppPath>

    </Extension>

    </Extensions>

    </AppPaths>

    “COM”:允许应用程序注册本地 COM 服务器。模式可以是集成、隔离或关闭。当模式为隔离时。

    <COM Mode="Isolated"/>

    “其他设置”:

    除扩展外,还可启用/禁用和编辑其他子系统:

    “虚拟 Kernel 对象”:

    <Objects Enabled="false" />

    “虚拟注册表”:如果你想在 HKCU 内的虚拟注册表中设置注册表,则可使用

    <Registry Enabled="true">

    <包括>

    <Key Path="\REGISTRY\USER\[{AppVCurrentUserSID}]\Software\ABC">

    <Value Type="REG_SZ" Name="Bar" Data="NewValue" />

     </Key>

      <Key Path="\REGISTRY\USER\[{AppVCurrentUserSID}]\Software\EmptyKey" />

     </Include>

    <删除>

      </Registry>

    虚拟文件系统

          <FileSystem Enabled="true" />

    虚拟字体

          <Fonts Enabled="false" />

    虚拟环境变量

    <EnvironmentVariables Enabled="true">

    <包括>

           <Variable Name="UserPath" Value="%path%;%UserProfile%" />

           <Variable Name="UserLib" Value="%UserProfile%\ABC" />

           </Include>

          <删除>

           <Variable Name="lib" />

            </Delete>

            </EnvironmentVariables>

    虚拟服务

          <Services Enabled="false" />

  3. “UserScript”– 应用程序执行前,脚本可用于在进行部署或删除时设置或更改虚拟环境以及执行脚本,或者还可用于在应用程序终止后“清理”环境。请参考排序器输出的示例用户配置文件以查看示例脚本。下面的脚本部分提供了有关可使用的不同触发器的详细信息。

  4. “ManagingAuthority”– 当 2 个版本的包同时存在同一台计算机上,一个部署到 App-V 4.6,另一个部署在 App-V 5.0 上 时使用要使 App-V vNext 控制命名包的 App-V 4.6 扩展点,请在 UserConfig 文件中输入以下内容(其中 PackageName 为 App-V 4.6 中的 Package GUID:

    <ManagingAuthority TakeoverExtensionPointsFrom46="true" PackageName="032630c0-b8e2-417c-acef-76fc5297fe81" />

动态部署配置文件

“标头”- 部署配置文件的标头如下:

<?xml version="1.0" encoding="utf-8"?><DeploymentConfiguration PackageId="1f8488bf-2257-46b4-b27f-09c9dbaae707" DisplayName="Reserved" xmlns="https://schemas.microsoft.com/appv/2010/deploymentconfiguration">

“PackageId”与清单文件中的值相同。

“正文”- 部署配置文件的正文包括两部分:

  • “用户配置”部分 – 允许与上一部分中描述的用户配置文件相同的内容。当向用户发布包时,此部分的任何应用扩展配置设置都将覆盖包内清单中的相应设置,除非还提供了用户配置文件。如果还提供了 UserConfig 文件,将不要使用部署配置文件中的用户设置,而选择该文件。如果全局发布包,则仅部署配置文件的内容将与清单一起使用。

  • “计算机配置”部分 – 包含仅可针对整个计算机(而不是针对计算机上的某个特定用户)进行配置的信息。例如,VFS 中的 HKEY_LOCAL_MACHINE 注册表项。

<DeploymentConfiguration PackageId="1f8488bf-2257-46b4-b27f-09c9dbaae707" DisplayName="Reserved" xmlns="https://schemas.microsoft.com/appv/2010/deploymentconfiguration">

<UserConfiguration>

  ..

</UserConfiguration>

<MachineConfiguration>

..

</MachineConfiguration>

..

</MachineConfiguration>

</DeploymentConfiguration>

“用户配置”- 使用前述的“动态用户配置文件”部分了解有关部署配置文件的用户配置部分提供的设置的信息。

计算机配置 - 部署配置文件的“计算机配置”部分用于配置仅可针对整个计算机(而非针对计算机上某个特定用户)进行设置的信息。例如,虚拟注册表中的 HKEY_LOCAL_MACHINE 注册表项。此元素下允许有四个子节

  1. 子系统 - 在 <子系统> 下面将 AppExtension 和其他子系统排列为子节点:

    <MachineConfiguration>

      <Subsystems>

      ..

      </Subsystems>

    ..

    </MachineConfiguration>

    以下部分显示不同的子系统和用户示例。

    “扩展”:

    一些子系统(扩展子系统)控制仅可用于所有用户的扩展。该子系统为应用程序功能。由于其仅可用于所有用户,因此必须全局发布包以便此类扩展集成到本地系统中。适用于用户配置中的扩展的控件和设置规则同样适用于 MachineConfiguration 部分中的扩展。

    “应用程序功能”:Windows 操作系统界面的默认程序使用。允许应用程序将自身注册为能够打开某些文件扩展名、作为开始菜单 Internet 浏览器槽的竞争者、能够打开某些 Windows MIME 类型。此扩展还使虚拟应用程序在设置默认程序 UI 中显示:

    <ApplicationCapabilities Enabled="true">

      <Extensions>

       <Extension Category="AppV.ApplicationCapabilities">

        <ApplicationCapabilities>

         <ApplicationId>[{PackageRoot}]\LitView\LitViewBrowser.exe</ApplicationId>

         <参考>

          <Name>LitView Browser</Name>

          <Path>SOFTWARE\LitView\Browser\Capabilities</Path>

         </Reference>

       <CapabilityGroup>

        <Capabilities>

         <Name>@[{ProgramFilesX86}]\LitView\LitViewBrowser.exe,-12345</Name>

         <Description>@[{ProgramFilesX86}]\LitView\LitViewBrowser.exe,-12346</Description>

         <Hidden>0</Hidden>

         <EMailSoftwareClient>Lit View E-Mail Client</EMailSoftwareClient>

         <FileAssociationList>

          <FileAssociation Extension=".htm" ProgID="LitViewHTML" />

          <FileAssociation Extension=".html" ProgID="LitViewHTML" />

          <FileAssociation Extension=".shtml" ProgID="LitViewHTML" />

         </FileAssociationList>

         <MIMEAssociationList>

          <MIMEAssociation Type="audio/mp3" ProgID="LitViewHTML" />

          <MIMEAssociation Type="audio/mpeg" ProgID="LitViewHTML" />

         </MIMEAssociationList>

        <URLAssociationList>

          <URLAssociation Scheme="http" ProgID="LitViewHTML.URL.http" />

         </URLAssociationList>

         </Capabilities>

      </CapabilityGroup>

       </ApplicationCapabilities>

      </Extension>

    </Extensions>

    </ApplicationCapabilities>

    “其他设置”:

    除扩展外,还可编辑其他子系统:

    “计算机范围虚拟注册表”:当你想在 HKEY_Local_Machine 内的虚拟注册表中设置注册表项时使用

    <注册表>

    <包括>

      <Key Path="\REGISTRY\Machine\Software\ABC">

        <Value Type="REG_SZ" Name="Bar" Data="Baz" />

       </Key>

      <Key Path="\REGISTRY\Machine\Software\EmptyKey" />

     </Include>

    <删除>

    </Registry>

    计算机范围虚拟 Kernel 对象

    <Objects>

    <NotIsolate>

       <Object Name="testObject" />

     </NotIsolate>

    </Objects>

  2. “ProductSourceURLOptOut”:表示是否可通过 PackageSourceRoot 全局修改包的 URL(以支持分支机构方案)默认为 False,设置更改在下次启动时生效。 

    <MachineConfiguration>

      .. 

      <ProductSourceURLOptOut Enabled="true" />

      ..

    </MachineConfiguration>

  3. “MachineScript”– 包可配置为在部署、发布或删除时执行脚本。请参考排序器产生的示例部署配置文件以查看示例脚本。以下“脚本”部分提供了有关可使用的不同触发器的详细信息

  4. “TerminateChildProcess”:- 可指定应用程序执行文件,其子进程将在应用程序 exe 进程终止时终止。

    <MachineConfiguration>

      ..   

      <TerminateChildProcesses>

        <Application Path="[{PackageRoot}]\Contoso\ContosoApp.EXE" />

        <Application Path="[{PackageRoot}]\LitView\LitViewBrowser.exe" />

        <Application Path="[{ProgramFilesX86}]\Microsoft Contoso\Contoso\contosomail.EXE" />

      </TerminateChildProcesses>

      ..

    </MachineConfiguration>

脚本

下表描述了各种脚本事件以及脚本事件可在其中运行的上下文。

脚本执行时间 可在部署配置中指定 可在用户配置中指定 可在包的虚拟环境中运行 可在特定应用程序的上下文中运行 在系统/用户上下文中运行:(部署配置,用户配置)

AddPackage

X

(系统,不适用)

PublishPackage

X

X

(系统,用户)

UnpublishPackage

X

X

(系统,用户)

RemovePackage

X

(系统,不适用)

StartProcess

X

X

X

X

(用户,用户)

ExitProcess

X

X

X

(用户,用户)

StartVirtualEnvironment

X

X

X

(用户,用户)

TerminateVirtualEnvironment

X

X

(用户,用户)

使用 App-V 5.0 清单文件创建动态配置文件

可使用以下三种方法中的一种创建动态配置文件:手动、使用 App-V 5.0 管理控制台或序列化包,其中包将通过 2 个示例文件产生。

有关如何使用 App-V 5.0 管理控制台创建文件的详细信息,请参阅 如何使用 APP-V 5.0 管理控制台来创建自定义配置文件

要手动创建文件,可将前面部分的上述信息合为一个单个文件。我们建议你使用排序器生成的文件。

想对 App-V 提建议?

此处添加建议或参与投票。有关 App-V 的问题,请使用 App-V TechNet Forum(App-V TechNet 论坛)

另请参阅

任务

如何通过使用 PowerShell 来应用部署配置文件
如何使用 PowerShell 应用用户配置文件

其他资源

App-V 5.0 的操作

-----
你可以在 TechNet Library(TechNet 库)中详细了解 MDOP、在 TechNet Wiki 上搜索疑难解答,或者在 FacebookTwitter 上了解我们的最新动态。
-----