MSIX コンテナーでの実行時の問題のトラブルシューティング

この記事では、MSIX コンテナーで発生する実行時の問題をトラブルシューティングする方法について見ていきます。 MSIX コンテナー自体は比較的単純明快です。 修正パッケージの利用に伴い、同じパッケージ ID 内で実行されるアプリケーションが増えると、アプリケーションがインストールされた順序で、仮想レジストリおよび仮想ファイル システムがオーバーレイされていきます。

これらのアプリケーションのインストール順が予想外の問題を引き起こし、必要なレジストリ キーが上書きされたり、必要なファイルが置き換えられたりするケースがあります。

Invoke-CommandInDesktopPackage は、MSIX コンテナー内でアプリケーションを実行する目的に使用できる PowerShell コマンドレットであり、そのような問題の診断に役立ちます。 ユーザーはこれを使用して、コマンド プロンプト、レジストリ エディター、PowerShell を MSIX コンテナー内で実行したり、マージされたファイル システムやマージされたレジストリ ハイブを確認したりすることができます。

重要

Windows 10 ビルド 18922 未満で Invoke-CommandInDesktopPackage を使用するには、デバイスを開発者モードにする必要があります。

マージされたファイル システムを確認する

コンテナー内で実行中のアプリケーションから見えるファイル システムを確認するには、次の 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 パッケージ コンテナーのコンテキストでレジストリ エディターが起動されます。 そこで、ローカル コンピューターや現在のユーザーのレジストリ キーを参照したり、考えられる問題の原因を突き止めたりすることができます。

ヒント

Invoke-CommandInDesktopPackage の使用中、後続のプロセスを同じコンテナーで起動したい場合は、"-PreventBreakaway" フラグを使用してください。 それ以外の場合、後続の起動はそのコンテナーから抜け出します。

Note

すべてのアプリケーションをコンテナー内で起動できるではありません。 たとえば、explorer.exe はコンテナーから抜け出します。