Anteckning
Å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.
De två implementeringarna
Det finns två implementeringar av dynamiskt beroende-API som du kan välja mellan, beroende på din målplattform och ditt scenario:
- Windows App SDK:s api för dynamiskt beroende. Windows App SDK innehåller C- och C++-funktioner (i msixdynamicdependency.h) och WinRT-typer (Windows Runtime) (i Microsoft.Windows.ApplicationModel.DynamicDependency namnrymd) som implementerar API:et för dynamiskt beroende. Du kan använda den här implementeringen av API:et på valfri version av Windows som stöder Windows App SDK.
- API för dynamiskt beroende i Windows 11. Windows 11 innehåller även C- och C++-funktioner som implementerar API:et för dynamiskt beroende (i appmodel.h). Den här implementeringen av API:et kan endast användas av appar som riktar sig mot Windows 11, version 22H2 (10.0; Build 22621) och senare.
Se även Skillnader mellan de två implementeringarna.
Anmärkning
Som du ser i det här avsnittet har API:erna för Windows App SDK (C/C++) samma namn som API:erna för Windows 11 (C/C++) med ytterligare Mdd- prefix. Mdd står för Microsofts dynamiska beroenden.
Och det finns olika typer av MSIX-paket, inklusive ramverk, resurs, valfrittoch huvud paket. API:et för dynamiskt beroende gör det möjligt för opaketerade appar att referera till och använda ramverk paket som WinUI 2 och DirectX Runtime. Mer information om beroenden för ramverkspaket finns i MSIX-ramverkspaket och dynamiska beroenden.
Mer specifikt tillhandahåller API:et för dynamiskt beroende olika sätt att hantera installationsreferenser och körningsreferenser för MSIX-paket. Mer information finns i servicemodell för ramverkspaket.
Använda API:et för dynamiskt beroende
Följ det här allmänna mönstret i koden om du vill använda API:et för dynamiskt beroende i din uppackade app för att ta ett beroende av ett MSIX-paket:
1. Skapa en referens för installationstid
I appens installationsprogram eller under den första körningen av appen anropar du någon av följande funktioner eller metoder för att ange en uppsättning kriterier för det MSIX-paket som du vill använda. Detta informerar operativsystemet (OS) om att din app är beroende av ett MSIX-paket som uppfyller de angivna kriterierna. Om ett eller flera MSIX-paket installeras som uppfyller kriterierna ser Windows till att minst ett av dem förblir installerat tills installationstidsreferensen har tagits bort.
- Windows 11 (C/C++): TryCreatePackageDependency
- SDK för Windows-app (C/C++): MddTryCreatePackageDependency
- SDK för Windows-appar (WinRT): PackageDependency.Create
De kriterier som du anger är paketfamiljenamnet, den lägsta versionen och arkitekturerna. men du kan inte ange ett specifikt MSIX-paket. När du lägger till en körningsreferens till MSIX-paketet väljer API:et den högsta version som uppfyller de angivna kriterierna.
Du måste också ange en livslängdsartefakt, som kan vara den aktuella processen, en fil eller en Windows-registernyckel som anger för systemet att appen fortfarande är tillgänglig. Om den angivna artefakten inte längre finns kan operativsystemet anta att beroendet inte längre behövs och kan avinstallera MSIX-paketet om inga andra appar har deklarerat ett beroende av det. Den funktionen är användbar för scenarier där en app försummar att ta bort pin-koden för installationstid när den avinstalleras.
Det här API:et returnerar ett beroende-ID som måste användas i andra anrop för att skapa körningsreferenser och för att ta bort installationstidsreferensen.
2. Lägg till en referens för körningstid
När din app behöver använda MSIX-paketet anropar du någon av följande funktioner eller metoder för att begära åtkomst till det angivna MSIX-paketet och lägger till en körningsreferens för det. Om du anropar det här API:et informeras operativsystemet om att MSIX-paketet används aktivt och att alla versionsuppdateringar hanteras sida vid sida (i praktiken fördröjer avinstallationen eller på annat sätt underhåller den äldre versionen tills appen har använts). Om det lyckas kan appen aktivera klasser och använda innehåll från MSIX-paketet.
- Windows 11 (C/C++): AddPackageDependency
- SDK för Windows-app (C/C++): MddAddPackageDependency
- SDK för Windows-appar (WinRT): PackageDependency.Add
När du anropar det här API:et måste du skicka in beroende-ID:t som returnerades när du skapade installationstidsreferensen och önskad rangordning som ska användas för MSIX-paketet i processens paketdiagram. Det här API:et returnerar det fullständiga namnet på det MSIX-paket som refererades och ett handtag som används för att hålla reda på beroendet för aktivt bruk. Om det finns flera MSIX-paket installerade som uppfyller de kriterier som du angav när du skapade installationstidsreferensen väljer API:et den högsta versionen som uppfyller kriterierna.
3. Ta bort körningsreferensen
När appen är klar med MSIX-paketet anropar du någon av följande funktioner eller metoder för att ta bort körningstidsreferensen. Normalt anropar appen det här API:et under avstängningen. Det här API:et informerar operativsystemet om att det är säkert att ta bort onödiga versioner av MSIX-paketet.
- Windows 11 (C/C++): RemovePackageDependency
- SDK för Windows-appar (C/C++): MddRemovePackageDependency
- SDK för Windows-appar (WinRT): PackageDependencyContext.Remove
När du anropar den här API:n måste du ange handtaget som returnerades när du lade till körtidsreferensen.
4. Ta bort installationstidsreferensen
När appen avinstalleras anropar du någon av följande funktioner eller metoder för att ta bort installationstidsreferensen. Det här API:et informerar operativsystemet om att det är säkert att ta bort MSIX-paketet om inga andra appar är beroende av det.
- Windows 11 (C/C++): DeletePackageDependency
- SDK för Windows-app (C/C++): MddDeletePackageDependency
- SDK för Windows-appar (WinRT): PackageDependency.Delete
När du anropar det här API:et måste du skicka in beroende-ID:t som returnerades när du skapade installationstidsreferensen.
Skillnader mellan de två implementeringarna
Behovet av en lifetime manager (Windows App SDK-begränsning)
När du använder Windows App SDK:s api för dynamiskt beroende för att ta ett beroende av ett MSIX-paket behöver API:et hjälp via ett annat installerat paket och en process som körs för att informera Windows om att MSIX-paketet används och för att blockera underhåll av ramverket medan det används. Komponenten kallas en livslängdshanterare.
För sitt ramverkspaket tillhandahåller Windows App SDK en lifetime manager-komponent som kallas Dynamic Dependency Lifetime Manager (DDLM). Inga andra ramverkspaket tillhandahåller dock för närvarande en liknande lifetime manager-komponent från Microsoft.
Api:et för dynamiskt beroende i Windows 11 har inte den här begränsningen.
Referera till och använd ett huvudpaket (Windows App SDK-begränsning)
Ett dynamiskt beroende kan alltid rikta in sig på ett ramverk paket. Men endast det dynamiska beroende-API:t i Windows 11 kan referera till och använda huvud--paket också.
Huvudpaketet måste ha riktigt konfigurerat sitt app-pakets manifestkällfil (den Package.appxmanifest-filen i Visual Studio). Mer specifikt måste huvudpaketet (målet, inte anroparen) ange <uap15:DependencyTarget>true</> (se uap15:DependencyTarget). Syftet med <uap15::DependencyTarget> är därför att aktivera ett dynamiskt beroende för att rikta in sig på ett huvudpaket för. Med andra ord måste huvudpaketet välja att tillåta sig att användas som ett dynamiskt beroende (medan ramverkspaket alltid implicit tillåter det).
Referera till Windows App SDK-ramverkspaketet (Windows App SDK-begränsning)
I en uppackad app kan du inte använda Windows App SDK:s dynamiska beroende-API för att referera till Windows App SDK-ramverkspaketet (som du kan referera till andra MSIX-paket med det). I stället måste du använda bootstrapper-API:et som tillhandahålls av Windows App SDK. Bootstrapper-API:et är en specialiserad form av api:et för dynamiskt beroende som är utformat för att ta beroenden i Windows App SDK-ramverkspaketet. Mer information finns i om hur du använder körningen Windows App SDK för appar som paketeras med extern plats eller utan paketering.
Api:et för dynamiskt beroende i Windows 11 har inte den här begränsningen.
Relaterade ämnen
Windows developer