Criar um diretório em qualquer local com base no diretório do aplicativo empacotado

Para atender a determinados requisitos, os aplicativos podem exigir que os arquivos apareçam em seu diretório de instalação existente. Por exemplo, se um aplicativo específico estivesse esperando um arquivo em uma pasta, como C:\Arquivos de Programas\Contoso; esse diretório pode ser modificado pelos administradores. A partir do Windows 11, os aplicativos podem especificar um diretório fora do diretório windowsApps e o sistema operacional garantirá que os arquivos apareçam nesse local com ACLs apropriadas herdadas do diretório pai.

Declarando o local do diretório no manifesto

Para habilitar esse recurso, o pacote precisará declarar onde projetar os arquivos no pacote. Veja abaixo um exemplo

<Package...> 
  <Extensions> 
    <desktop8:Extension Category="windows.MutablePackageDirectories"> 
      <desktop8:MutablePackageDirectories> 
        <desktop8:MutablePackageDirectory target="$(package.volumeroot)\Program Files\<Folder>" Shared=”true”> 
      </desktop8:MutablePackageDirectories> 
    </Extension> 
  </Extensions> 
</Package> 

Considerações para projeção

Antes de usar esse recurso, aqui estão uma lista de considerações:

Considerações Descrição
Como instalar um pacote com a capacidade de projetar? Os pacotes têm que ser instalados por meio da API ProvisionPackageForAllUsers
Who pode instalá-lo (usuários ou administradores)? Admin
Em que local os arquivos podem ser projetados (local bloqueado ou em qualquer lugar)? Em qualquer lugar além de %pf%\windowsapps ou %pf%\modifiablewindowsapps
Quais são as ACLs no diretório projetado se a criarmos? Herdado do diretório pai
Mais de um pacote pode declarar o mesmo diretório? Não permitimos que mais de um conjunto relacionado declare o mesmo diretório. Em outras palavras, se houver vários pacotes declarando o mesmo diretório, todos eles deverão ser do mesmo conjunto relacionado.
E quanto a mais de um publicador? Não
Como as colisões são tratadas? Pacotes e/ou arquivos pré-existentes são mesclados. Arquivos conflitantes são resolvidos em ordem de prioridade especificada ou nome do pacote em ordem alfabética, se nenhuma ordem especificada