Solucionar problemas de runtime em um contêiner do MSIX

Neste artigo, abordaremos como você pode solucionar problemas de tempo de execução que surgem em um contêiner MSIX. Os contêineres MSIX por si só são relativamente simples e diretos. À medida que mais aplicativos são executados sob a mesma identidade de pacote com a ajuda de pacotes de modificação, o registro virtual e o sistema de arquivos virtual serão sobrepostos na ordem de instalação dos aplicativos.

Pode haver casos em que a ordem de instalação desses aplicativos pode levar a problemas inesperados, nos quais as chaves de registro esperadas podem ser sobrescritas e os arquivos esperados podem ser substituídos.

Para ajudar no diagnóstico desses problemas, Invoke-CommandInDesktopPackage é um cmdlet do PowerShell que pode ser usado para executar um aplicativo dentro do contêiner MSIX. Isso possibilita que os usuários executem o prompt de comando, o editor de registro e o PowerShell dentro do contêiner MSIX, permitindo uma visão do sistema de arquivos mesclado e do registro mesclado.

Importante

Invoke-CommandInDesktopPackage necessita que o dispositivo esteja configurado no modo de Desenvolvedor nas versões do Windows 10 anteriores à compilação 18922.

Exibir o sistema de arquivos mesclado

Para visualizar o sistema de arquivos da perspectiva das aplicações que estão sendo executadas dentro do contêiner, execute o seguinte comando do PowerShell:

Invoke-CommandInDesktopPackage -AppId "AppPackage1" -PackageFamilyName "Contoso.AppPackage1_8h66172c634n0" -Command "cmd.exe" -PreventBreakaway

O comando acima abrirá uma instância do cmd.exe no contêiner do pacote Contoso.AppPackage1_8h66172c634n0. Como você está executando o prompt de comando de dentro do contêiner, você pode navegar pelo sistema de arquivos e exibir os arquivos mesclados.

Exibir o hive do registro mesclado

Para visualizar o registro completo do dispositivo a partir da perspectiva das aplicações que estão sendo executadas dentro do contêiner, execute o seguinte comando do PowerShell:

Invoke-CommandInDesktopPackage -AppId "AppPackage1" -PackageFamilyName "Contoso.AppPackage1_8h66172c634n0" -Command "regedit.exe" -PreventBreakaway

O comando acima iniciará o editor de registro no contexto do contêiner do pacote Contoso.AppPackage1_8h66172c634n0. Aqui você pode navegar pelas chaves de registro do computador local e do usuário atual e identificar possíveis causas do problema.

Dica

Use o sinalizador '-PreventBreakaway' ao usar o Invoke-CommandInDesktopPackage caso queira iniciar processos subsequentes no mesmo contêiner. Caso contrário, qualquer lançamento subsequente sairá do contêiner.

Observação

Nem todos os aplicativos podem ser iniciados dentro do contêiner. Por exemplo, o explorer.exe sairá do contêiner.