Overzicht van pakketten

Pakketten bepalen hoe uw app wordt geïnstalleerd, bijgewerkt en geïntegreerd met Windows. WinUI 3-apps zijn standaard verpakt, terwijl veel bureaublad-apps, zoals traditionele Win32-toepassingen, uitgepakt worden uitgevoerd. Het kiezen tussen een verpakte of uitgepakte app is van invloed op de functies die u kunt gebruiken, het implementatiemodel waarop u vertrouwt en de algehele ervaring die uw klanten krijgen.

Opmerking

Een nieuwe WinUI 3-app bouwen? U bent al standaard verpakt. De onderstaande richtlijnen zijn het meest relevant voor ontwikkelaars die een expliciete keuze moeten maken, meestal bij het overzetten van een bestaande app, het implementeren op bedrijfscomputers of het toevoegen van Windows-functies aan een app die oorspronkelijk niet is verpakt.

Waarom app-pakketten belangrijk zijn

Verpakte apps profiteren van een schoon installatiemodel, automatische updates en toegang tot Windows functies waarvoor pakketidentiteit is vereist, waaronder achtergrondtaken, meldingen, contextmenu-extensies, doelen delen en andere uitbreidbaarheidspunten. Pakketten zorgen ook voor schonere implementaties, betrouwbare updates en gestroomlijnde distributie via kanalen zoals de Microsoft Store- en bedrijfsimplementatieprogramma's.

Functies waarvoor pakketidentiteit is vereist

Veel Windows-functies werken alleen in apps met een pakketidentiteit, via volledige MSIX-packaging of packaging met externe locatie (Sparse packaging). Voorbeelden hiervan zijn achtergrondtaken, pushmeldingen, sharedoelen, aangepaste contextmenu-extensies, manifestbestandstypen en protocolkoppelingen en de Windows AI-API's.

Zie Functies waarvoor pakketidentiteit is vereist voor de volledige lijst.

Aanbeveling

Als uw pakket uitgepakt is en u E_ILLEGAL_METHOD_CALL of APPMODEL_ERROR_NO_PACKAGE fouten krijgt bij het aanroepen van Windows-API's, komt dat door de vereiste voor pakketidentiteit. Beschouw verpakkingen met externe locatie (Sparse verpakking) als de oplossing met de minste wrijving.

Als u tijdens runtime wilt detecteren of uw proces pakketidentiteit heeft, gebruikt u GetCurrentPackageFullName. Zie Is dit een verpakt proces? in de Inside MSIX-blog voor canonieke C++ en C#-voorbeelden.

Verpakkingsmodellen in één oogopslag

Model Pakketidentiteit Installer In aanmerking komende winkel Ideaal voor
Verpakt (MSIX) ✅ Ja MSIX vervangt het installatieprogramma ✅ Ja (MSIX-inzending) Nieuwe apps, Store-publicatie, ENTERPRISE MDM
Verpakking met externe locatie ✅ Ja Uw bestaande installatieprogramma ✅ Ja (MSI/EXE-inzending) Bestaande apps met eigen installatieprogramma, ISV's
Uitgepakt ❌ Nee MSI- of EXE-installatieprogramma (ook: XCopy of script voor niet-Store-verspreiding) ✅ Ja (MSI/EXE-indiening: vereist een MSI- of EXE-installatieprogramma met ondersteuning voor installatie op de achtergrond) Brede Win32-distributie, interne hulpprogramma's

Verpakte apps (MSIX)

Verpakte apps maken gebruik van MSIX en hebben package identity, wat vereist is voor veel Windows uitbreidbaarheidspunten. Met pakketidentiteit kan Windows de aanroeper van platform-API's betrouwbaar identificeren. Daarom zijn deze functies ervan afhankelijk.

  • Verpakte apps worden doorgaans uitgevoerd in een lichtgewicht app-container met bestandssysteem- en registervirtualisatie (zie AppContainer voor verouderde apps en MSIX AppContainer-apps).
  • Apps kunnen indien nodig ook worden geconfigureerd om niet in een app-container te draaien.
  • MSIX wordt zowel gebruikt voor het verpakken als installeren (zie Wat is MSIX?).

Verpakking met externe locatie (Schaars verpakking)

Met pakketten met externe locatie (ook wel sparse-pakketten genoemd) kunt u een klein identiteitspakket naast uw bestaande app registreren, zonder uw installatieprogramma, binaire locaties of updateproces te wijzigen. Het is geïntroduceerd in Windows 10 versie 2004 (build 19041).

Dit is de zoete plek voor bestaande Win32/WPF/WinForms-apps die worden verzonden via hun eigen installatieprogramma (NSIS, WiX, InstallShield, enzovoort) en deze niet willen vervangen door MSIX. nl-NL: U registreert een lichtgewicht identiteitspakket, uw binaire bestanden blijven op hun plek en u ontgrendelt de volledige set Windows-functionaliteiten die gebonden zijn aan pakketidentiteit.

Vermogen MSIX Externe locatie
Vervangt uw installatieprogramma Ja No
Binaire bestanden in het pakket Ja Nee (extern)
In aanmerking komende winkel Ja (MSIX-inzending) Ja (MSI/EXE-inzending)
Pakketidentiteit Ja Ja
Mechanisme voor bijwerken MSIX-update Uw bestaande mechanisme

volledig overzicht: Pakketidentiteit verlenen door pakket met externe locatie te verpakken

Uitgepakte apps

Uitgepakte apps maken geen gebruik van MSIX en hebben geen pakketidentiteit, wat betekent dat ze geen toegang hebben tot de functies die hierboven worden vermeld.

  • Ze blijven volledig onbeperkt qua API-oppervlakte, besturingssysteemtoegang, registertoegang, verhoging en procesmodel.
  • Installatie en updates zijn afhankelijk van .exe, .msiaangepaste installatieprogramma's, ClickOnce- of xcopy-implementatie.

Voordat u zich verbindt aan ongepakte versies, controleert u de functietabel hierboven tegen uw roadmap. Als meldingen, achtergrondtaken of AI-API's zich aan de horizon bevinden, kunt u overwegen om verpakt te beginnen.

Kiezen op scenario

Scenario Aanbevolen model Details
Indie-ontwikkelaars publiceren naar de Microsoft Store Aanbevolen pakket (MSIX) MSIX is het aanbevolen pad: hiermee worden door de Store beheerde updates, differentiële downloads en schone verwijdering ingeschakeld. WinUI 3-apps zijn standaard verpakt. Ondertekening van code wordt gratis verwerkt door de Store.uw verpakte app distribueren

Win32-apps met een bestaand MSI- of EXE-installatieprogramma kunnen ook publiceren naar de Store via het msi-/EXE-indieningspad, maar de Store pusht geen updates naar bestaande gebruikers. Updates moeten worden verwerkt door de app of het installatieprogramma.
Enterprise-app geïmplementeerd via Intune of Configuration Manager Gebundelde of externe plaats voor bestaande installatieprogramma's Nieuwe apps moeten MSIX gebruiken. Bestaande apps met hun eigen installatieprogramma kunnen pakketten gebruiken met een externe locatie. Code-ondertekening: een zelfondertekend certificaat gebruiken (vertrouwd via Intune, Groepsbeleid of Configuration Manager) of Azure Artifact Signing (voorheen Trusted Signing). → Verpakte apps implementeren
ISV verzendt een directe download met eigen installatieprogramma Verpakking met externe locatie Registreer een lichtgewicht identiteitspakket naast uw bestaande installatieprogramma. Code-ondertekening: een door een CA vertrouwd certificaat is vereist voor distributie buiten de Store. Azure Artifact Signing (voorheen Trusted Signing) is de aanbevolen optie voor lagere kosten. → Pakketidentiteit verlenen

U kunt uw bestaande installatieprogramma ook verzenden naar de Store via het MSI/EXE-indieningspad.
Intern hulpprogramma of hulpprogramma voor ontwikkelaars Unpackaged Eenvoudigst om te bouwen en te implementeren. De Windows App SDK werkt via NuGet, maar sommige functies zijn niet beschikbaar.

Aanbeveling

De vereisten en kosten voor ondertekening van programmacode verschillen per distributiepad. Raadpleeg Opties voor codeondertekening voor ontwikkelaars van Windows-apps voor een volledig overzicht van uw opties.

Frameworkafhankelijke versus zelfstandige implementatie

Los van het verpakkingsmodel kiezen apps die gebruikmaken van de Windows App SDK zelf hoe ze hun runtime-afhankelijkheden meenemen: frameworkafhankelijk (de Windows App SDK-runtime is geïnstalleerd op de computer van de gebruiker) of zelfstandig opgenomen (alle binaire bestanden van de Windows App SDK worden met uw app meegeleverd). Deze keuze is onafhankelijk van verpakking.

Zie het Windows App SDK implementatieoverzicht voor een volledige vergelijking en implementatierichtlijnen.

Aan de slag gaan met MSIX

Als u een Win32-bureaublad-app bouwt (ook wel een classic desktop-app genoemd) of een .NET-app, waaronder Windows Presentation Foundation (WPF) en Windows Forms (WinForms), kunt u uw app inpakken en implementeren met MSIX.

Migreren naar MSIX vanuit oudere installatieprogramma's

Als uw app momenteel gebruikmaakt van een verouderd installatieprogramma, kunt u migreren naar MSIX om schone installatie/verwijdering, automatische updates, Distributie van winkels en pakketidentiteit te verkrijgen. Het migratiepad is afhankelijk van uw huidige installatietechnologie en of u toegang hebt tot de broncode.

Huidig installatieprogramma Aanbevolen migratiepad Broncode vereist?
MSI (Windows-installatieprogramma) Gebruik het MSIX Packaging Tool om de MSI rechtstreeks te converteren naar MSIX. Verwerkt de meeste MSI-patronen, inclusief aangepaste acties. No
ClickOnce (.NET) Bouw opnieuw op basis van de bron met behulp van het Visual Studio MSIX-verpakkingsproject. ClickOnce auto-update kan worden vervangen door Store-updates of app-installatieprogramma. Ja
InstallShield / Geavanceerd installatieprogramma Gebruik het MSIX Packaging Tool om een installatie op een schone VM vast te leggen. Complexe aangepaste acties vereisen mogelijk een handmatige correctie in de Package Editor. No
Inno Setup/NSIS Gebruik de op VM gebaseerde werkstroom voor vastleggen van het MSIX Packaging Tool. Voer het EXE-installatieprogramma uit in de schone omgeving van het hulpprogramma. No
App-V (virtuele pakketten) Converteer rechtstreeks met behulp van het MSIX Packaging Tool. Het ondersteunt App-V 5.x-pakketten als invoer. No
MSIX met benodigde wijzigingen Gebruik het Package Support Framework om runtime-oplossingen (bestands-/registeromleiding) toe te passen zonder uw app-code te wijzigen. No

Aanbeveling

Voor apps met complexe installatieprogramma's met kernelstuurprogramma's, services die als SYSTEM worden uitgevoerd of machinebrede COM-registraties die niet door MSIX worden ondersteund, kunt u MSIX met externe locatie overwegen (verpakt met een externe locatie). Hierdoor beschikt u over pakketidentiteit voor Windows functies terwijl u een traditioneel installatieprogramma gebruikt voor onderdelen waarvoor verhoogde toegang is vereist. Zie Pakketidentiteit verlenen door pakketten te verpakken met externe locatie.

Belangrijkste overwegingen

  • Test op een schone VM : het MSIX Packaging Tool legt alle wijzigingen vast tijdens de installatie. Voer het uit op een schone Windows-image om te voorkomen dat niet-gerelateerde systeemwijzigingen worden vastgelegd.
  • Package Support Framework : als uw geconverteerde app runtimeproblemen heeft (bestandspadveronderstellingen, registerschrijfbewerkingen naar HKLM), kan het Package Support Framework dit oplossen zonder de bron te wijzigen.
  • Naast het verouderde installatieprogramma : u kunt de MSIX-versie naast het verouderde installatieprogramma implementeren tijdens de overgang. Plan een expliciete instellingen/gegevensmigratie (bijvoorbeeld importeren tijdens de eerste uitvoering), omdat pakketidentiteit en opslaglocaties verschillen tussen MSIX- en MSI/EXE-installaties.

Andere installatietechnologieën