排查 MSIX 容器中的运行时问题

本文介绍如何排查 MSIX 容器中发生的运行时问题。 MSIX 容器本身相对简单直接。 由于在修改包的帮助下,同一包标识中运行了更多应用程序,因此虚拟注册表和虚拟文件系统将按应用程序的安装顺序过度布局。

在某些情况下,安装这些应用程序的顺序可能会导致未发现的问题,其中可能会覆盖预期的注册表项,并可能会替换预期的文件。

为帮助诊断此类问题 ,Invoke-CommandInDesktopPackage 是可用于在 MSIX 容器内运行应用程序的 PowerShell cmdlet。 这允许用户在 MSIX 容器内运行命令提示符、注册表编辑器和 PowerShell,并获取合并文件系统和合并的注册表配置单元的视图。

重要

Invoke-CommandInDesktopPackage要求设备在 18922 之前Windows 10开发人员模式。

查看合并的文件系统

若要查看容器内运行的应用程序观察到的文件系统,请使用以下 PowerShell 命令:

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

上述命令将启动 cmd.exe 包容器中 Contoso.AppPackage1_8h66172c634n0实例。 从容器内部运行命令提示符时,可以浏览文件系统并查看合并的文件。

查看合并的注册表配置单元

若要查看内部运行容器的应用程序观察到的完整设备注册表配置单元,请使用以下 PowerShell 命令:

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

上述命令将在包容器的上下文中启动Contoso.AppPackage1_8h66172c634n0编辑器。 可在此处浏览本地计算机和当前用户注册表项,并确定导致此问题的可能原因。

提示

如果要在同一容器中启动后续进程,Invoke-CommandInDesktopPackage时使用"-PreventBreakaway"标志。 否则,任何后续启动都将中断容器。

备注

并非所有应用程序都可以在容器中启动。 例如,explorer.exe容器的分支。