接続グループの仮想環境について

適用対象:

  • Windows 10
  • Windows 11

パッケージの優先度の決定方法

仮想環境とその現在の状態は、個々のパッケージではなく接続グループに関連付けられます。 接続グループから App-V パッケージを削除した場合、接続グループの一部として存在していた状態はパッケージと一緒に移行されません。

同じパッケージが 2 つの異なる接続グループの一部である場合は、App-V で使用する接続グループを指定する必要があります。 たとえば、1 つの接続グループ内に 2 つのパッケージがあり、それぞれが同じレジストリ DWORD 値を定義するとします。

使用される接続グループは、 AppConnectionGroup XML ドキュメント内でパッケージが表示される順序に基づいています。

  • 最初のパッケージの優先度が最も高くなります。
  • 2 番目のパッケージの優先度は 2 番目に高くなります。

次のセクションの例を検討してください。

<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) が 1 つ目のパッケージと 3 つ目のパッケージで定義されているとします。

この例では、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 の仮想環境には 5 (HKEY_LOCAL_MACHINE\software\contoso\finapp\region=5) の単一の DWORD 値が含まれます。 この結果、パッケージ 1、パッケージ 2、パッケージ 3 の仮想アプリケーションでは、HKEY_LOCAL_MACHINE\software\contoso\finapp\region をクエリするときに値 5 がすべて表示されます。

他の仮想環境リソースも同様の方法で解決されますが、通常、競合はレジストリで発生します。

接続グループ内の同一のパッケージ パスを 1 つの仮想ディレクトリにマージする

接続グループ内の 2 つ以上のパッケージに同じディレクトリ パスが含まれる場合、パスは接続グループの仮想環境内の 1 つの仮想ディレクトリにマージされます。 これらのパスをマージすると、1 つのパッケージ内のアプリケーションから別のパッケージ内のファイルにアクセスできるようになります。

接続グループからパッケージを削除すると、削除されたパッケージのアプリケーションは、削除元の接続グループ内のパッケージのファイルにアクセスできなくなります。

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 という名前のファイルが 1 つのアプリケーション パッケージの仮想フォルダー階層に存在し、もう一方のアプリケーション パッケージには存在しない場合、App-V は最初に一致するファイルを使用します。