Použijte rozhraní API pro dynamické závislosti k odkazování na balíčky MSIX za běhu

Dvě implementace

Existují dvě implementace dynamického rozhraní API závislostí, ze které si můžete vybrat v závislosti na cílové platformě a scénáři:

  • dynamické závislosti rozhraní API Windows App SDK. Sada Windows App SDK poskytuje funkce jazyka C a C++ (v msixdynamicdependency.h) a typy systému Windows Runtime (WinRT) v oboru názvů Microsoft.Windows.ApplicationModel.DynamicDependency, které implementují rozhraní API pro dynamickou závislost. Tuto implementaci rozhraní API můžete použít v libovolné verzi Windows, která podporuje sadu Windows App SDK.
  • Dynamické závislosti API Windows 11. Windows 11 také poskytuje funkce jazyka C a C++, které implementují dynamické rozhraní API závislostí (v appmodel.h). Tuto implementaci rozhraní API můžou používat jenom aplikace, které cílí na Windows 11 verze 22H2 (10.0; Build 22621) a novější.

Viz také Rozdíly mezi dvěma implementacemi.

Poznámka:

Jak uvidíte v tomto tématu, rozhraní API sady Windows App SDK (C/C++) mají stejné názvy jako rozhraní API pro Windows 11 (C/C++) s další předponou mdd. Mdd je zkratka pro Microsoft Dynamic Dependencies.

A existují různé druhy balíčků MSIX, včetně balíčků rámce , balíčků zdrojů , volitelných balíčků a hlavních balíčků . Rozhraní API dynamické závislosti umožňuje nebaleným aplikacím odkazovat a používat balíčky frameworku, jako je WinUI pro UWP a modul runtime DirectX. Další informace o závislostech balíčků architektury najdete v tématu balíčky architektury MSIX a dynamické závislosti.

Rozhraní API dynamické závislosti poskytuje způsoby, jak spravovat odkazy pro dobu instalace a odkazy za běhu doby pro balíčky MSIX. Další informace najdete v tématu Model údržby pro rámcové balíčky.

Použití rozhraní API pro dynamické závislosti

Pokud chcete použít rozhraní API dynamické závislosti v rozbalené aplikaci k převzetí závislosti na balíčku MSIX, postupujte podle tohoto obecného vzoru v kódu:

1. Vytvořte odkaz pro dobu instalace

V instalačním programu aplikace nebo během prvního spuštění aplikace zavolejte jednu z následujících funkcí nebo metod, abyste určili sadu kritérií balíčku MSIX, který chcete použít. To informuje operační systém (OS), že vaše aplikace má závislost na balíčku MSIX, který splňuje zadaná kritéria. Pokud jsou nainstalovány jeden nebo více balíčků MSIX, které splňují kritéria, systém Windows zajistí, že alespoň jeden z nich zůstane nainstalován, dokud nebude odstraněn odkaz na dobu instalace.

Zadaná kritéria zahrnují název rodiny balíčků, minimální verzi a architektury; nemůžete ale označit konkrétní balíček MSIX. Když do balíčku MSIX přidáte odkaz při běhu, rozhraní API zvolí nejvyšší verzi, která splňuje zadaná kritéria.

Musíte také zadat artefakt životnosti aplikace, což může být aktuální proces, soubor nebo klíč registru systému Windows, který označuje systému, že aplikace je stále dostupná. Pokud zadaný artefakt již neexistuje, operační systém může předpokládat, že závislost už není potřebná, a pokud žádné jiné aplikace nehlásily závislost, může balíček MSIX odinstalovat. Tato funkce je užitečná ve scénářích, kdy aplikace při odinstalaci zanedbává odebrání pinu času instalace.

Toto rozhraní API vrátí ID závislosti, které se musí použít v jiných voláních k vytvoření odkazů během běhu a k odstranění odkazu během instalace.

2. Přidejte odkaz za běhu

Pokud vaše aplikace potřebuje použít balíček MSIX, zavolejte jednu z následujících funkcí nebo metod pro vyžádání přístupu k zadanému balíčku MSIX a přidejte pro něj referenční informace za běhu. Volání tohoto rozhraní API informuje operační systém, že je balíček MSIX aktivně používán, aby tak mohl zpracovávat všechny aktualizace verzí paralelně (tj. efektivně odkládat odinstalaci nebo jinak spravovat starší verzi, dokud ji aplikace používá). V případě úspěchu může aplikace aktivovat třídy a používat obsah z balíčku MSIX.

Při volání tohoto rozhraní API musíte předat ID závislosti, které se vrátilo při vytváření odkazu pro čas instalace, a požadované umístění, které má být použito pro balíček MSIX v grafu balíčků procesu. Toto rozhraní API vrátí úplný název balíčku MSIX, na který bylo odkazováno, a popisovač, který se používá ke sledování aktivního využívání závislosti. Pokud je nainstalováno více balíčků MSIX, které splňují kritéria, která jste zadali při vytváření odkazu na dobu instalace, pak rozhraní API zvolí nejvyšší verzi, která splňuje kritéria.

3. Odeberte referenční informace za běhu.

Po dokončení aplikace pomocí balíčku MSIX zavolejte jednu z následujících funkcí nebo metod, abyste odebrali referenční informace za běhu. Vaše aplikace obvykle volá toto rozhraní API během vypnutí. Toto rozhraní API informuje operační systém, že je bezpečné odebrat všechny nepotřebné verze balíčku MSIX.

Při volání tohoto rozhraní API musíte předat popisovač, který byl vrácen při přidání odkazu za běhu.

4. Odstraňte referenční informace k času instalace.

Po odinstalaci aplikace zavolejte jednu z následujících funkcí nebo metod, abyste odstranili odkaz na dobu instalace. Toto rozhraní API informuje operační systém, že je bezpečné odebrat balíček MSIX, pokud na něm nejsou závislé žádné jiné aplikace.

Při volání tohoto rozhraní API musíte předat ID závislosti, které bylo vráceno při vytváření referenční doby instalace.

Rozdíly mezi těmito dvěma implementacemi

Potřeba správce životnosti (omezení v rámci sady Windows App SDK)

Když použijete rozhraní API dynamické závislosti sady Windows App SDK k převzetí závislosti na balíčku MSIX, rozhraní API vyžaduje pomoc prostřednictvím jiného nainstalovaného balíčku a spuštěného procesu, aby informovalo Systém Windows, že se balíček MSIX používá, a k blokování údržby rozhraní během jeho použití. Tato komponenta se nazývá správce životnosti.

Pro balíček architektury poskytuje sada Windows App SDK součást správce životnosti označovanou jako DDLM (Dynamic Dependency Lifetime Manager). Žádné další balíčky architektury však v současné době poskytují podobnou součást správce životnosti od Microsoftu.

Toto omezení nemá rozhraní API pro dynamické závislosti Windows 11.

Referenční informace a použití hlavního balíčku (omezení sady Windows App SDK)

Dynamická závislost může vždy cílit na balíček architektury . Dynamické rozhraní API závislostí windows 11 ale může odkazovat a používat také hlavní balíčky.

Hlavní balíček musí mít správně nakonfigurovaný zdrojový soubor manifestu balíčku aplikace (soubor Package.appxmanifest v sadě Visual Studio). Konkrétně musí hlavní balíček (cíl, nikoli volající) nastavit <uap15:DependencyTarget>true</> (viz uap15:DependencyTarget). Účelem <uap15::DependencyTarget> je umožnit dynamické závislosti směrovat na hlavní balíček . Jinými slovy, hlavní balíček se musí rozhodnout, aby se mohl používat jako dynamická závislost (zatímco balíčky architektury to vždy implicitně umožňují).

Odkaz na balíček architektury sady Windows App SDK (omezení sady Windows App SDK)

V rozbalené aplikaci nemůžete použít rozhraní API dynamické závislosti sady Windows App SDK k odkazování na balíček architektury sady Windows App SDK (stejně jako s ním můžete odkazovat na jiné balíčky MSIX). Místo toho je potřeba použít rozhraní API bootstrapperu poskytované sadou Windows App SDK. Rozhraní API bootstrapper je specializovaná forma rozhraní API dynamické závislosti, která je navržena tak, aby zpracovávala závislosti na rámcovém balíčku sady Windows App SDK. Další informace najdete v tématu Použití modulu runtime sady Windows App SDK pro aplikace zabalené s externím umístěním nebo rozbalené.

Toto omezení nemá rozhraní API pro dynamické závislosti Windows 11.