特定の要件を満たすために、アプリでは既存のインストール ディレクトリにファイルを表示する必要がある場合があります。 たとえば、特定のアプリがフォルダー内のファイルを予期していた場合 (C:\Program Files\Contoso;そのディレクトリは、管理者が変更できます。 Windows 11以降、アプリは WindowsApps ディレクトリの外部にあるディレクトリを指定でき、OS は、親ディレクトリから継承された適切な ACL を使用してファイルがその場所に表示されるようにします。
マニフェストでのディレクトリの場所の宣言
この機能を有効にするには、パッケージ内のファイルの投影先をパッケージで宣言する必要があります。 以下はその一例です
<Package...>
<Extensions>
<desktop8:Extension Category="windows.MutablePackageDirectories">
<desktop8:MutablePackageDirectories>
<desktop8:MutablePackageDirectory target="$(package.volumeroot)\Program Files\<Folder>" Shared=”true”>
</desktop8:MutablePackageDirectories>
</Extension>
</Extensions>
</Package>
プロジェクションに関する考慮事項
この機能を使用する前に、次の考慮事項の一覧を示します。
| 考慮事項 | 説明 |
|---|---|
| 投影する機能を備えたパッケージをインストールする方法は? | パッケージは ProvisionPackageForAllUsers API を使用してインストールする必要があります |
| 誰がインストールできますか(ユーザーまたは管理者)? | 管理者 |
| ファイルはどこに投影できますか (ロックされた場所、または任意の場所)? | %pf%\windowsapps または %pf%\modifiablewindowsapps 以外の場所 |
| 投影されたディレクトリを作成した場合、その ACL はどうなるでしょうか? | 親ディレクトリから継承 |
| 複数のパッケージで同じディレクトリを宣言できますか? | 複数の関連セットで同じディレクトリを宣言することはできません。 言い換えると、同じディレクトリを宣言する複数のパッケージがある場合、それらはすべて同じ関連セットからのものでなければなりません。 |
| 複数のパブリッシャーはどうですか? | いいえ |
| 衝突はどのように処理されますか? | パッケージや既存のファイルがマージされます。 競合するファイルは、指定された優先順位で解決されるか、順序が指定されていない場合は package-name のアルファベット順に解決されます |