Průvodce odstraňováním potíží s MSIX

Tato příručka popisuje nejběžnější chyby MSIX při instalaci, podepisování, doručování instalačního programu aplikací, chybějící závislosti a chování modulu runtime. Každá část obsahuje příznaky, původní příčinu a řešení.

Pokud chcete získat úplný protokol událostí nasazení, otevřete Prohlížeč událostí a přejděte na: Aplikace a protokoly služeb → Microsoft → Windows → AppxDeployment-Server → Provozní

Návod

Pro konsolidovanou sadu diagnostiky před distribucí balíčku spusťte také aplikace pro Windows Certifikační sadu.

Chyby instalace

0x80070005 – Přístup byl odepřen

Příznak: Add-AppxPackage nebo Instalační program aplikace selže s kódem chyby 0x80070005.

Platí pro: Windows 10 a novější, Windows 11

Příčiny a opravy:

Příčina Oprava
Spuštění jako standardní uživatel bez zvýšení oprávnění v případech, kdy balíček vyžaduje instalaci na počítač Spusťte PowerShell jako správce. Chcete-li nainstalovat pro všechny uživatele, použijte Add-AppxProvisionedPackage místo Add-AppxPackage.
Antivirový nebo bezpečnostní software blokující soubor balíčku Dočasně zakažte kontrolu v reálném čase nebo přidejte výjimku pro soubor .msix / .msixbundle
Balíček je připravený pro jiného uživatele a není nasazený. Použijte Add-AppxProvisionedPackage k nastavení pro všechny uživatele.
Seznamy ACL systému souborů blokující přístup pro čtení k balíčku Kontrola oprávnění k souboru balíčku pomocí icacls; udělení přístupu pro čtení instalačnímu uživateli

Instalace balíčku se zablokovala, protože se aplikace používá

Příznak: Aktualizace nebo opětovné instalace selže s chybou indikující, že se balíček používá. V Prohlížeč událostí vidíte, že operace nasazení byla odmítnuta.

Applies to: Windows 10 a novější verze, Windows 11

Oprava: Před aktualizací zavřete všechny spuštěné instance aplikace. Pokud je aplikace služba na pozadí nebo má zaregistrovanou úlohu na pozadí, možná budete muset tyto úlohy ukončit také:

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

U podnikových nasazení zvažte plánování aktualizací během údržby pomocí Intune nebo Správce konfigurace.

Neshoda minVersion nebo architektury

Symptom: Instalace selže s chybou, například "Balíček nelze nainstalovat, protože není kompatibilní s touto verzí Windows" nebo "Balíček není použitelný pro tento počítač".

Applies to: Windows 10 a novější

Příčiny a opravy:

Příčina Oprava
Balíček MinVersion v manifestu je vyšší než verze operačního systému. Vytvoření samostatného balíčku určeného pro nainstalovanou verzi operačního systému nebo aktualizaci zařízení
Neshoda architektury (např. balíček arm64 na zařízení x64) Sestavení a distribuce správné varianty architektury; použití sady (.msixbundle) k poskytování více architektur z jednoho souboru
Balíček cílí na rozhraní API jen pro Windows 11 bez kontroly kompatibility. Přidání položky TargetDeviceFamily pro Windows 10 i Windows 11 nebo ochrana volání rozhraní API pomocí kontroly verze za běhu

Poznámka:

Používejte soubory .msixbundle při distribuci do prostředí se smíšenými architekturami. Sada obsahuje balíčky pro více architektur a Windows vybere v době instalace správný balíček.

Příkaz Add-AppxPackage proběhl úspěšně, ale aplikace chybí v nabídce Start.

Příznak: PowerShell hlásí úspěch, ale aplikace se nezobrazuje v nabídce Start nebo v seznamu aplikací.

Applies to: Windows 10 a novější, Windows 11

Běžné příčiny:

  • Instalace pro jednotlivé uživatele vs. pro jednotlivé počítače: Add-AppxPackage nainstaluje pouze pro aktuálního uživatele. Pokud pracujete jako správce, ale potřebujete, aby aplikace byla pro jiného uživatele, použijte místo toho Add-AppxProvisionedPackage.
  • Zaregistrovaný balíček, ale dlaždice není připnutá: Aplikace se nainstaluje, ale nabídka Start se neaktualizuje. Odhlaste se a znovu se přihlaste nebo zkontrolujte nastavení → Aplikace a potvrďte instalaci.
  • Chybějící položka nabídky Start v manifestu: Ověřte, zda element <Application> v AppxManifest.xml zahrnuje položku VisualElements s platnou Square150x150Logo.
  • Konflikt duplicitního názvu rodiny balíčků: Pokud je již nainstalována novější nebo starší verze aplikace se stejným názvem rodiny balíčků, může ji nová instalace bezobslužně nahradit. Obraťte se na Get-AppxPackage -Name "YourPackageFamilyName".

Chyby podepisování a certifikátu

Poznámka:

Podrobné kódy a příznaky chyb SignTool najdete v tématu Známé problémy a řešení potíží pro SignTool.

Certifikát není důvěryhodný (0x800B0109)

Příznak: Instalace selže s chybou 0x800B0109 – "Řetězec certifikátů byl zpracován, ale ukončen v kořenovém certifikátu, který není důvěryhodný poskytovatelem důvěry".

Applies to: Windows 10 a novější, Windows 11

Příčina: Certifikát použitý k podepsání balíčku není v úložištích důvěryhodných certifikátů zařízení. To je běžné při použití certifikátů podepsaných svým držitelem pro vývoj.

Oprava: Import podpisového certifikátu do místního počítače zařízení → důvěryhodného úložiště osob (nikoli do aktuálního úložiště uživatelů – Instalační služba aplikace kontroluje pouze úložiště počítačů):

# 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

Důležité

Neimportujte podpisové certifikáty do úložiště důvěryhodných kořenových certifikačních autorit , pokud certifikát není kořenovou certifikační autoritou. Import nedůvěryhodných certifikátů podepsaných svým držitelem oslabuje stav zabezpečení zařízení.

V produkčních aplikacích použijte certifikát vydaný důvěryhodnou certifikační autoritou nebo Azure podepisování artefaktů (dříve Důvěryhodné podepisování), který je propojený s kořenovou certifikační autoritou Microsoft pro ověření identity – ve výchozím nastavení důvěryhodný pro Windows 10 verze 1809 a novější a Windows 11.

neshoda názvů Publisher (0x8007000B, ID události 150)

Symptom: SignTool selže s 0x8007000B a Prohlížeč událostí (provozní protokol AppxPackagingOM) zobrazuje 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).

Applies to: Windows 10 a novější, Windows 11

Cause: Atribut Publisher v AppxManifest.xml se musí přesně shodovat s názvem subject name podpisového certifikátu, včetně všech rozlišujích polí názvů ve stejném pořadí.

Oprava:

  1. Získejte přesný název subjektu z certifikátu:

    (Get-Item Cert:\CurrentUser\My\THUMBPRINT).Subject
    # Example output: CN=Contoso, C=US
    
  2. Aktualizujte AppxManifest.xml tak, aby přesně odpovídaly:

    <Identity Name="Contoso.MyApp"
              Publisher="CN=Contoso, C=US"
              ... />
    
  3. Znovu zabalte MakeAppx.exe a znovu podepište.

Návod

Při použití Azure Artifact Signing (dříve Důvěryhodné podepisování) musí hodnota vydavatele ve vašem manifestu odpovídat vaší ověřené identitě — nalézá se v portálu Azure v poli Název subjektu vašeho certifikátového profilu.

Chyby instalačního programu aplikací a doručování webu

Neshoda verzí schématu v souboru .appinstaller

Příznak: Instalační program aplikace nedokáže analyzovat nebo zpracovat .appinstaller soubor, často s obecnou chybou o neplatném souboru nebo nepodporovaném schématu.

Applies to: Windows 10 a novější (závislé na verzi – viz tabulka)

Cause: Atribut Uri kořenového elementu <AppInstaller> určuje verzi schématu, kterou nainstalovaná verze Windows nepodporuje.

verze Schema podle verze Windows:

verze Windows Minimální podporovaná verze schématu
Windows 10 verze 1709 1.0.0.0
Windows 10 verze 1803 1.1.0.0
Windows 10 verze 1809 1.2.0.0
Windows 10 verze 1903 a novější Windows 11 1.3.0.0, 1.4.0.0, 1.5.0.0

Oprava: Nastavte identifikátor URI schématu v .appinstaller souboru na minimální verzi, která vyžaduje nejnižší podporovanou verzi operačního systému:

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

Pokud potřebujete podporovat starší verze Windows 10, nepoužívejte nejnovější verzi schématu.

Soubory obsluhované s nesprávným typem MIME nebo chybějící délkou obsahu

Příznak: Instalační program aplikace selže při instalaci z koncového bodu HTTP/HTTPS. Chyba může být obecná, například 0x80072F76 (Neznámá chyba) nebo Instalace aplikace se nezdařila.

Applies to: Windows 10 a novější

Příčina: Webový server obsluhuje .msixsoubor , .msixbundlenebo .appinstaller soubor s nesprávnou Content-Type hlavičkou nebo vynechá hlavičku Content-Length .

Oprava: Nakonfigurujte webový server tak, aby zobrazoval soubory související s MSIX se správnými typy MIME:

Přípona souboru Požadovaný typ MIME
.msix application/msix
.msixbundle application/msixbundle
.appinstaller application/appinstaller
.appx application/appx
.appxbundle application/appxbundle

Také se ujistěte, že každá odpověď obsahuje platnou Content-Length hlavičku – to platí pro obě GET i HEAD požadavky.

V případě služby IIS přidejte mapování typů MIME do web.configsouboru . U Azure Static Web Apps nebo GitHub Pages můžou typy MIME pro tato rozšíření potřebovat explicitní konfiguraci nebo vlastní řešení hostování.

Chybějící závislosti

Balíček architektury není nainstalovaný (VCLibs, .NET, Windows App SDK)

Symptom: Aplikace se úspěšně nainstaluje, ale při spuštění se chybově ukončí nebo instalace selže s chybou závislostí odkazující na název rodiny balíčků, jako je Microsoft.VCLibs, Microsoft.WindowsAppRuntime nebo Microsoft.NET.Native.

Applies to: Windows 10 a novější, Windows 11

Běžné frameworky a kde je získat:

.NET Framework Potřeba v případě potřeby Zdroj
VCLibs (x64/x86/arm64) Aplikace používá modul runtime C++ Microsoft Store (automaticky nainstalované) nebo směrné stahování
.NET 8 Desktop Runtime (Pracovní prostředí pro stolní počítače .NET 8) Aplikace cílí na .NET 8 Součástí Windows App SDK; nebo směrné stahování
Windows App SDK (WinAppSDK) Aplikace používá rozhraní WinUI 3 nebo jiná rozhraní API WinAppSDK. Windows App SDK verze na GitHubu

Oprava pro vývoj: Při místní instalaci Add-AppxPackage přidejte -DependencyPackages parametr nebo nejprve nainstalujte balíčky frameworku:

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

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

Oprava distribuce: Pokud distribuujte mimo Store, zahrňte do souboru .appinstaller balíčky rozhraní v části <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>

Poznámka:

Při distribuci prostřednictvím Microsoft Store se závislosti architektury automaticky stáhnou a nainstalují. Ruční správa závislostí je nutná pouze pro postranní načtení a podnikové nasazení.

Nástroj SignTool nebyl v CI/CD nalezen.

Symptom: Kanál CI/CD (GitHub Actions, Azure DevOps) selže s chybou, jako je 'signtool' is not recognized as an internal or external command nebo SignTool.exe: not found.

Applies to: Windows 10 a novější, Windows 11 (zařízení pro podepisování)

Cause: SignTool je součástí sady WINDOWS SDK a ve výchozím nastavení není součástí standardních imagí spouštěče CI.

Fixes:

Možnost 1 – Instalace sady Windows SDK v rámci sestavení (GitHub Actions):

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

Možnost 2 – Použití rozhraní příkazového řádku WinApp (nejjednodušší pro podepisování 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 }}

Option 3 – Použijte Podepisování artefaktů v Azure (doporučeno pro produkční):

- 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

Poznámka:

Akce GitHub má název azure/trusted-signing-action (název bývalé služby). Toto je oficiální postup, navzdory rebrandingu na Artifact Signing.

Úplný návod k nastavení podepisování CI/CD najdete v tématu Podepsání balíčku MSIX – kompletního průvodce.

Chování běhového prostředí a virtualizace

Balíčky MSIX se spouštějí v kontejneru odlehčených aplikací. Některá chování, která se jeví jako chyby, jsou ve skutečnosti navržena – kontejner zachytí operace se soubory a registry, aby chránil zbytek systému.

Proč se zdá, že zápisy souborů zmizí (přesměrování souborů VFS)

Příznak: Aplikace zapíše soubor do cesty, jako je C:\Program Files\MyApp\config.ini za běhu, ale soubor se tam nezobrazí. Aplikace přečte hodnotu správně, ale ostatní procesy nebo uživatelé ji nevidí.

Applies to: Windows 10 a novější, Windows 11

Vysvětlení: MSIX používá přesměrování virtuálního systému souborů (VFS). Zápisy do chráněných systémových cest se bezobslužně přesměrují do kontejneru pro jednotlivé uživatele:

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

To je záměrně – zabraňuje aplikacím MSIX upravovat sdílená systémová umístění a umožňuje čistou odinstalaci.

Možnosti:

  • Místo toho používejte datové složky aplikací: Zapisovat do ApplicationData.Current.LocalFolder (WinRT) nebo %LocalAppData%\Packages\<PFN>\LocalState\ pro uživatelská data, která by měla být zachována.
  • Použít AppData\Roaming pro data, která by se měla nacházet mezi zařízeními.
  • Zkontrolujte kontejner VFS a podívejte se na přesměrované soubory: %LocalAppData%\Packages\<PackageFamilyName>\LocalCache\

Další podrobnosti o tom, jaké cesty jsou virtualizované, najdete v tématu Řešení potíží s modulem runtime v kontejneru MSIX.

Proč se zdá, že zápisy registru zmizí (virtualizace registru)

Příznak: Aplikace zapisuje během běhu do HKEY_LOCAL_MACHINE\Software\MyApp\, ale hodnota není viditelná pro jiné procesy ani nepřežije přeinstalaci.

Applies to: Windows 10 a novější, Windows 11

Vysvětlení: MSIX zachytí zápisy a přesměruje je do podregistru jednotlivých balíčků, který je izolovaný od zbytku systému. Po odinstalaci se úlovek odstraní.

Možnosti:

  • Zapisovat uživatelská nastavení do HKEY_CURRENT_USER\Software\<AppName> — tato nastavení nejsou virtualizovaná a zůstávají zachována.
  • Pro úložiště strukturovaných nastavení použijte rozhraní API Windows ApplicationData.
  • Deklarujte položky registru, které musí být sdíleny mezi uživateli nebo procesy při AppxManifest.xml používání <Extensions> / <com:Extension> mechanismu.

Podrobnější informace o chování kontejneru MSIX najdete v tématu Podstatěné fungování zabalených desktopových aplikací na Windows.

omezení Windows 10 MSIX

Některé funkce MSIX vyžadují Windows 11 nebo konkrétní verzi Windows 10. Pokud nasazujete do Windows 10 zařízení, mějte na paměti následující skutečnosti.

Funkce, které vyžadují Windows 10, verze 2004 (build 19041) nebo novější

funkce Minimální verze
Schéma automatické aktualizace 2021 (ShowPrompt, UpdateBlocksActivation) Windows 10 2004 (19041)
Vynucení integrity balíčků (uap10:PackageIntegrity) Windows 10 2004 (19041)
Automatická oprava instalačního programu aplikace Windows 10 2004 (19041)
Žádný samostatný přepínač zásad sideloadingu pro instalace důvěryhodných balíčků aplikací; viz Povolení zařízení pro vývoj pro aktuální požadavky Windows 10 2004 (19041)

Funkce, které vyžadují Windows 11

funkce Poznámky
Řídká identita balíčku bez úplného balení Vyžaduje Windows 11
Podpora MSIX pro rozbalené aplikace s externím umístěním (úplná podpora platformy) Některá rozhraní API se vylepšila v Windows 11
Vylepšený výkon instalace MSIX na počítač optimalizace Windows 11

Windows 10 zařízení starší než verze 1709

MSIX se nativně nepodporuje ve verzích Windows 10 starších než 1709 (Fall Creators Update). Pokud chcete do těchto zařízení nasadit balíčky MSIX, použijte MSIX Core, která poskytuje vrstvu kompatibility pro verze Windows 10 nižší úrovně.

Rozšíření manifestu

Některá rozšíření oboru názvů AppxManifest.xml jsou určena pouze pro Windows 11. Deklarování těchto entit při zaměření na Windows 10 může během balení selhat schema-validaci nebo být zamítnuty během instalace. Projděte si referenční informace ke schématu manifestu balíčku aplikace pro každou příponu MinOSVersion .

Tip ladění

Pokud chcete ověřit, jaké funkce MSIX jsou k dispozici na konkrétním Windows 10 buildu, podívejte se na stránku MSIX a podporovaných platforem, která uvádí dostupnost funkcí podle verze operačního systému.