关于连接组虚拟环境

适用于:

  • 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 将使用第一个匹配文件。

相关文章