关于连接组虚拟环境

适用于:

  • Windows 10
  • Windows 11

如何确定包优先级

虚拟环境及其当前状态与连接组相关联,而不是与各个包相关联。 如果从连接组中删除 App-V 包,则作为连接组一部分存在的状态不会随包一起迁移。

如果同一包是两个不同的连接组的一部分,则必须指示 App-V 应使用哪个连接组。 例如,连接组中可能有两个包,其中每个包都定义相同的注册表 DWORD 值。

使用的连接组基于 包在 AppConnectionGroup XML 文档中的显示顺序:

  • 第一个包的优先级最高。
  • 第二个包具有第二高优先级。

请考虑以下示例部分:

<appv:Packages>
  <appv:Package
    PackageId="A8731008-4523-4713-83A4-CD1363907160"
    VersionId="E889951B-7F30-418B-A69C-B37283BC0DB9"
  />
  <appv:Package
    PackageId="1DC709C8-309F-4AB4-BD47-F75926D04276"
    VersionId="01F1943B-C778-40AD-BFAD-AC34A695DF3C"
  />
  <appv:Package
    PackageId="04220DCA-EE77-42BE-A9F5-96FD8E8593F2"
    VersionId="E15EFFE9-043D-4C01-BC52-AD2BD1E8BAFA"
  />
</appv:Packages>

假设第一个和第三个包中定义了相同的 DWORD 值 ABC (HKEY_LOCAL_MACHINE\software\contoso\finapp\region)。

对于此示例,DWORD 值定义如下所示:

  • 包 1 (A8731008-4523-4713-83A4-CD1363907160) :HKEY_LOCAL_MACHINE\software\contoso\finapp\region=5
  • 包 3 (04220DCA-EE77-42BE-A9F5-96FD8E8593F2) :HKEY_LOCAL_MACHINE\software\contoso\finapp\region=10

由于包 1 首先出现,AppConnectionGroup 的虚拟环境将具有单个 DWORD 值 5 (HKEY_LOCAL_MACHINE\software\contoso\finapp\region=5)。 此结果意味着程序包 1、包 2 和包 3 中的虚拟应用程序在查询 HKEY_LOCAL_MACHINE\software\contoso\finapp\region 时将全部看到值 5。

其他虚拟环境资源以类似的方式解析,但通常会在注册表中发生冲突。

将相同的包路径合并到连接组中的一个虚拟目录

如果连接组中的两个或更多个包包含相同的目录路径,则路径将合并到连接组的虚拟环境中的单个虚拟目录中。 合并这些路径允许一个包中的应用程序访问不同包中的文件。

从连接组中删除包时,已删除的包的应用程序无法再访问从中删除它的连接组中的包中的文件。

App-V 按照连接组清单文件中列出 App-V 包的顺序在连接组中查找文件的名称。

以下示例显示了 包 A 和包B 的连接组中文件名查找的顺序和关系。

包 A 包 B
C:\Windows\System32 C:\Windows\System32
C:\AppTest C:\AppTest

当虚拟化应用程序尝试查找特定文件时,App-V 将在包 A 中搜索匹配的文件路径。如果在包 A 中找不到匹配的路径,它将使用以下映射规则搜索包 B:

  • 如果两个应用程序包中同一虚拟文件夹层次结构中存在名为 test.txt 的文件,则 App-V 将使用第一个匹配文件。
  • 如果名为 bar.txt 的文件存在于一个应用程序包的虚拟文件夹层次结构中,但另一个应用程序包中不存在,则 App-V 将使用第一个匹配文件。