Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida copre gli errori MSIX più comuni nell'installazione, la firma, il Programma di Installazione App, le dipendenze mancanti e il comportamento in fase di esecuzione. Ogni sezione include il sintomo, la causa radice e la risoluzione.
Per un log completo degli eventi di distribuzione, aprire Visualizzatore eventi e passare a: Applications and Services Logs → Microsoft → Windows → AppxDeployment-Server → Operational
Suggerimento
Per un set consolidato di diagnostiche, eseguire anche il Kit di certificazione delle app di Windows prima di distribuire il pacchetto.
Errori di installazione
0x80070005 - Accesso negato
Sintomo: Add-AppxPackage o Il programma di installazione app ha esito negativo con codice 0x80070005di errore .
Applica a: Windows 10 e versioni successive Windows 11
Cause e correzioni:
| Motivo | Correzione |
|---|---|
| Esecuzione come utente standard senza elevazione dei privilegi quando il pacchetto richiede l'installazione per computer | Eseguire PowerShell come amministratore. Per installare per tutti gli utenti, usare Add-AppxProvisionedPackage invece di Add-AppxPackage. |
| Antivirus o software di sicurezza che blocca il file del pacchetto | Disabilitare temporaneamente l'analisi in tempo reale o aggiungere un'esclusione per il .msix / .msixbundle file |
| Pacchetto preparato per un altro utente e non provisionato | Usare Add-AppxProvisionedPackage per effettuare il provisioning per tutti gli utenti |
| ACL del file system che bloccano l'accesso in lettura al pacchetto | Controllare le autorizzazioni per il file del pacchetto con icacls; concedere l'accesso in lettura all'utente che esegue l'installazione |
Installazione del pacchetto bloccata perché l'app è in uso
Sintomo: l'aggiornamento o la ripetizione dell'installazione ha esito negativo e viene visualizzato un errore che indica che il pacchetto è in uso. In Visualizzatore eventi si noterà che l'operazione di distribuzione è stata rifiutata.
Applica a: Windows 10 e versioni successive Windows 11
Correzione: chiudere tutte le istanze in esecuzione dell'app prima dell'aggiornamento. Se l'app è un servizio in background o ha un'attività in background registrata, potrebbe essere necessario terminare anche queste operazioni:
Get-Process -Name "MyApp" | Stop-Process -Force
Add-AppxPackage -Path .\updated-app.msix
Per le distribuzioni aziendali, è consigliabile pianificare gli aggiornamenti durante le finestre di manutenzione usando Intune o Gestione configurazione.
MinVersion o disallineamento dell'architettura
Symptom: l'installazione ha esito negativo e viene visualizzato un errore simile a "Impossibile installare il pacchetto perché non è compatibile con questa versione di Windows" o "Il pacchetto non è applicabile a questo computer".
Applica a: Windows 10 e versioni successive
Cause e correzioni:
| Motivo | Correzione |
|---|---|
Il pacchetto MinVersion nel manifesto è superiore alla versione del sistema operativo |
Creare un pacchetto separato destinato alla versione del sistema operativo installata o aggiornare il dispositivo |
| Mancata corrispondenza dell'architettura (ad esempio, pacchetto arm64 nel dispositivo x64) | Compilare e distribuire la variante di architettura corretta; usare un bundle (.msixbundle) per gestire più architetture da un file |
| Il pacchetto è destinato esclusivamente a un'API di Windows 11 senza il controllo di compatibilità | Aggiungere una voce TargetDeviceFamily per Windows 10 e Windows 11 oppure proteggere la chiamata API con un controllo della versione in fase di esecuzione |
Annotazioni
Usare i file .msixbundle per la distribuzione in ambienti a architettura mista. Un bundle contiene pacchetti per più architetture e Windows seleziona quello corretto al momento dell'installazione.
Add-AppxPackage ha esito positivo, ma l'app non è presente nel menu Start
Sintomo: PowerShell segnala l'esito positivo, ma l'app non viene visualizzata nell'elenco Start Menu o app.
Applica a: Windows 10 e versioni successive Windows 11
Cause comuni:
-
Installazione per utente vs. per macchina:
Add-AppxPackageinstalla solo per l'utente corrente. Se stai eseguendo come amministratore ma prevedi che l'app sia destinata a un altro utente, utilizzaAdd-AppxProvisionedPackageinvece. - Pacchetto registrato ma riquadro non aggiunto: l'app è installata ma il menu Start non è stato aggiornato. Disconnettersi e accedere di nuovo oppure selezionare Impostazioni → App per confermare l'installazione.
-
Voce del menu Start mancante nel manifesto: verificare che l'elemento
<Application>inAppxManifest.xmlincluda unaVisualElementsvoce con un oggetto validoSquare150x150Logo. -
Conflitto di nomi di famiglia di pacchetti duplicati: se una versione più recente o precedente dell'app è già installata con lo stesso nome della famiglia di pacchetti, la nuova installazione potrebbe sostituirla automaticamente. Controllare con
Get-AppxPackage -Name "YourPackageFamilyName".
Errori di firma e certificato
Annotazioni
Per i codici di errore e i flag di SignTool dettagliati, vedere Problemi noti e risoluzione dei problemi per SignTool.
Certificato non attendibile (0x800B0109)
Sintomo: l'installazione ha esito negativo e viene visualizzato l'errore 0x800B0109 "Catena di certificati elaborata, ma terminata in un certificato radice non considerato attendibile dal provider di attendibilità".
Applica a: Windows 10 e versioni successive Windows 11
Causa: il certificato usato per firmare il pacchetto non si trova negli archivi certificati attendibili del dispositivo. Ciò è comune quando si usano certificati autofirmato per lo sviluppo.
Correzione: importare il certificato di firma nel computer locale del dispositivo → archivio Persone attendibili (non l'archivio utenti corrente - Il programma di installazione app controlla solo l'archivio computer):
# Export the certificate from the package first (if needed)
$cert = (Get-AuthenticodeSignature -FilePath .\app.msix).SignerCertificate
Export-Certificate -Cert $cert -FilePath .\app-cert.cer
# Import into Trusted People (requires administrator rights)
Import-Certificate -FilePath .\app-cert.cer -CertStoreLocation Cert:\LocalMachine\TrustedPeople
Importante
Non importare i certificati di firma nell'archivio Autorità di certificazione radice attendibili, a meno che il certificato non sia una CA radice. L'importazione di certificati autofirmati non attendibili riduce la posizione di sicurezza del dispositivo.
Per le app di produzione, usare un certificato emesso da una CA attendibile o Azure Artifact Signing (precedentemente Trusted Signing), che si collega all'Autorità di Certificazione Radice di Verifica dell'Identità Microsoft, considerata attendibile per impostazione predefinita su Windows 10 versione 1809 e successive, e su Windows 11.
mancata corrispondenza del nome Publisher (0x8007000B, ID evento 150)
Symptom: Il programma SignTool si è arrestato con 0x8007000B e Visualizzatore eventi (log operativo AppxPackagingOM) mostra Event ID 150:
error 0x8007000B: The app manifest publisher name (CN=Contoso) must match
the subject name of the signing certificate (CN=Contoso, C=US).
Applica a: Windows 10 e versioni successive Windows 11
Cause: l'attributo Publisher in AppxManifest.xml deve corrispondere esattamente al nome subject del certificato di firma, inclusi tutti i campi dei nomi distinti nello stesso ordine.
Correzione:
Ottenere il nome del soggetto esatto dal certificato:
(Get-Item Cert:\CurrentUser\My\THUMBPRINT).Subject # Example output: CN=Contoso, C=USAggiornare
AppxManifest.xmlin modo che corrisponda esattamente:<Identity Name="Contoso.MyApp" Publisher="CN=Contoso, C=US" ... />Ri-creare un pacchetto con
MakeAppx.exee firmare di nuovo.
Suggerimento
Quando si utilizza Azure Artifact Signing (in precedenza Trusted Signing), il valore dell'autore nel manifesto deve corrispondere all'identità verificata, disponibile nel portale di Azure nel campo Nome del soggetto del profilo del certificato.
Errori dell'installer delle app e consegna tramite Web
Mancata corrispondenza della versione dello schema nel file appinstaller
Sintomo: il programma di installazione app non riesce ad analizzare o elaborare il .appinstaller file, spesso con un errore generico relativo a un file non valido o a uno schema non supportato.
Applies to: Windows 10 e versioni successive (dipende dalla versione - vedi tabella)
Cause: L'attributo Uri dell'elemento radice <AppInstaller> specifica una versione dello schema non supportata dalla versione installata di Windows.
Versioni dello schema per release di Windows:
| Windows versione | Versione minima dello schema supportata |
|---|---|
| Windows 10 versione 1709 | 1.0.0.0 |
| Windows 10 versione 1803 | 1.1.0.0 |
| Windows 10 versione 1809 | 1.2.0.0 |
| Windows 10 versione 1903 e successive, Windows 11 | 1.3.0.0, 1.4.0.0, 1.5.0.0 |
Correzione: impostare l'URI dello schema nel .appinstaller file sulla versione minima richiesta dal sistema operativo più basso supportato:
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller Uri="https://example.com/app.appinstaller"
Version="1.0.0.0"
xmlns="http://schemas.microsoft.com/appx/appinstaller/2017">
Evitare di usare la versione più recente dello schema se è necessario supportare le versioni di Windows 10 precedenti.
File serviti con tipo MIME non corretto o lunghezza contenuto mancante
Sintomo: il programma di installazione dell'app non riesce durante l'installazione da un endpoint HTTP/HTTPS. L'errore può essere generico, ad esempio 0x80072F76 ("Errore sconosciuto") o "Installazione dell'app non riuscita".
Applica a: Windows 10 e versioni successive
Causa: il server Web gestisce il .msixfile , .msixbundleo .appinstaller con un'intestazione non corretta Content-Type o omettendo l'intestazione Content-Length .
Correzione: configurare il server Web per gestire i file correlati a MSIX con i tipi MIME corretti:
| Estensione del file | Tipo MIME obbligatorio |
|---|---|
.msix |
application/msix |
.msixbundle |
application/msixbundle |
.appinstaller |
application/appinstaller |
.appx |
application/appx |
.appxbundle |
application/appxbundle |
Assicurarsi anche che ogni risposta includa un'intestazione valida Content-Length: questo si applica a entrambe le richieste GET e HEAD.
Per IIS, aggiungere mapping dei tipi MIME in web.config. Per App Web statiche di Azure o GitHub Pages, i tipi MIME per queste estensioni potrebbero richiedere una configurazione esplicita o una soluzione di hosting personalizzata.
Dipendenze mancanti
Pacchetto framework non installato (VCLibs, .NET, SDK per app di Windows)
Symptom: l'app viene installata correttamente ma si arresta in modo anomalo all'avvio o l'installazione ha esito negativo con un errore di dipendenza che fa riferimento a un nome della famiglia di pacchetti, ad esempio Microsoft.VCLibs, Microsoft.WindowsAppRuntime o Microsoft.NET.Native.
Applica a: Windows 10 e versioni successive Windows 11
Framework comuni e dove ottenerli:
| Struttura | Necessario quando | origine |
|---|---|---|
| VCLibs (x64/x86/arm64) | L'app usa il runtime C++ | Microsoft Store (installato automaticamente) o download diretto |
| runtime desktop .NET 8 | L'app è mirata a .NET 8 | Incluso con SDK per app di Windows, oppure download diretto |
| SDK per app di Windows (WinAppSDK) | L'app usa WinUI 3 o altre API WinAppSDK | SDK per app di Windows rilasci su GitHub |
Correzione per lo sviluppo: quando si esegue l'installazione tramite Add-AppxPackage localmente, aggiungere prima il -DependencyPackages parametro o installare i pacchetti del framework:
# Install VCLibs dependency first
Add-AppxPackage -Path .\Microsoft.VCLibs.x64.14.00.Desktop.appx
# Then install your app
Add-AppxPackage -Path .\MyApp.msix
Correzione per la distribuzione: se si distribuisce all'esterno dello Store, includere i pacchetti del framework nel proprio file sotto .appinstaller<Dependencies>:
<Dependencies>
<Package Name="Microsoft.VCLibs.140.00.UWPDesktop"
Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"
Version="14.0.30704.0"
Uri="https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx"
ProcessorArchitecture="x64"/>
</Dependencies>
Annotazioni
Quando si distribuisce tramite Microsoft Store, le dipendenze del framework vengono scaricate e installate automaticamente. La gestione manuale delle dipendenze è necessaria solo per il sideloading e nelle distribuzioni aziendali.
SignTool non trovato in CI/CD
Symptom: il pipeline CI/CD (GitHub Actions, Azure DevOps) fallisce con un errore simile a 'signtool' is not recognized as an internal or external command o SignTool.exe: not found.
Applica a: Windows 10 e versioni successive, Windows 11 (macchina di firma)
Cause: SignTool fa parte dell'SDK di Windows e non è incluso nelle immagini di runner CI standard di default.
Fixes:
Option 1 - Installare Windows SDK nella pipeline (GitHub Actions):
- name: Install Windows SDK
run: |
winget install --id Microsoft.WindowsSDK.10.0.22621 --accept-source-agreements --accept-package-agreements
Opzione 2 : usare l'interfaccia della riga di comando di WinApp (più semplice per la firma MSIX):
- name: Install WinApp CLI
run: winget install -e --id Microsoft.WinAppCLI --source winget --accept-source-agreements
- name: Sign MSIX
run: winapp sign output\MyApp.msix --cert ${{ secrets.CERT_THUMBPRINT }}
Opzione 3 — Utilizzo della Firma degli Artefatti di Azure (consigliato per la produzione):
- name: Sign with Azure Artifact Signing
uses: azure/trusted-signing-action@v0
with:
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
endpoint: ${{ secrets.AZURE_ARTIFACT_SIGNING_ENDPOINT }}
trusted-signing-account-name: ${{ secrets.AZURE_CODE_SIGNING_NAME }}
certificate-profile-name: ${{ secrets.AZURE_CERT_PROFILE_NAME }}
files-folder: ${{ github.workspace }}\output
files-folder-filter: msix
Annotazioni
L'azione GitHub è denominata azure/trusted-signing-action (il nome del servizio precedente). Questa è l'azione ufficiale indipendentemente dal rebranding di Firma Artefatto.
Per una procedura dettagliata completa della configurazione della firma CI/CD, vedere Firmare il pacchetto MSIX - guida end-to-end.
Comportamento di runtime e virtualizzazione
I pacchetti MSIX vengono eseguiti all'interno di un contenitore di app leggero. Alcuni comportamenti che sembrano essere bug sono in realtà per progettazione: il contenitore intercetta le operazioni di file e registro per proteggere il resto del sistema.
Perché le scritture di file sembrano scomparire (reindirizzamento di file VFS)
Sintomo: l'app scrive un file in un percorso come C:\Program Files\MyApp\config.ini in fase di esecuzione, ma il file non viene visualizzato. L'app legge correttamente il valore, ma altri processi o utenti non lo vedono.
Applica a: Windows 10 e versioni successive Windows 11
Spiegazione: MSIX usa il reindirizzamento VFS (Virtual File System). Le scritture nei percorsi di sistema protetti vengono reindirizzate automaticamente a un contenitore per utente:
%LocalAppData%\Packages\<PackageFamilyName>\LocalCache\Local\VFS\
Si tratta di una procedura predefinita, che impedisce alle app MSIX di modificare i percorsi di sistema condivisi, supportando la disinstallazione pulita.
Opzioni:
-
Usare invece cartelle dati dell'app: scrivere in
ApplicationData.Current.LocalFolder(WinRT) o%LocalAppData%\Packages\<PFN>\LocalState\per i dati per utente che devono essere persistenti. -
Utilizzare
AppData\Roamingper i dati che devono essere trasferiti tra dispositivi. -
Esaminare il contenitore VFS per visualizzare i file reindirizzati:
%LocalAppData%\Packages\<PackageFamilyName>\LocalCache\
Per altri dettagli sui percorsi virtualizzati, vedere Risolvere i problemi di runtime in un contenitore MSIX.
Perché le scritture del Registro di sistema sembrano scomparire (virtualizzazione del Registro di sistema)
Sintomo: l'app scrive in HKEY_LOCAL_MACHINE\Software\MyApp\ in fase di esecuzione, ma il valore non è visibile ad altri processi né sopravvive a una reinstallazione.
Applica a: Windows 10 e versioni successive Windows 11
Spiegazione: MSIX intercetta le operazioni di scrittura HKLM\Software e le reindirizza a un hive del Registro di sistema per singolo pacchetto isolato dal resto del sistema. In caso di disinstallazione, l'hive viene eliminato.
Opzioni:
- Scrivere le impostazioni per utente in
HKEY_CURRENT_USER\Software\<AppName>: queste impostazioni non sono virtualizzate e persistenti. - Usare le API Windows ApplicationData per l'archiviazione delle impostazioni strutturate.
- Dichiarare le voci del Registro di sistema che devono essere condivise tra utenti o processi tramite il meccanismo
AppxManifest.xml<Extensions>/<com:Extension>.
Per un'analisi più approfondita del comportamento del contenitore MSIX, vedere Informazioni sull'esecuzione delle app desktop in pacchetto in Windows.
Windows 10 limitazioni di MSIX
Alcune funzionalità MSIX richiedono Windows 11 o una versione Windows 10 specifica. Se si esegue la distribuzione su dispositivi Windows 10, tenete presente quanto segue.
Funzionalità che richiedono Windows 10 versione 2004 (build 19041) o successiva
| Feature | Versione minima |
|---|---|
Aggiornamento automatico dello schema 2021 (ShowPrompt, UpdateBlocksActivation) |
Windows 10 2004 (19041) |
Verifica dell'integrità del pacchetto (uap10:PackageIntegrity) |
Windows 10 2004 (19041) |
| Ripristino automatico del programma di installazione app | Windows 10 2004 (19041) |
| Nessuna opzione separata per la politica di sideloading per l'installazione di pacchetti di app attendibili; vedere Abilitare il dispositivo per lo sviluppo per i requisiti attuali. | Windows 10 2004 (19041) |
Funzionalità che richiedono Windows 11
| Feature | Note |
|---|---|
| Identità di pacchetto sparsa senza confezionamento completo | Richiede Windows 11 |
| Supporto MSIX per le app non in pacchetto con posizione esterna (supporto completo della piattaforma) | Alcune API sono state migliorate in Windows 11 |
| Miglioramento delle prestazioni delle installazioni MSIX su macchine individuali. | ottimizzazioni Windows 11 |
Windows 10 dispositivi precedenti alla versione 1709
MSIX non è supportato in modo nativo nelle versioni di Windows 10 precedenti alla versione 1709 (Fall Creators Update). Per distribuire pacchetti MSIX in tali dispositivi, usare MSIX Core, che fornisce un livello di compatibilità per le versioni di livello inferiore Windows 10.
Estensioni del file di manifest
Alcune estensioni dello spazio dei nomi AppxManifest.xml sono solo Windows 11. Dichiararle in un pacchetto per Windows 10 potrebbe far fallire la convalida dello schema durante l'impacchettamento o essere rifiutate durante l'installazione. Controllare il riferimento allo schema del manifesto del pacchetto app per l'elenco MinOSVersion per ogni estensione.
Suggerimento per il debug
Per verificare quali funzionalità MSIX sono disponibili in una build Windows 10 specifica, controllare le funzionalità MSIX e le piattaforme supportate pagina, che elenca la disponibilità delle funzionalità per versione del sistema operativo.
" output is necessary.)
- Panoramica della firma di un pacchetto MSIX
- Firmare il pacchetto MSIX - Guida end-to-end
- Problemi noti e risoluzione dei problemi per SignTool
- Risolvere i problemi con l'installazione delle app
- Risolvere i problemi di runtime in un contenitore MSIX
- Risoluzione dei problemi di confezionamento, distribuzione e query delle applicazioni Windows