关于 App-V 5.0 动态配置

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

编辑动态配置文件时,它会为用户或组自定义 App-V 5.0 包的运行方式。 这有助于提供一种更方便的包自定义方法,无需使用所需设置重新设置包,并提供一种使包内容和自定义设置保持独立的方法。

高级:动态配置

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

  • 用户配置文件

  • 部署配置文件

前面的 .xml 文件指定包设置并允许在不影响包的情况下自定义包。 创建包时,排序器使用包清单数据自动生成默认部署和用户配置 .xml 文件。 因此,这些自动生成的配置文件只是反映了包在排序过程中的配置方式与生俱来的默认设置。 如果将这些配置文件应用于排序器生成的格式的包,则包具有来自其清单的相同默认设置。 这提供了一个特定于包的模板,以在必须更改任何默认值时开始使用。

注意

以下信息只能用于修改 sequencer 生成的配置文件,以自定义包以满足特定的用户或组要求。

动态配置文件内容

配置文件中的所有添加、删除和更新都需要根据包清单信息指定的默认值进行。 查看以下列表:

  • 用户配置 .xml 文件
  • 部署配置 .xml 文件
  • 包清单

上一个列表表示如何读取文件。 第一个条目表示将最后读取的内容,因此,其内容优先。 因此,所有包本身都包含包清单中的默认设置,并提供默认设置。 如果应用了具有自定义设置的部署配置 .xml 文件,它将替代包清单默认值。 如果之前应用了具有自定义设置的用户配置 .xml 文件,则会替代部署配置和包清单默认值。

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

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

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

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

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

  • 集成到本机系统的扩展(每个用户):快捷方式、File-Type 关联、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. 应用程序
  2. 子系统
  3. UserScripts
  4. ManagingAuthority

应用程序

包内清单文件中包含的所有应用扩展都分配有应用程序 ID,该 ID 也在清单文件中定义。 这允许启用或禁用包中给定应用程序的所有扩展。 应用程序 ID 必须存在于清单文件中,否则将被忽略。

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

<Applications>

<!-- No new application can be defined in policy. AppV Client will ignore any application ID that is not also in the Manifest file -->

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

</Application>

</Applications>

...

</UserConfiguration>

子系统

AppExtensions 和其他子系统在 下 <Subsystems>排列为子节点:

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

可以使用 属性启用/禁用 Enabled 每个子系统。 下面是各种子系统和使用情况示例。

扩展:

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

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

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

  1. 如果用户在动态配置文件或部署配置文件中定义了此项,则将忽略清单中的内容。

    <Shortcuts  Enabled="true">
      <Extensions>
        ...
      </Extensions>
    </Shortcuts>
    
  2. 如果用户仅定义了以下元素,则在发布期间将集成清单中的内容。

    <Shortcuts  Enabled="true"/>
    
  3. 如果用户定义以下元素,则清单中的所有快捷方式仍将被忽略。 不会集成快捷方式。

    <Shortcuts  Enabled="true">
      <Extensions/>
    </Shortcuts>
    

支持的扩展子系统包括:

  • 快捷方式: 此控件控制将集成到本地系统的快捷方式。 下面是包含两个快捷方式的示例:

    <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>Fill out dynamic forms to gather and reuse information throughout the organization using 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>
         <!-- Note the ApplicationId is optional -->
       </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 协议:它控制集成到客户端计算机本地注册表中的 URL 协议,例如“mailto:”。

    <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>
    
  • 软件客户端:允许应用注册为Email客户端、新闻阅读器、媒体播放器,并使应用在“设置程序访问和计算机默认值”UI 中可见。 在大多数情况下,只需启用和禁用它。 还有一个控件可以启用和禁用电子邮件客户端,具体来说,如果你希望除该客户端以外的其他客户端仍然启用。

     <SoftwareClients Enabled="true">
       <ClientConfiguration EmailEnabled="false" />
     </SoftwareClients>
    
  • AppPaths:如果应用程序(例如 contoso.exe)注册 apppath 了名称为“myapp”,则允许你在运行菜单下键入“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"/>
    
  • 其他设置

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

    • 虚拟内核对象<Objects Enabled="false" />

    • 虚拟注册表:如果要在 HKCU 内的虚拟注册表中设置注册表,则使用。

      <Registry Enabled="true">
      <Include>
      <Key Path="\\REGISTRY\\USER\\\[{AppVCurrentUserSID}\]\\Software\\ABC">
      <Value Type="REG\_SZ" Name="Bar" Data="NewValue" />
        </Key>
         <Key Path="\\REGISTRY\\USER\\\[{AppVCurrentUserSID}\]\\Software\\EmptyKey" />
        </Include>
         <Delete>
         </Registry>
      
    • 虚拟文件系统<FileSystem Enabled="true" />

    • 虚拟字体<Fonts Enabled="false" />

    • 虚拟环境变量

      <EnvironmentVariables Enabled="true">
      <Include>
            <Variable Name="UserPath" Value="%path%;%UserProfile%" />
            <Variable Name="UserLib" Value="%UserProfile%\\ABC" />
            </Include>
           <Delete>
            <Variable Name="lib" />
             </Delete>
             </EnvironmentVariables>
      
    • 虚拟服务<Services Enabled="false" />

UserScripts

脚本可用于设置或更改虚拟环境,并在部署或删除时、在应用程序执行之前执行脚本,或者可用于在应用程序终止后“清理”环境。 引用排序器输出的示例用户配置文件以查看示例脚本。 下面的脚本部分提供了有关可以使用的各种触发器的详细信息。

ManagingAuthority

当包的两个版本在同一台计算机上共存时可用,一个版本部署到 App-V 4.6,另一个版本部署在 App-V 5.0 上。 若要允许 App-V vNext 接管命名包的 App-V 4.6 扩展点,请在 UserConfig 文件中输入以下内容,其中 PackageName 是 App-V 4.6 中的包 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 文件,则使用它而不是部署配置文件中的用户设置。 如果包全局发布,则只有部署配置文件的内容将与清单结合使用。

  • “计算机配置”部分 - 包含只能为整个计算机配置的信息,而不能为计算机上的特定用户配置。 例如, HKEY_LOCAL_MACHINE VFS 中的注册表项。

<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. 子系统
  2. ProductSourceURLOptOut
  3. MachineScripts
  4. TerminateChildProcess

子系统

AppExtensions 和其他子系统在 下 <Subsystems>排列为子节点:

    <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>
         <Reference>
          <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

      <Registry>
      <Include>
        <Key Path="\\REGISTRY\\Machine\\Software\\ABC">
          <Value Type="REG\_SZ" Name="Bar" Data="Baz" />
         </Key>
        <Key Path="\\REGISTRY\\Machine\\Software\\EmptyKey" />
       </Include>
      <Delete>
      </Registry>
    
  • 计算机范围虚拟内核对象

      <Objects>
      <NotIsolate>
         <Object Name="testObject" />
       </NotIsolate>
      </Objects>
    

ProductSourceURLOptOut

指示是否可以通过 PackageSourceRoot (全局修改包的 URL,以支持) 分支机构方案。 默认值为 false,设置更改将在下次启动时生效。

    <MachineConfiguration>
      .. 
      <ProductSourceURLOptOut Enabled="true" />
      ..
    </MachineConfiguration>

MachineScripts

可以将包配置为在部署、发布或删除时执行脚本。 引用排序器生成的示例部署配置文件以查看示例脚本。 下面的脚本部分提供了有关可以使用的各种触发器的详细信息

TerminateChildProcess

可以指定应用程序可执行文件,其子进程在应用程序执行进程终止时终止。

    <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 (SYSTEM、不适用)
PublishPackage X X (SYSTEM、用户)
UnpublishPackage X X (SYSTEM、用户)
RemovePackage X (SYSTEM、不适用)
StartProcess X X X X (用户、用户)
ExitProcess X X X (用户、用户)
StartVirtualEnvironment X X X (用户、用户)
TerminateVirtualEnvironment X X (用户、用户)

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

可以使用以下三种方法之一创建动态配置文件:使用 App-V 5.0 管理控制台手动创建动态配置文件,或者对包进行排序,这将与两个示例文件一起生成。

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

若要手动创建文件,可将上述部分中的信息合并为单个文件。 建议使用排序器生成的文件。

如何使用 PowerShell 应用部署配置文件

如何使用 PowerShell 应用用户配置文件

App-V 5.0 的操作