パッケージ アプリ ディレクトリに基づいて任意の場所にディレクトリを作成する

特定の要件を満たすために、アプリには既存のインストール ディレクトリに表示されるファイルが必要である場合があります。 たとえば、特定のアプリでフォルダー (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 は何か。 親ディレクトリから継承されます
複数のパッケージで同じディレクトリを宣言できるか。 複数の関連セットで同じディレクトリを宣言することは許可されていません。 つまり、同じディレクトリを宣言する複数のパッケージがある場合、それらはすべて同じ関連セット内にある必要があります。
複数の発行元についてはどうか。 いいえ
競合はどのように処理されるか。 パッケージや既存のファイルはマージされます。 競合するファイルは、指定された優先順位で解決されます。順序が指定されていない場合は、パッケージ名のアルファベット順に解決されます