Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln beskrivs en arkitektur på hög nivå för Windows App SDK distribution. Begreppen nedan gäller främst för Windows App SDK ramverksberoende appar. En ramverksberoende app beror på vilken Windows App SDK körning som finns på måldatorn.
Det finns två huvudsakliga alternativ för att distribuera en ramverksberoende app:
| Appdistributionssätt | Kravspecifikation |
|---|---|
| Förpackade | – Måste deklarera beroende av Framework-paketet i paketmanifestet. – Distributions-API krävs för Microsoft Store-distribuerade appar och rekommenderas för icke-Store-distribuerade appar för att säkerställa att körningsberoenden installeras. |
| Paketerad med extern lokalisering eller utan förpackning | – Måste distribuera runtime-miljön antingen med installationsprogrammet eller genom att installera nödvändiga MSIX-paket direkt. – Ytterligare körningskrav: Måste initiera åtkomst till Windows App SDK-körning via Bootstrap-API. |
Mer information om dessa krav finns i följande artiklar:
- Windows App SDK distributionsguide för ramverksberoende paketerade appar
- Windows App SDK distributionsguide för ramverksberoende appar som packeteras med extern plats eller är opaketerade
Viktiga termer
I följande avsnitt definieras viktiga termer för Windows App SDK distribution och ytterligare information om några av dessa paket.
| Begrepp | Definition |
|---|---|
| Windows App SDK-körmiljö | De MSIX-paket som krävs av en app för att använda Windows App SDK. Dessa paket omfattar: Framework, Main, Singleton och DDLM. Beroende på vilka funktioner som används och din appdistributionsmetod behöver du en viss uppsättning paket på måldatorn. |
| Framework-paket | Innehåller binärfiler som används vid körning av appar (de flesta Windows App SDK funktioner). Ramverket innehåller en bootstrapper-komponent som gör det möjligt för appar att automatiskt installera den senaste versionen av Windows App SDK, som uppdateras regelbundet. |
| Huvudpaket | Paket som innehåller bakgrundsuppgifter för att hålla reda på dynamiska beroenden och möjliggör automatiska uppdateringar av Framework-paketet från Microsoft Store. |
| Singleton-paket | Innehåller bakgrundsuppgifter, tjänster, apptillägg och andra komponenter som inte ingår i Framework-paketet, till exempel push-meddelanden. Det här är vanligtvis en enda långvarig process som förmedlas mellan appar. |
| DDLM-paket (Dynamic Dependency Lifetime Manager) | Förhindrar operativsystemet från att utföra serviceuppdateringar av MSIX-paketen medan en app som är paketerad för extern plats eller en app utan paket används. |
| Bootstrapper | En app-lokal binärfil som används av appar paketerade med externa platser och opackade appar för att hitta och läsa in den Windows App SDK version som bäst matchar appens behov. |
| Försörjning | Processen med att mellanlagra paket i hela systemet så att alla användare på datorn kan registrera och använda dem utan att kräva att mellanlagring per dator upprepas. Provisionering kan utföras som en del av operativsystemavbildningen eller vid distribution av företagsappar. |
| Installatör | Refererar till .exe installationsprogrammet som distribuerar paketen Framework, Main, Singleton och DDLM. |
| MSIX | Modern installationsteknik som gör att användarna på ett säkert sätt kan installera en app per användare, direkt från Microsoft Store eller en webbplats. På enterprise- eller delade datorer kan appar installeras för alla användare via PowerShell och MDM. |
Framework-paket
När du skapar en app som använder Windows App SDK refererar appen till en uppsättning Windows App SDK körningskomponenter som distribueras till slutanvändare via ett framework-paket. Med ramverkspaketet kan appar access Windows App SDK komponenter via en enda delad källa på användarens enhet, i stället för att paketera dem i apppaketet. Ramverkspaketet har också egna resurser, till exempel DLL:er och API-definitioner (COM och Windows Runtime registreringar). Dessa resurser körs i appens kontext, så de ärver appens funktioner och behörigheter och hävdar inte några egna funktioner eller privilegier. Mer information om beroenden för ramverkspaket finns i MSIX-ramverkspaket och dynamiska beroenden.
Windows App SDK-ramverkspaketet är ett MSIX-paket som distribueras till slutanvändare via Microsoft Store. Det kan enkelt och snabbt uppdateras med serviceutgåvor, vilket kan innefatta säkerhets- och tillförlitlighetskorrigeringar. Alla ramverksberoende appar som använder Windows App SDK har ett beroende av en delad instans av ramverkspaketet, enligt följande diagram.
När en ny version av Windows App SDK-ramverkspaketet hanteras uppdateras alla ramverksberoende appar till den nya versionen utan att de själva behöver omdistribuera en kopia. Windows uppdaterar till den senaste versionen av ramverk när de släpps, och appar refererar automatiskt till den senaste versionen av ramverkspaketet vid nylansering. Äldre ramverkspaketversioner tas inte bort från systemet förrän de inte längre körs eller används aktivt av appar i systemet.
Eftersom appkompatibilitet är viktigt för Microsoft och för appar som är beroende av Windows App SDK följer Windows App SDK framework-paketet Semantic Versioning 2.0.0 regler. Det innebär att när vi har släppt version 1.0 av Windows App SDK garanterar Windows App SDK-ramverkspaketet kompatibilitet mellan mindre ändringar och korrigeringsversionsändringar, och icke-bakåtkompatibla ändringar sker endast mellan större versionsuppdateringar.
Singleton-paket
singleton-paketet säkerställer att en enda tidskrävande process kan hantera tjänster som används i flera appar, som kan köras på olika versioner av Windows App SDK.
Windows App SDK-singletonen krävs för att aktivera pushnotiser för opaketerade appar och paketerade Win32-program som använder Windows-versioner före 20H1 och som inte kan stödjas av de befintliga UWP-klasserna PushNotificationTrigger och ToastNotificationActionTrigger. Framtida Windows App SDK funktioner som inte kan stödjas av Framework-paketet läggs till i Singleton-paketet.
Ytterligare krav för opacketerade appar
Uppstartare
Den bootstrapper är ett bibliotek som måste ingå i din app, oavsett om den är paketerad med extern plats eller opaketerad. Det tillhandahåller API:et för bootstrapper (se Använd Windows App SDK för runtime för appar som paketeras med extern lagringsplats eller utan förpackning), vilket möjliggör för uppackade appar att utföra dessa viktiga uppgifter:
- Initiera DDLM (Dynamic Dependency Lifetime Manager) för Windows App SDK framework-paketet.
- Hitta och läs in Windows App SDK framework-paketet i appens paketdiagram.
För att utföra dessa uppgifter använder nuget-paketet auto-initializers för att koppla upp bootstrappern åt dig. Ange helt enkelt <WindowsPackageType>None</WindowsPackageType> i din project-fil. Om du vill ha kontroll över initieringen i avancerade scenarier kan du anropa bootstrapper-API:et direkt i appens startkod (se Tutorial: Använd bootstrapper-API:et i en app som paketeras med extern plats eller packas upp som använder Windows App SDK) så att systemet kan initieras korrekt för den uppackade appen. Din app måste använda bootstrapper-API:et innan den kan använda Windows App SDK funktioner som WinUI 3, applivscykel, MRT Core och DWriteCore.
Bootstrapper-biblioteket i Windows App SDK 1.0-versionen innehåller:
- Microsoft.WindowsAppRuntime.Bootstrap.dll (C++ och C#)
- Microsoft.WindowsAppRuntime.Bootstrap.Net.dll (C#-omslutning)
Dynamic Dependency Livscykelhanterare (DDLM)
Syftet med DDLM är att förhindra underhåll av Windows App SDK-ramverkspaketet medan det används av en uppackad app. Den innehåller en server som bootstrappern måste initiera tidigt under appens start för att tillhandahålla denna funktion.
Det finns en DDLM för varje version och arkitektur för Windows App SDK-ramverkspaketet. Det innebär att du på en x64 dator kan ha både en x86 och en x64 version av DDLM för att stödja appar i båda arkitekturerna.
Ytterligare krav
- För paketerade appar är VCLibs framework-paketberoendet ett krav. Mer information finns i C++ Runtime Framework-paket för Desktop Bridge.
- För opaketerade appar är Visual C++ Redistributable ett krav. Mer information finns i Microsoft Visual C++ Redistributable senaste stödda nedladdningar.
- C#. För .NET-körmiljön, se Ladda ned .NET.
MSIX-distribueringspipeline
När du lägger till ett MSIX-paket på en dator bearbetar distributionsmotorn begäran i tre steg:
| Steg | Scope | Vad händer |
|---|---|---|
| Index | Per dator | Parsar paketmanifestet och registrerar metadata och den avsedda installationssökvägen |
| Etapp | Per dator | Skapar paketkatalogen, extraherar nyttolasten och tillämpar ACL:er |
| Registrera dig | Per användare | Associerar det mellanlagrade paketet med en specifik användare – skapar Start-menyposter, filtypsassociationer och körningsdata |
Förberedelse utförs en gång per dator; registrering sker per användare. Den här separationen gör att ett paket kan göras tillgängligt (eller tas bort) för en användare utan att påverka andra.
Note
Termen installation är informell – det är inte ett formellt begrepp i MSIX-distributionsmotorn. Distributionsbegäranden använder API:et PackageManager för att skicka åtgärder (Lägg till, Mellanlagra, Registrera, Ta bort och så vidare) till distributionskö. Se Det finns ingen installation – det är "Stage" och "Register" på Inside MSIX-bloggen för en fullständig förklaring.
Relaterade ämnen
- Windows App SDK distributionsguide för ramverksberoende paketerade appar
- Windows App SDK distributionsguide för ramverksberoende appar som packeteras med extern plats eller är opaketerade
- I MSIX-bloggen – djupdykning i MSIX-arkitektur, paketidentitet, distributionsåtgärder med mera, av MSIX-teknikteamet
Windows developer