Risolvere i problemi di runtime in un contenitore MSIX

In questo articolo verrà illustrato come risolvere i problemi di runtime che si verificano in un contenitore MSIX. I contenitori MSIX sono relativamente semplici e semplici. Poiché più applicazioni vengono eseguite all'interno della stessa identità del pacchetto con l'aiuto dei pacchetti di modifica, il Registro di sistema virtuale e il file system virtuale verranno eseguiti eccessivamente nell'ordine in cui vengono installate le applicazioni.

Possono verificarsi casi in cui l'ordine in cui queste applicazioni vengono installate potrebbe causare problemi imprevisti in cui le chiavi del Registro di sistema previste potrebbero essere sovrascritte e i file previsti potrebbero essere sostituiti.

Per facilitare la diagnosi di questi problemi, Invoke-CommandInDesktopPackage è un cmdlet di PowerShell che può essere usato per eseguire un'applicazione all'interno del contenitore MSIX. Ciò consente agli utenti di eseguire il prompt dei comandi, l'editor del Registro di sistema, PowerShell all'interno del contenitore MSIX e ottenere una visualizzazione del file system unito e dell'hive del Registro di sistema unito.

Importante

Invoke-CommandInDesktopPackage richiede che il dispositivo sia in modalità sviluppatore per le build di Windows 10 precedenti alla versione 18922.

Visualizzare il file system unito

Per visualizzare il file system come osservato dalle applicazioni in esecuzione all'interno del contenitore, usare il comando di PowerShell seguente:

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

Il comando precedente avvierà un'istanza di cmd.exe nel contenitore del pacchetto Contoso.AppPackage1_8h66172c634n0 . Quando si esegue il prompt dei comandi dall'interno del contenitore, è possibile esplorare il file system e visualizzare i file uniti.

Visualizzare l'hive del Registro di sistema unito

Per visualizzare l'hive completo del Registro di sistema dei dispositivi come osservato dalle applicazioni che eseguono insider il contenitore, usare il comando di PowerShell seguente:

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

Il comando precedente avvierà l'editor del Registro di sistema nel contesto del contenitore del pacchetto Contoso.AppPackage1_8h66172c634n0 . Qui è possibile esplorare il computer locale e le chiavi correnti del Registro di sistema dell'utente e identificare il possibile reato che causa il problema.

Suggerimento

Usare il flag '-PreventBreakaway' durante l'uso di Invoke-CommandInDesktopPackage se si desidera avviare processi successivi nello stesso contenitore. In caso contrario, qualsiasi avvio successivo verrà interrotto dal contenitore.

Nota

Non tutte le applicazioni possono essere avviate all'interno del contenitore. Ad esempio, explorer.exe interromperà il contenitore.