Solución de problemas en tiempo de ejecución en un contenedor MSIX

En este artículo, revisaremos cómo solucionar problemas en tiempo de ejecución que se producen en un contenedor MSIX. Los contenedores MSIX por sí mismos son relativamente simples y sencillos. A medida que se ejecutan más aplicaciones dentro de la misma identidad de paquete con la ayuda de los paquetes de modificación, el registro virtual y el sistema de archivos virtual se reemplazarán en el orden en que se instalan las aplicaciones.

Puede haber casos en los que el orden en el que se instalan estas aplicaciones pueda provocar problemas imprevistos que provocaran que se pudieran sobrescribir las claves del Registro esperadas y se pudieran reemplazar los archivos esperados.

Para ayudar a diagnosticar estos problemas, Invoke-CommandInDesktopPackage es un cmdlet de PowerShell que se puede usar para ejecutar una aplicación dentro del contenedor MSIX. Esto permite a los usuarios ejecutar el símbolo del sistema, el editor del registro, PowerShell dentro del contenedor MSIX y también obtener una vista del sistema de archivos combinado y del subárbol del registro combinado.

Importante

Invoke-CommandInDesktopPackage requiere que el dispositivo esté en modo desarrollador para compilaciones de Windows 10 anteriores a la 18922.

Visualización del sistema de archivos combinado

Para ver el sistema de archivos tal como lo observan las aplicaciones que se ejecutan dentro del contenedor, use el siguiente comando de PowerShell:

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

El comando anterior iniciará una instancia de cmd.exe en el contenedor de paquetes Contoso.AppPackage1_8h66172c634n0. A medida que ejecuta el símbolo del sistema desde dentro del contenedor, puede examinar el sistema de archivos y ver los archivos combinados.

Visualización del subárbol del registro combinado

Para ver el subárbol completo del registro de dispositivos, tal como lo observan las aplicaciones que ejecutan desde dentro del contenedor, use el siguiente comando de PowerShell:

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

El comando anterior iniciará el editor del registro en el contexto del contenedor de paquetes Contoso.AppPackage1_8h66172c634n0. Aquí puede examinar la máquina local y las claves del registro de usuario actuales, así como identificar el posible infractor que está causando el problema.

Sugerencia

Use la marca "-PreventBreakaway" al usar Invoke-CommandInDesktopPackage si quiere iniciar procesos posteriores en el mismo contenedor. De lo contrario, cualquier lanzamiento posterior se interrumpirá en el contenedor.

Nota:

No todas las aplicaciones se pueden iniciar en el contenedor. Por ejemplo, explorer.exe interrumpirá el contenedor.