Risoluzione dei problemi di distribuzione MSIX

Questo articolo illustra come diagnosticare e risolvere gli errori di installazione e distribuzione MSIX. Vengono illustrati i codici di errore comuni, la lettura dei log di distribuzione e le correzioni per i problemi segnalati più di frequente.

Annotazioni

I riferimenti a .msix in questo articolo si applicano allo stesso modo a .msixbundle, .appx, .appxbundlee alle relative varianti crittografate (.emsix, .eappxe così via) se non diversamente specificato.

Passaggio 1: Leggere i log di distribuzione

Quando un'installazione MSIX non riesce, il codice di errore visualizzato nell'interfaccia utente è spesso un riepilogo generale. I log di Visualizzatore eventi e PowerShell contengono la causa sottostante.

Visualizzatore eventi

Aprire Visualizzatore eventi e passare a: Applications and Services Logs > Microsoft > Windows > AppxDeployment-Server

Cercare gli eventi con un livello critico, di errore o di avviso corrispondente all'ora dell'installazione non riuscita. Il riquadro dei dettagli contiene in genere un codice di errore e una descrizione più specifici di quelli visualizzati dall'utente.

PowerShell

Get-AppxLog | Where-Object {$_.EventId -eq 404} | Select-Object -Last 20

Oppure per una visualizzazione interattiva e filtrabile:

Get-AppxLog | Out-GridView

Passaggio 2: Controllare i codici di errore comuni

La tabella seguente illustra i codici di errore segnalati più frequentemente dagli sviluppatori. Se il codice non è elencato, vedere Risoluzione dei problemi di packaging, deployment e query di applicazioni Windows per ulteriori informazioni.

Codice di errore Nome Causa comune Correzione
0x80073CF0 ERROR_INSTALL_OPEN_PACKAGE_FAILED Impossibile aprire il file del pacchetto: file mancante, percorso errato o problema di autorizzazioni Verificare che il .msix file esista nel percorso specificato. Se si esegue l'installazione tramite PowerShell, usare un percorso locale, non un percorso di condivisione UNC/network. Eseguire PowerShell con privilegi di amministratore.
0x80073CF3 ERROR_INSTALL_PACKAGE_DOWNGRADE È già installata una versione più recente del pacchetto Disinstallare prima la versione esistente o modificare il numero di versione nel manifesto del pacchetto impostando un valore superiore.
0x80073CF6 ERROR_INSTALL_REGISTRATION_FAILURE Registrazione del pacchetto non riuscita: spesso un database di registrazione del pacchetto danneggiato o un file di sistema Eseguire wsreset -i per reimpostare la cache di Microsoft Store. Se il problema persiste, eseguire sfc /scannow per ripristinare i file di sistema o provare Impostazioni > App installate [Nome app > ] > Opzioni avanzate > Ripristina. Controllare Visualizzatore eventi per un errore interno più specifico.
0x80073CF9 ERROR_INSTALL_PACKAGE_NOT_FOUND Impossibile trovare il pacchetto o un pacchetto di dipendenza durante l'installazione Assicurarsi che tutti i pacchetti di dipendenza (VCLibs, .NET, il runtime WinAppSDK) siano installati prima del pacchetto principale. È possibile installarli nello stesso comando: Add-AppxPackage main.msix -DependencyPath dep1.msix, dep2.msix
0x80073CFA ERROR_REMOVE_FAILED Operazione di disinstallazione/rimozione non riuscita: l'app potrebbe essere in esecuzione, il relativo stato potrebbe essere danneggiato o è un'app posta in arrivo protetta Chiudere tutte le istanze dell'app e riprovare. Per lo stato danneggiato, provare in un ambiente di avvio pulito. Le app di sistema/posta in arrivo non possono essere rimosse tramite Remove-AppxPackage.
0x80073CFB ERROR_PACKAGE_ALREADY_EXISTS Pacchetto identico già registrato per questo utente Disinstallare prima il pacchetto esistente: Get-AppxPackage <PackageName> | Remove-AppxPackage
0x80073D02 ERROR_PACKAGES_IN_USE Il pacchetto è attualmente in uso da un processo in esecuzione Chiudere tutte le istanze in esecuzione dell'app prima di aggiornare o disinstallare. Usare il Task Manager o Get-Process per confermare.
0x8007000D ERROR_INVALID_DATA Il pacchetto è danneggiato, formattato in modo non corretto o l'editore nel manifesto non corrisponde al certificato di firma Verificare che il campo Publisher in AppxManifest.xml (o Package.appxmanifest in Visual Studio) corrisponda esattamente al Subject del certificato di firma (inclusa la spaziatura e la maiuscola). Ricompilare e firmare nuovamente il pacchetto.
0x8BAD0042 CertNotTrusted Il certificato di firma non è considerato attendibile dal dispositivo (comunemente visto quando si usa MSIX Core in Windows di livello inferiore) Importare il certificato di firma nell'archivio Persone attendibili del computer > locale (non nell'archivio utenti corrente) nel dispositivo di destinazione oppure usare un certificato emesso da una CA attendibile. Vedere Certificati attendibili.
0x80070005 E_ACCESSDENIED Autorizzazioni insufficienti Eseguire il comando di installazione o lo script con privilegi di amministratore, ad esempio da un prompt dei comandi aperto con Esegui come amministratore.
0x80070002 ERROR_FILE_NOT_FOUND Un file a cui si fa riferimento nel manifesto non esiste nel pacchetto Verificare la presenza di risorse o asset mancanti a cui si fa riferimento in AppxManifest.xml. Ricompilare il pacchetto e verificarne il contenuto con MakeAppx unpack.

Suggerimento

Installazione da una condivisione di rete? Una causa comune di errori fuorvianti (in particolare 0x80073CF0 e 0x80070002) è l'esecuzione di Add-AppxPackage su un percorso UNC (\\server\share\app.msix). Copiare prima il .msix file in una cartella locale, quindi installarlo.

Passaggio 3: verifica i prerequisiti

Molti errori di installazione sono causati da prerequisiti non soddisfatti anziché da un problema con il pacchetto stesso.

Attendibilità del certificato — Il certificato di firma del pacchetto deve trovarsi nell'archivio Personale attendibile del computer locale, non nell'archivio certificati dell'utente corrente.

Sideloading — Nelle versioni di Windows 10 precedenti alla 1809 (RS5), il sideloading richiedeva un'impostazione della politica separata. Da RS5 in poi l'impostazione predefinita consente installazioni di pacchetti di app attendibili; in Windows 11, non è necessaria alcuna impostazione aggiuntiva. Consulta Abilitare il dispositivo per lo sviluppo per i requisiti correnti.

Dependencies: Le app SDK per app di Windows richiedono l'installazione del runtime SDK per app di Windows sul dispositivo di destinazione, a meno che non si usi la distribuzione autonoma. Usare il -DependencyPath parametro con Add-AppxPackage per installare i pacchetti di dipendenza insieme al pacchetto principale.

App Installer : Se facendo doppio clic su un .msix file non succede nulla, l'app App Installer potrebbe non essere presente. Installarlo dal Microsoft Store.

Passaggio 4: Convalidare il manifesto del pacchetto

Gli errori nel manifesto sono una causa comune di errori durante l'installazione. Usare MakeAppx per verificare la struttura del pacchetto e controllare il manifesto:

# Unpack the package and inspect the manifest
MakeAppx unpack /p "C:\path\to\app.msix" /d "C:\unpack-output"

Controlla AppxManifest.xml nella cartella di output per:

  • Validità XML (nessun tag in formato non valido o elementi di chiusura mancanti)
  • Publisher campo corrispondente esattamente al Subject del certificato di firma
  • Nomi di funzionalità che usano lo spazio dei nomi corretto per la versione del sistema operativo di destinazione
  • vincoli MinOSVersion per tutte le estensioni per Windows 11

Consulta il riferimento sullo schema del manifesto del pacchetto dell'app per gli attributi e i namespace supportati.

Codici di errore DEP comuni

Visual Studio e MSBuild evidenziano gli errori di distribuzione con un prefisso DEP. I più comuni:

Codice Meaning Correzione
DEP0700 Registrazione del pacchetto non riuscita In genere, si verifica un errore dello schema del manifesto: verificare la presenza di nomi XML non validi, dichiarazioni non supportate xmlns o nomi di funzionalità che non corrispondono all'elenco consentito.
DEP3300 Dipendenza non trovata Installare il pacchetto framework richiesto (VCLibs, .NET, WinAppSDK) prima della distribuzione.
DEP3301 Pacchetto già registrato con un'architettura diversa Disinstallare l'architettura in conflitto prima di distribuire una compilazione di architettura diversa.

Risorse aggiuntive

Hai domande? Chiedere GitHub Copilot o cercare Stack Overflow usando il tag msix.