Partager via


Utiliser l’API de dépendance dynamique pour référencer des packages MSIX au moment de l’exécution

Les deux implémentations

Il existe deux implémentations de l’API de dépendance dynamique parmi lesquelles vous pouvez choisir, en fonction de votre plateforme cible et du scénario :

  • API de dépendance dynamique du Kit de développement logiciel (SDK) d’application Windows. Le SDK d’application Windows fournit des fonctions C et C++ (dans msixdynamicdependency.h) et des types Windows Runtime (WinRT) (dans l’espace de noms Microsoft.Windows.ApplicationModel.DynamicDependency ) qui implémentent l’API de dépendance dynamique. Vous pouvez utiliser cette implémentation de l’API sur n’importe quelle version de Windows qui prend en charge le Kit de développement logiciel (SDK) d’application Windows.
  • l’API de dépendance dynamique de Windows 11. Windows 11 fournit également des fonctions C et C++ qui implémentent l’API de dépendance dynamique (dans appmodel.h). Cette implémentation de l’API peut être utilisée uniquement par les applications qui ciblent Windows 11, version 22H2 (10.0 ; Build 22621), et versions ultérieures.

Consultez également Différences entre les deux implémentations.

Remarque

Comme vous le verrez dans cette rubrique, les API du Kit de développement logiciel (SDK) d’application Windows (C/C++) ont les mêmes noms que les API Windows 11 (C/C++) avec un préfixe Mdd supplémentaire. Mdd signifie dépendances dynamiques Microsoft.

Et il existe différents types de packages MSIX, y compris le framework , les ressources , les packages facultatifs , et les packages principaux . L’API de dépendance dynamique permet aux applications non empaquetées de référencer et d’utiliser des packages d’infrastructure tels que WinUI 2 et DirectX Runtime. Pour plus d’informations sur les dépendances de package d’infrastructure, consultez packages d’infrastructure MSIX et les dépendances dynamiques.

Plus précisément, l'API de dépendance dynamique permet de gérer les références pendant l'installation ainsi que les références pendant l'exécution pour les packages MSIX. Pour plus d’informations, consultez Le modèle de maintenance pour les packages d’infrastructure.

Utiliser l’API de dépendance dynamique

Pour utiliser l’API de dépendance dynamique dans votre application non empaquetée pour prendre une dépendance sur un package MSIX, suivez ce modèle général dans votre code :

1. Créer une référence au moment de l’installation

Dans le programme d’installation de votre application, ou pendant la première exécution de votre application, appelez l’une des fonctions ou méthodes suivantes pour spécifier un ensemble de critères pour le package MSIX que vous souhaitez utiliser. Cela informe le système d’exploitation que votre application a une dépendance sur un package MSIX qui répond aux critères spécifiés. Si un ou plusieurs packages MSIX sont installés qui répondent aux critères, Windows garantit qu’au moins l’un d’entre eux reste installé jusqu’à ce que la référence d’installation soit supprimée.

Les critères que vous spécifiez incluent le nom de la famille de packages, la version minimale et les architectures ; mais vous ne pouvez pas indiquer un package MSIX spécifique. Lorsque vous ajoutez une référence au moment de l’exécution au package MSIX, l’API choisit la version la plus élevée qui répond aux critères spécifiés.

Vous devez également spécifier un artefact de durée de vie, qui peut être le processus actuel, un fichier ou une clé de Registre Windows qui indique au système que l’application est toujours disponible. Si l’artefact spécifié n’existe plus, le système d’exploitation peut supposer que la dépendance n’est plus nécessaire et peut désinstaller le package MSIX si aucune autre application n’a déclaré de dépendance sur celle-ci. Cette fonctionnalité est utile pour les scénarios où une application néglige de supprimer l’épingle d'installation lorsqu’elle est désinstallée.

Cette API retourne un ID de dépendance qui doit être utilisé dans d’autres appels pour créer des références au moment de l’exécution et pour supprimer la référence au moment de l’installation.

2. Ajouter une référence au moment de l’exécution

Lorsque votre application doit utiliser le package MSIX, appelez l’une des fonctions ou méthodes suivantes pour demander l’accès au package MSIX spécifié et ajoutez une référence d’exécution pour celle-ci. L’appel de cette API informe le système d’exploitation que le paquet MSIX est en cours d’utilisation active afin de gérer les mises à jour de version en parallèle (ce qui permet de retarder efficacement la désinstallation ou la maintenance de l’ancienne version jusqu’à ce que l’application ait fini de l’utiliser). Si elle réussit, l’application peut activer des classes et utiliser du contenu à partir du package MSIX.

Lorsque vous appelez cette API, vous devez transmettre l’ID de dépendance retourné lors de la création de la référence au moment de l’installation et le classement souhaité à utiliser pour le package MSIX dans le graphe de package du processus. Cette API retourne le nom complet du package MSIX référencé et un handle utilisé pour suivre la dépendance d’utilisation active. S’il existe plusieurs packages MSIX installés qui répondent aux critères que vous avez spécifiés lors de la création de la référence au moment de l’installation, l’API choisit la version la plus élevée qui répond aux critères.

3. Supprimer la référence au moment de l’exécution

Une fois l'utilisation de votre application du package MSIX terminée, appelez l’une des fonctions ou méthodes suivantes pour supprimer la référence temporelle. En règle générale, votre application appelle cette API pendant l’arrêt. Cette API informe le système d’exploitation qu’il est sûr de supprimer les versions inutiles du package MSIX.

Lorsque vous appelez cette API, vous devez passer le handle retourné lorsque vous avez ajouté la référence pendant l'exécution.

4. Supprimer la référence au moment de l’installation

Lorsque votre application est désinstallée, appelez l’une des fonctions ou méthodes suivantes pour supprimer la référence au moment de l’installation. Cette API informe le système d’exploitation qu’il est sûr de supprimer le package MSIX si aucune autre application ne dépend de celle-ci.

Lorsque vous appelez cette API, vous devez transmettre l’ID de dépendance retourné lors de la création de la référence au moment de l’installation.

Différences entre les deux implémentations

La nécessité d’un gestionnaire de durée de vie (limitation du Kit de développement logiciel (SDK) d’application Windows)

Lorsque vous utilisez l’API de dépendance dynamique du SDK d’application Windows pour prendre une dépendance sur un package MSIX, l’API nécessite de l’aide via un autre package installé et un processus en cours d’exécution pour informer Windows que le package MSIX est en cours d’utilisation et pour bloquer la maintenance de l’infrastructure pendant son utilisation. Ce composant est appelé gestionnaire de durée de vie.

Pour son package d’infrastructure, le SDK d’application Windows fournit un composant gestionnaire de durée de vie appelé Dynamic Dependency Lifetime Manager (DDLM). Toutefois, aucun autre package d’infrastructure ne fournit actuellement un composant gestionnaire de durée de vie similaire de Microsoft.

L’API de dépendance dynamique de Windows 11 n’a pas cette limitation.

Référencer et utiliser un package principal (limitation du Kit de développement logiciel (SDK) d’application Windows)

Une dépendance dynamique peut toujours cibler un package d’infrastructure . Mais seule l'API de dépendance dynamique de Windows 11 peut également référencer et utiliser les paquets principaux ainsi que.

Le package principal doit avoir correctement configuré son fichier source du manifeste de package d’application (le Package.appxmanifest fichier dans Visual Studio). Plus précisément, le package principal (la cible, et non l’appelant) doit être défini <uap15:DependencyTarget>true</> (voir uap15 :DependencyTarget). Ainsi, l’objectif est d’activer <uap15::DependencyTarget> une dépendance dynamique pour cibler un package principal . En d’autres termes, le package principal doit choisir de s’autoriser à être utilisé comme dépendance dynamique (tandis que les packages d’infrastructure autorisent toujours implicitement cela).

Référencer le package du framework Windows App SDK (limitation du Kit de développement logiciel d’application Windows)

Dans une application non empaquetée, vous ne pouvez pas utiliser l’API de dépendance dynamique du SDK d’application Windows pour référencer le package d’infrastructure du SDK d’application Windows (comme vous pouvez référencer d’autres packages MSIX avec celui-ci). Au lieu de cela, vous devez utiliser l’API de programme d’amorçage fournie par le Kit de développement logiciel (SDK) d’application Windows. L'API bootstrapper est une forme spécialisée de l'API de dépendance dynamique conçue pour gérer les dépendances sur le package de plateforme Windows App SDK. Pour plus d’informations, consultez Utiliser le runtime du Kit de développement logiciel (SDK) d’application Windows pour les applications empaquetées avec un emplacement externe ou desnon empaquetées.

L’API de dépendance dynamique de Windows 11 n’a pas cette limitation.