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

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

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

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

重要

Invoke-CommandInDesktopPackage要求设备处于 18922 之前的 Windows 10 版本的开发人员模式。

查看合并的文件系统

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

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

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

查看合并注册表配置单元

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

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

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

提示

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

注意

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