Por que o arquivo .exe de um aplicativo moderno não é executado e produz um erro relacionado ao contêiner do aplicativo?

Por que o arquivo .exe de um aplicativo moderno não é executado e produz um erro relacionado ao contêiner do aplicativo?

Dentro da C:\Program Files\WindowsApplicationspasta estão os arquivos .exe dos aplicativos modernos do meu PC. Quando clico duas vezes em um deles, um pop-up me diz:

This application can run only in the context of an app container

Existe uma maneira de executar um aplicativo moderno diretamente do arquivo .exe e não apenas do bloco?

Agradeço antecipadamente!

PS: Estou na visualização técnica do Windows 10.

Responder1

Antes do Windows 8, você podia ter aplicativos .exe "autônomos". A instalação consistiu principalmente em criar links e referências para tornar mais fácil para o aplicativo encontrar o que precisava e executar. Se tudo o que o aplicativo precisava fosse fornecido pelo próprio aplicativo, ele poderia ser executado sem instalação. O app-container é um conceito de segurança introduzido no Win 8. Sem instalação, um aplicativo tem acesso às suas próprias pastas e pouco mais, incluindo a maioria dos dispositivos. Um aplicativo deve ser projetado para funcionar com contêineres de aplicativos para ser instalado. Esselinktem uma descrição decente do conceito e como ele funciona.

Editar: para um aplicativo instalado, parece que todas as associações e permissões estão anexadas ao bloco, portanto, o .exe não pode ser executado diretamente.

Responder2

Você pode executar um aplicativo moderno do Windows a partir da linha de comando usando um comando shell explorer.exe como este:

explorer.exe shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID>

Ou, via start, que é recomendado caso você precise passar argumentos:

start shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID> arg1 arg2

O truque é descobrir o nome do pacote, o ID do editor e o ID do aplicativo. Seria bom se todas essas informações estivessem disponíveis na listagem do aplicativo na Microsoft Store, ou no Gerenciador de Tarefas, ou na listagem do aplicativo em Configurações -> Aplicativos e recursos. Até agora, não encontrei uma maneira fácil de coletar essas três informações. Aqui estão as etapas para fazer isso usando o Gerenciador de Tarefas e o Explorador de Arquivos, copiados deminha postagem no blog.

  1. Abra o aplicativo moderno normalmente, no menu Iniciar, barra de tarefas, etc.
  2. Inicie o Gerenciador de Tarefas (cliquei com o botão direito na barra de tarefas do Windows e escolho "Gerenciador de Tarefas")
  3. Expanda a listagem do aplicativo de seu interesse, clique com o botão direito no item filho e escolha "Ir para detalhes"
  4. Clique com o botão direito no executável destacado e escolha "Abrir local do arquivo"
  5. O nome do diretório que você acabou de abrir fornece o nome do pacote e o ID do editor, se você souber como analisá-los. Usando o aplicativo Calendário como exemplo, o nome do diretório, "microsoft.windowscommunicationsapps_16005.12827.20560.0_x64__8wekyb3d8bbwe", começa com o nome do pacote ("microsoft.windowscommunicationsapps"), é seguido pelas informações de versão e plataforma que você não precisa para isso ("16005.12827.20560.0_x64") e, em seguida, vem o ID do editor ("8wekyb3d8bbwe"). Anote o nome do pacote e o ID do editor para uso posterior.
  6. Abra o arquivo AppxManifest.xml nesse diretório
  7. Perto do topo do arquivo AppxManifest.xml, você encontrará um elemento Identity, com um atributo Name - confirme se esse valor corresponde ao nome do pacote, que já obtivemos do nome do diretório
  8. Pesquise o arquivo AppxManifest.xml pelo nome do executável, por exemplo, HxCalenderAppImm.exe, e você encontrará um elemento XML semelhante a este:
Isso fornece a terceira informação necessária: o ID do aplicativo.

Agora que você coletou as três informações de que precisamos, você pode criar o comando para abrir o aplicativo na linha de comando.

  1. Seu comando ficará assim, substituindo as porções pelas três informações coletadas acima:

    explorer.exe shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID>

Continuando com o exemplo do aplicativo Calendário do pacote Mail and Calendar, você inseriria algo assim:

explorer.exe shell:AppsFolder\microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.calendar

Caro Microsoft: Por favor, torne isso mais fácil!

Responder3

Acredito que agora seja possível, pelo menos de alguma forma. O aplicativo "Windows Scan", por exemplo, pode ser transformado em um atalho usando "Microsoft.WindowsScan_8wekyb3d8bbwe!App" como alvo.

informação relacionada