Handleiding voor het oplossen van problemen met MSIX

In deze handleiding worden de meest voorkomende MSIX-fouten behandeld tijdens de installatie, ondertekening, levering van app-installatieprogramma's, ontbrekende afhankelijkheden en runtimegedrag. Elke sectie bevat het symptoom, de hoofdoorzaak en de oplossing.

Voor een volledig logboek met implementatiegebeurtenissen opent u Logboeken en gaat u naar: Applications and Services Logs → Microsoft → Windows → AppxDeployment-Server → Operational

Aanbeveling

Voer voor een geconsolideerde set diagnostische gegevens ook Windows-app Certification Kit uit voordat u uw pakket distribueert.

Installatiefouten

0x80070005 — Toegang geweigerd

Symptoom: Add-AppxPackage of app-installatieprogramma mislukt met foutcode 0x80070005.

Van toepassing op: Windows 10 en hoger, Windows 11

Oorzaken en oplossingen:

Oorzaak Repareren
Uitvoeren als een standaardgebruiker zonder elevatie wanneer de installatie van het pakket per machine vereist is Voer PowerShell uit als administrator. Om te installeren voor alle gebruikers, gebruikt u Add-AppxProvisionedPackage in plaats van Add-AppxPackage.
Antivirus- of beveiligingssoftware die het pakketbestand blokkeert Scannen in realtime tijdelijk uitschakelen of een uitsluiting voor het .msix / .msixbundle bestand toevoegen
Pakket voor een andere gebruiker en niet geprovisioneerd Gebruiken Add-AppxProvisionedPackage om in te richten voor alle gebruikers
Bestandssysteem-ACL's blokkeren leestoegang tot het pakket Controleer de machtigingen voor het pakketbestand met icacls; geef leestoegang aan de gebruiker die installeert

Installatie van het pakket is geblokkeerd omdat de app in gebruik is

Symptoom: Bijwerken of opnieuw installeren mislukt met een fout die aangeeft dat het pakket wordt gebruikt. In Logboeken ziet u dat de implementatiebewerking is geweigerd.

Van toepassing op: Windows 10 en later, Windows 11

Oplossing: Sluit alle actieve exemplaren van de app voordat u deze bijwerkt. Als de app een achtergrondservice is of een achtergrondtaak heeft geregistreerd, moet u deze mogelijk ook beëindigen:

Get-Process -Name "MyApp" | Stop-Process -Force
Add-AppxPackage -Path .\updated-app.msix

Voor bedrijfsimplementaties kunt u overwegen om updates te plannen tijdens onderhoudsvensters met behulp van Intune of Configuration Manager.

MinVersion of architectuur komt niet overeen

Symptom: De installatie mislukt met een fout zoals 'Het pakket kan niet worden geïnstalleerd omdat het niet compatibel is met deze versie van Windows' of 'Het pakket is niet van toepassing op deze computer'.

Van toepassing op: Windows 10 en hoger

Oorzaken en oplossingen:

Oorzaak Repareren
Pakket MinVersion in het manifest is hoger dan de versie van het besturingssysteem Bouw een afzonderlijk pakket dat gericht is op de geïnstalleerde versie van het besturingssysteem of werk het apparaat bij
Architectuur komt niet overeen (bijvoorbeeld arm64-pakket op x64-apparaat) Bouw en distribueer de juiste architectuurvariant; een bundel (.msixbundle) gebruiken om meerdere architecturen uit één bestand te leveren
Het pakket is gericht op een Windows 11-only-API zonder compatibiliteitscontrole Voeg een vermelding TargetDeviceFamily toe voor zowel Windows 10 als Windows 11, of beveilig de API-aanroep met een versiecontrole tijdens runtime

Opmerking

Gebruik .msixbundle bestanden bij het distribueren naar omgevingen met gemengde architectuur. Een bundel bevat pakketten voor meerdere architecturen en Windows het juiste pakket selecteert tijdens de installatie.

Add-AppxPackage slaagt, maar de app ontbreekt in het menu Start

Symptoom: PowerShell rapporteert dat de app is geslaagd, maar de app wordt niet weergegeven in het menu Start of in de lijst met apps.

Van toepassing op: Windows 10 en hoger, Windows 11

Veelvoorkomende oorzaken:

  • Installatie per gebruiker versus per computer: Add-AppxPackage installeert alleen voor de huidige gebruiker. Als u als beheerder werkt, maar de app voor een andere gebruiker verwacht, gebruikt u Add-AppxProvisionedPackage in plaats daarvan.
  • Pakket geregistreerd maar tegel niet vastgezet: de app is geïnstalleerd, maar het startmenu is nog niet bijgewerkt. Meld u af en weer aan of controleer Instellingen → Apps om de installatie te bevestigen.
  • Ontbrekende Startmenu-vermelding in het manifest: Controleer of het <Application>-element in AppxManifest.xml een VisualElements-vermelding met een geldig Square150x150Logo bevat.
  • Dubbele pakketfamilienaamconflict: Als er al een nieuwere of oudere versie van de app is geïnstalleerd met dezelfde pakketfamilienaam, kan de nieuwe installatie deze stilletjes vervangen. Neem contact op met Get-AppxPackage -Name "YourPackageFamilyName".

Fouten bij ondertekening en certificaat

Certificaat niet vertrouwd (0x800B0109)

Symptoom: de installatie mislukt met een fout 0x800B0109 : 'Een certificaatketen is verwerkt, maar beëindigd in een basiscertificaat dat niet wordt vertrouwd door de vertrouwensprovider'.

Van toepassing op: Windows 10 en hoger, Windows 11

Oorzaak: Het certificaat dat wordt gebruikt om het pakket te ondertekenen, bevindt zich niet in de vertrouwde certificaatarchieven van het apparaat. Dit is gebruikelijk bij het gebruik van zelfondertekende certificaten voor ontwikkeling.

Oplossing: Importeer het handtekeningcertificaat in de lokale computer van het apparaat → archief vertrouwde personen (niet het huidige gebruikersarchief: app-installatieprogramma controleert alleen het computerarchief):

# 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

Belangrijk

Importeer ondertekeningscertificaten niet in het archief vertrouwde basiscertificeringsinstanties , tenzij het certificaat een basis-CA is. Als u niet-vertrouwde zelfondertekende certificaten importeert, verzwakt het beveiligingspostuur van het apparaat.

Gebruik voor productie-apps een certificaat dat is uitgegeven door een vertrouwde CA of Azure Artifact Signing (voorheen Vertrouwde ondertekening), die is gekoppeld aan de Microsoft Basiscertificeringsinstantie voor identiteitsverificatie, die standaard wordt vertrouwd op Windows 10 versie 1809 en hoger, Windows 11.

Publisher naam komt niet overeen (0x8007000B, gebeurtenis-id 150)

Symptom: SignTool mislukt met 0x8007000B en Logboeken (Operationeel logboek AppxPackagingOM) toont 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).

Van toepassing op: Windows 10 en hoger, Windows 11

Cause: Het kenmerk Publisher in AppxManifest.xml moet exact overeenkomen met de subjectnaam van het handtekeningcertificaat, inclusief alle gedistingeerde naamvelden in dezelfde volgorde.

Herstel:

  1. Haal de exacte onderwerpnaam op uit het certificaat:

    (Get-Item Cert:\CurrentUser\My\THUMBPRINT).Subject
    # Example output: CN=Contoso, C=US
    
  2. Werk AppxManifest.xml bij zodat deze exact overeenkomt:

    <Identity Name="Contoso.MyApp"
              Publisher="CN=Contoso, C=US"
              ... />
    
  3. Opnieuw verpakken met MakeAppx.exe en opnieuw ondertekenen.

Aanbeveling

Wanneer u Azure Artefactondertekening (voorheen Vertrouwde ondertekening) gebruikt, moet de waarde van de uitgever in uw manifest overeenkomen met uw geverifieerde identiteit, te vinden in de Azure-portal onder het veld Subjectnaam van uw certificaatprofiel.

App Installer- en webleveringsfouten

Schemaversie komt niet overeen in het .appinstaller-bestand

Symptoom: Het app-installatieprogramma kan het .appinstaller bestand niet parseren of verwerken, vaak met een algemene fout over een ongeldig bestand of een niet-ondersteund schema.

Van toepassing op: Windows 10 en later (versieafhankelijk — zie tabel)

Cause: Het kenmerk Uri van het hoofdelement <AppInstaller> geeft een schemaversie op die niet wordt ondersteund door de geïnstalleerde versie van Windows.

Schema-versies per Windows-versie:

Windows versie Minimaal ondersteunde schemaversie
Windows 10 versie 1709 1.0.0.0
Windows 10 versie 1803 1.1.0.0
Windows 10 versie 1809 1.2.0.0
Windows 10 versie 1903 en hoger Windows 11 1.3.0.0, 1.4.0.0, 1.5.0.0

Oplossing: Stel de schema-URI in uw .appinstaller bestand in op de minimale versie die vereist is voor de laagst ondersteunde versie van uw besturingssysteem.

<?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">

Vermijd het gebruik van de nieuwste schemaversie als u oudere Windows 10 versies moet ondersteunen.

Bestanden die worden geleverd met een onjuist MIME-type of ontbrekende inhoudslengte

Symptoom: App Installer mislukt bij het installeren vanaf een HTTP/HTTPS-eindpunt. De fout kan algemeen zijn, zoals 0x80072F76 ('Onbekende fout') of 'App-installatie is mislukt'.

Van toepassing op: Windows 10 en hoger

Oorzaak: De webserver dient het .msix, .msixbundle of .appinstaller bestand met een onjuiste Content-Type header, of laat de Content-Length header weg.

Oplossing: Configureer uw webserver voor MSIX-gerelateerde bestanden met de juiste MIME-typen:

Bestandsextensie Vereist MIME-type
.msix application/msix
.msixbundle application/msixbundle
.appinstaller application/appinstaller
.appx application/appx
.appxbundle application/appxbundle

Zorg er ook voor dat elk antwoord een geldige Content-Length header bevat. Dit geldt voor zowel als GETHEAD aanvragen.

Voor IIS voegt u MIME-typetoewijzingen toe in web.config. Voor Azure Static Web Apps of GitHub Pages hebben MIME-typen voor deze extensies mogelijk expliciete configuratie of een aangepaste hostingoplossing nodig.

Ontbrekende afhankelijkheden

Framework-pakket niet geïnstalleerd (VCLibs, .NET, Windows App SDK)

Symptom: de app wordt geïnstalleerd, maar loopt vast bij het starten of de installatie mislukt met een afhankelijkheidsfout die verwijst naar een familienaam van een pakket, zoals Microsoft.VCLibs, Microsoft.WindowsAppRuntime of Microsoft.NET.Native.

Van toepassing op: Windows 10 en hoger, Windows 11

Algemene frameworks en waar u ze kunt ophalen:

Raamwerk Nodig wanneer bron
VCLibs (x64/x86/arm64) App maakt gebruik van C++ runtime Microsoft Store (automatisch geïnstalleerd) of directe download
.NET 8 Desktop Runtime App richt zich op .NET 8 Opgenomen in Windows App SDK; of direct download
Windows App SDK (WinAppSDK) App maakt gebruik van WinUI 3 of andere WinAppSDK-API's Windows App SDK-versies op GitHub

Oplossing voor ontwikkeling: Wanneer u lokaal installeert via Add-AppxPackage, voeg eerst de -DependencyPackages parameter toe of installeer eerst de frameworkpakketten.

# Install VCLibs dependency first
Add-AppxPackage -Path .\Microsoft.VCLibs.x64.14.00.Desktop.appx

# Then install your app
Add-AppxPackage -Path .\MyApp.msix

Oplossing voor distributie: als u buiten de Store distribueert, neemt u frameworkpakketten op in uw .appinstaller bestand onder <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>

Opmerking

Wanneer u distribueert via de Microsoft Store, worden frameworkafhankelijkheden automatisch gedownload en geïnstalleerd. Handmatig afhankelijkheidsbeheer is alleen nodig voor sideloading en bedrijfsimplementaties.

SignTool is niet gevonden in CI/CD

Symptom: CI/CD-pijplijn (GitHub Actions, Azure DevOps) mislukt met een fout zoals 'signtool' is not recognized as an internal or external command of SignTool.exe: not found.

Van toepassing op: Windows 10 en hoger, Windows 11 (signing machine)

Cause: SignTool maakt deel uit van de Windows SDK en is niet standaard opgenomen in standaard-CI-runner-installatiekopieën.

Fixes:

Option 1: installeer Windows SDK in de pijplijn (GitHub Actions):

- name: Install Windows SDK
  run: |
    winget install --id Microsoft.WindowsSDK.10.0.22621 --accept-source-agreements --accept-package-agreements

Optie 2: gebruik de WinApp CLI (eenvoudigst voor MSIX-ondertekening):

- 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 }}

Option 3: gebruik Azure-ondertekening van artefacten (aanbevolen voor productie):

- 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

Opmerking

De GitHub-actie heet azure/trusted-signing-action (de voormalige servicenaam). Dit is de officiële actie, ongeacht de rebranding naar Artefact Signing.

Zie Uw MSIX-pakket ondertekenen - end-to-end-handleiding voor een volledig overzicht van de installatie van CI/CD-ondertekening.

Runtime- en virtualisatiegedrag

MSIX-pakketten worden uitgevoerd in een lichtgewicht app-container. Sommige gedragingen die fouten lijken te zijn, zijn eigenlijk standaard: de container onderschept bestands- en registerbewerkingen om de rest van het systeem te beveiligen.

Waarom schrijfbewerkingen lijken te verdwijnen (VFS-bestandsomleiding)

Symptoom: De app schrijft een bestand naar een pad zoals C:\Program Files\MyApp\config.ini tijdens runtime, maar het bestand wordt daar niet weergegeven. De app leest de waarde correct terug, maar andere processen of gebruikers zien deze niet.

Van toepassing op: Windows 10 en hoger, Windows 11

Uitleg: MSIX maakt gebruik van VFS-omleiding (Virtual File System ). Schrijfbewerkingen naar beveiligde systeempaden worden op de achtergrond omgeleid naar een container per gebruiker:

%LocalAppData%\Packages\<PackageFamilyName>\LocalCache\Local\VFS\

Dit is standaard. Het voorkomt dat MSIX-apps gedeelde systeemlocaties wijzigen, waardoor schone verwijdering wordt ondersteund.

Opties:

  • Gebruik in plaats daarvan app-gegevensmappen: Schrijven naar ApplicationData.Current.LocalFolder (WinRT) of %LocalAppData%\Packages\<PFN>\LocalState\ voor gegevens per gebruiker die moeten blijven bestaan.
  • Gebruiken AppData\Roaming voor gegevens die tussen apparaten moeten roamen.
  • Controleer de VFS-container om omgeleide bestanden te zien: %LocalAppData%\Packages\<PackageFamilyName>\LocalCache\

Zie Runtimeproblemen in een MSIX-container oplossen voor meer informatie over welke paden worden gevirtualiseerd.

Waarom registerschrijfbewerkingen lijken te verdwijnen (registervirtualisatie)

Symptoom: De app schrijft tijdens runtime naar HKEY_LOCAL_MACHINE\Software\MyApp\ , maar de waarde is niet zichtbaar voor andere processen of overleeft een herinstallatie.

Van toepassing op: Windows 10 en hoger, Windows 11

Uitleg: MSIX onderschept schrijfbewerkingen naar HKLM\Software en leidt ze om naar een registerbestand per pakket dat is geïsoleerd van de rest van het systeem. Bij het deïnstalleren wordt de hive gewist.

Opties:

  • Schrijf instellingen per gebruiker naar HKEY_CURRENT_USER\Software\<AppName> — deze worden niet gevirtualiseerd en blijven behouden.
  • Gebruik de Windows ApplicationData-API's voor opslag van gestructureerde instellingen.
  • Geef registry-items op die gedeeld moeten worden tussen gebruikers of processen met behulp van het <Extensions> / <com:Extension>-mechanisme in AppxManifest.xml.

Zie Onderstand hoe verpakte bureaublad-apps worden uitgevoerd op Windows voor meer informatie over het gedrag van MSIX-containers.

Windows 10 MSIX-beperkingen

Voor sommige MSIX-functies is Windows 11 of een specifieke Windows 10-versie vereist. Als u implementeert op Windows 10 apparaten, moet u rekening houden met het volgende.

Functies waarvoor Windows 10 versie 2004 (build 19041) of hoger is vereist

Feature Minimumversie
Schema 2021 automatisch bijwerken (ShowPrompt, UpdateBlocksActivation) Windows 10 2004 (19041)
Afdwingen van pakketintegriteit (uap10:PackageIntegrity) Windows 10 2004 (19041)
Automatisch herstel van App Installer Windows 10 2004 (19041)
Er is geen afzonderlijke sideloading-beleidsknop voor installatie van vertrouwde app-pakketten; zie Uw apparaat inschakelen voor ontwikkeling voor huidige vereisten Windows 10 2004 (19041)

Functies waarvoor Windows 11 is vereist

Feature Aantekeningen
Gedeeltelijke pakketidentiteit zonder volledige pakketstructuur Vereist Windows 11
MSIX-ondersteuning voor uitgepakte apps met externe locatie (volledige platformondersteuning) Sommige API's zijn verbeterd in Windows 11
Verbeterde MSIX-installatieprestaties per machine optimalisaties voor Windows 11

Windows 10 apparaten ouder dan versie 1709

MSIX wordt niet systeemeigen ondersteund op Windows 10 versies vóór 1709 (Fall Creators Update). Als u MSIX-pakketten op deze apparaten wilt implementeren, gebruikt u MSIX Core, die een compatibiliteitslaag biedt voor downlevel Windows 10 versies.

Manifestextensies

Sommige AppxManifest.xml naamruimteextensies zijn alleen Windows 11. Het declareren van deze pakketten op een pakket dat is gericht op Windows 10 kan tijdens het verpakken mislukken of worden geweigerd tijdens de installatie. Controleer de schemaverwijzing voor het app-pakketmanifest voor de extensies die bij MinOSVersion zijn vermeld.

Foutopsporingstip

Als u wilt controleren welke MSIX-functies beschikbaar zijn op een specifieke Windows 10 build, controleert u de MSIX-functies en ondersteunde platforms pagina, waarin de beschikbaarheid van functies per besturingssysteemversie wordt vermeld.