Windows-apps: verpakken, implementeren en verwerken

In dit onderwerp worden uw opties besproken met betrekking tot:

  • Welke verpakkingsoptie u wilt gebruiken voor uw app (verpakt, verpakt met externe locatie of uitgepakt).
  • Hoe u uw app implementeert/distribueert en hoe deze wordt geïnstalleerd.
  • Het runtimeproces van uw app, inclusief hoe geïsoleerd het zal zijn en welke API's beschikbaar zijn.

U kunt deze beslissingen nemen voor zowel nieuwe als bestaande apps. Maar als u zich nog steeds in de planningsfase voor een nieuwe app bevindt, moet u eerst beslissen welk framework voor ontwikkelingsplatform en gebruikersinterface (UI) u gaat gebruiken voor uw app voordat u begint na te denken over de bovenstaande overwegingen. Zie een overzicht van windows-ontwikkelopties voor die beslissing.

Verpakkingsopties: verpakt, verpakt met externe locatie of uitgepakt

De beslissing over welke verpakkingsoptie voor uw app moet worden gebruikt, wordt eerst bepaald door een concept dat pakketidentiteit wordt genoemd. Veel Windows uitbreidbaarheidsfuncties (achtergrondtaken, pushmeldingsscenario's die gebruikmaken van levering op de achtergrond of COM-activering, aangepaste contextmenu-extensies en sharedoelen) kunnen alleen door een app worden gebruikt als die app pakketidentiteit tijdens runtime heeft, omdat het besturingssysteem (OS) de aanroeper van de bijbehorende API moet kunnen identificeren. Alleen verpakte apps (inclusief apps die zijn verpakt met externe locatie) hebben pakketidentiteit.

Zie het Overzicht van pakketten voor een volledige uitleg van de modellen met pakket, met pakket op een externe locatie en zonder pakket, en hoe u daartussen kiest. Zie Functies waarvoor pakketidentiteit is vereist voor de functies die afhankelijk zijn van pakketidentiteit.

Voor informatie over het configureren van uw app als verpakt of uitgepakt:

Zie ook de sectie Windows Pakketbeheer en de WinGet-client in dit onderwerp.

Implementatie/distributie/installatie

Een verpakte app wordt zowel verpakt als geïnstalleerd met behulp van MSIX. Als u ervoor kiest om te verpakken met een externe locatie, is dat een 'bring-your-own-installer'-model, dus u doet het installatieprogramma nog steeds zelf (zie Pakketidentiteit verlenen door pakketidentiteit te verpakken met externe locatie). Een uitgepakte app omvat helemaal geen MSIX.

Pakketten zijn belangrijk omdat MSIX uw gebruikers een schone installatie, verwijdering en update-ervaring biedt, incrementele en automatische updates ondersteunt, wordt geoptimaliseerd door de Microsoft Store, werkt met MSIX-appkoppeling voor Azure Virtual Desktop en profiteert van sterke anti-manipulatie wanneer ze zijn ondertekend.

Raadpleeg voor richtlijnen voor implementatie en distributie het overzicht van verpakken en implementeren en Een distributiepad kiezen. Zie ook de sectie Windows Pakketbeheer en de WinGet-client in dit onderwerp.

AppContainer of gemiddeld IL

De optie om uw app uit te voeren in een AppContainer, of niet, is een kwestie van beveiliging. Het proces van een AppContainer-app en de child-processen worden uitgevoerd in een lichtgewicht app-container, waar ze alleen toegang krijgen tot de resources die specifiek aan hen zijn verleend. En ze zijn geïsoleerd met behulp van bestandssysteem- en registervirtualisatie. Als gevolg hiervan kunnen apps die zijn geïmplementeerd in een AppContainer niet worden gehackt om schadelijke acties buiten de beperkte toegewezen resources toe te staan.

Verpakte of uitgepakte apps kunnen worden geconfigureerd voor uitvoering in een AppContainer. Maar het proces is eenvoudiger voor verpakte apps. Als een app geen AppContainer-app is, is het een Medium IL-app .

Zie AppContainer voor verouderde apps en MSIX AppContainer-apps voor meer informatie.

Voor informatie over het configureren van uw app voor uitvoering in een AppContainer of Medium IL:

  • WinUI-apps (Windows App SDK). Zie het uap10:TrustLevel app-pakket manifestkenmerk in Configure a WinUI project for AppContainer.
  • Desktop-apps. Zie de Visual Studio-projecteigenschap in de TrustLevel (in de sectie die geschikt is voor uw soort app).
  • Universal Windows Platform (UWP)-apps. UWP-apps zijn al geconfigureerd voor uitvoering in een AppContainer; en die configuratie kan niet worden gewijzigd.

Houd er rekening mee dat uitgepakte apps geen app-pakketmanifest hebben. Voor uitgepakte apps declareert u uw AppContainer-of-Medium-IL beslissing in uw project-bestand in plaats van in een app-pakketmanifest.

Isolatie van Win32-apps

Win32-app-isolatie is een beveiligingsfunctie (beschikbaar in Windows 11, versie 24H2 en later) die helpt de schade te beperken als een app wordt gecompromitteerd, en de privacykeuzes van gebruikers beschermt. Dit bouwt voort op AppContainers en componenten die systeembronnen virtualiseren en gemedieerde toegang bieden. Zie voor meer informatie Win32 app isolatie overzicht en de Win32 app isolatie GitHub opslagplaats.

App-mogelijkheden

App-mogelijkheden (bijvoorbeeld internetClient, locatie, microfoon en Bluetooth) zijn voornamelijk relevant voor verpakte apps die worden uitgevoerd in een AppContainer. Dit omvat all Universal Windows Platform (UWP)-apps en some desktop-apps.

Maar er zijn enkele scenario's waarbij zelfs een Medium IL-app (dat wil zeggen, geen AppContainer-app) een mogelijkheid moet declareren. Een voorbeeld hiervan is de beperkte runFullTrust-functie .

Zie app-declaraties voor meer informatie over app-mogelijkheden, op welke soorten apps ze van toepassing zijn en hoe u deze configureert. U configureert mogelijkheden in uw app-pakketmanifest; daarom zijn ze alleen van toepassing op verpakte apps.

Soorten apps

Desktop-apps en Universal Windows Platform (UWP)-apps zijn de twee belangrijkste soorten apps, hoewel er verschillende soorten apps zijn in de bureaublad-appsfamilie. Het kiezen van een UI-framework (WinForms, WPF, Win32, Direct 2D/3D of WinUI 3) is in zekere mate onafhankelijk van de configuraties die in dit onderwerp worden beschreven.

Maar laten we eens kijken hoe deze app-soorten van elkaar kunnen verschillen in termen van verpakking, implementatie en proces.

Ten eerste worden alle UWP-apps verpakt en uitgevoerd in een AppContainer. Maar voor desktop-apps zijn dingen flexibeler. U kunt ervoor kiezen om uw bureaublad-app te verpakken of niet. En, onafhankelijk van die beslissing, kunt u ervoor kiezen om uw bureaublad-app te configureren als een AppContainer of een Medium IL-app.

Verpakt Unpackaged
AppContainer Bureaublad-apps
UWP-apps
Bureaublad-apps
Gemiddelde IL Bureaublad-apps Bureaublad-apps

Als u voor verpakte apps het gewenste type app wilt configureren, gebruikt u het kenmerk uap10:RuntimeBehavior in het app-pakketmanifest (zie Toekenning (Windows 10)).

  • Desktopapplicaties zijn Windows .exes, meestal met een hoofd- of een WinMain-invoerpunt-functie. Als u uw app wilt configureren als een desktop-app, stelt u uap10:RuntimeBehavior in op 'packagedClassicApp' of 'win32App'.
    • De waarde packagedClassicApp geeft een WinUI-app (Windows App SDK) of een Desktop Bridge-app (Centennial) aan. Het verschil is dat een Centennial-app wordt uitgevoerd in een AppContainer.
    • En 'win32App' geeft elk ander type Win32-app aan (inclusief een app die is verpakt met externe locatie).
  • Ten slotte zorgt het instellen van uap10:RuntimeBehavior op 'windowsApp' ervoor dat u een UWP-app krijgt.

Zie Windows app ontwikkeling: opties en functies voor alle opties voor de soorten apps die u kunt ontwikkelen.

Windows App SDK: frameworkafhankelijk of zelfstandig

Als uw app gebruikmaakt van de Windows App SDK, kiest u ook hoe u de SDK-runtime implementeert waarop uw app afhankelijk is: frameworkafhankelijk (de standaardinstelling, waarbij het Windows App SDK runtime- en/of Framework-pakket aanwezig moet zijn op de doelcomputer) of zelfstandig (uw app draagt de Windows App SDK afhankelijkheden ermee). Zie het overzicht van de Windows App SDK-implementatie voor meer informatie.

Windows Pakketbeheer en de WinGet-client

Een package manager kan uw gebruikers helpen uw software te installeren/bij te werken/te configureren door de werkstroom te automatiseren. Pakketbeheerders kunnen helpen bij het installeren van software, maar ze worden meestal gebruikt om developer tools te installeren. Dus als u een ontwikkelhulpprogramma bouwt, bent u mogelijk vooral geïnteresseerd in deze optie. Maar dit werkt als volgt:

  • U, als softwareontwikkelaar, definieert voor de package manager (in de vorm van declaratieve instructies) alle onderdelen die nodig zijn voor een geslaagde installatie van uw product.
  • En wanneer een gebruiker uw software installeert, volgt de package manager uw declaratieve instructies om de installatie- en configuratiewerkstroom te automatiseren.

Het resultaat is een vermindering van de tijd die wordt besteed aan het voorbereiden van de omgeving van een gebruiker en betere compatibiliteit tussen de geïnstalleerde onderdelen. En u kunt Windows Pakketbeheer gebruiken om uw verpakte of uitgepakte apps te distribueren in indelingen zoals .msix, .msi en .exe.

Zie Windows Pakketbeheer voor meer informatie.