Framework de prise en charge de package

Le Framework de prise en charge de package est un kit open source qui vous permet d’appliquer des correctifs à votre application win32 existante quand vous n’avez pas accès au code source, afin qu’elle puisse s’exécuter dans un conteneur MSIX. Le Framework de prise en charge de package aide votre application à respecter les bonnes pratiques de l’environnement d’exécution moderne.

Voici quelques exemples courants où vous trouverez le framework de prise en charge de package utile :

  • Votre application n’arrive pas à trouver des DLL lors de son lancement. Vous aurez peut-être besoin de définir votre répertoire de travail actuel. Vous pouvez en savoir plus sur le répertoire de travail actuel requis dans le raccourci d’origine avant de l’avoir converti en MSIX.
  • L’application écrit dans le dossier d’installation. En général, vous le verrez via les erreurs « Accès refusé » dans Analyseur de processus.
  • Votre application doit passer des paramètres au fichier exécutable lors du lancement. Vous pouvez en savoir plus sur la façon d’identifier ce problème ici et sur les configurations disponibles ici.

Pour créer le Framework de prise en charge de package, nous avons exploité la technologie Detours, un framework open source développé par Microsoft Research (MSR) qui facilite le raccordement et la redirection d’API.

Ce framework est open source et léger, et vous pouvez l’utiliser pour résoudre rapidement les problèmes d’application. Il vous offre également l’opportunité d’échanger avec la communauté dans le monde entier, et de tirer parti des efforts et investissements des autres utilisateurs.

Pour obtenir un guide pas à pas, consultez Appliquer des correctifs à l’exécution à un package MSIX à l’aide du Framework de prise en charge de package.

Coup d’œil rapide dans le Framework de prise en charge de package

Le Framework de prise en charge de package contient un exécutable, une DLL de gestionnaire de runtime et un ensemble de correctifs de runtime.

Framework de prise en charge de package

Voici le principe : Vous allez créer un fichier de configuration qui spécifie les correctifs que vous souhaitez appliquer à votre application. Ensuite, vous allez modifier votre package pour pointer vers le fichier exécutable du lanceur de Framework de prise en charge de package (PSF, Package Support Framework).

Quand des utilisateurs démarrent votre application, le lanceur de Framework de prise en charge de package est le premier exécutable qui s’exécute. Il lit votre fichier de configuration et injecte les correctifs de runtime et la DLL de gestionnaire de runtime dans le processus d’application. Le gestionnaire de runtime applique le correctif quand l’application en a besoin pour s’exécuter à l’intérieur d’un conteneur MSIX.

Injection de DLL par le Framework de prise en charge de package

Bien démarrer avec le Framework de prise en charge de package

Une fois que vous avez créé un package pour votre application, installez-le et exécutez-le, et observez son comportement. Vous recevrez peut-être des messages d’erreur qui vous aideront à identifier un problème de compatibilité. Vous pouvez également utiliser Process Monitor pour identifier les problèmes.

Une fois que vous avez identifié un problème, vous pouvez vérifier s’il existe un correctif sur notre page GitHub. Si vous en trouvez un, vous pouvez l’appliquer à votre package. Notre guide pas à pas explique comment procéder. Il montre également comment utiliser le débogueur de Visual Studio pour effectuer un pas à pas dans votre application et vérifier que le correctif fonctionne et qu’il a résolu le problème de compatibilité.

Si vous ne trouvez pas de correctif de runtime qui résout votre problème, vous pouvez en créer un. Pour cela, vous allez identifier les appels de fonction qui échouent quand votre application s’exécute dans un conteneur MSIX. Ensuite, vous pouvez créer des fonctions de remplacement que vous souhaitez que le gestionnaire de runtime appellent à la place. Cela vous donne l’opportunité de remplacer l’implémentation d’une fonction par un comportement qui est conforme aux règles de l’environnement d’exécution moderne.

Vous pouvez également utiliser le Framework de prise en charge de package pour exécuter des scripts visant à personnaliser dynamiquement une application pour l’environnement utilisateur. Pour plus d’informations, consultez cet article.

Limitations

Le Framework de prise en charge de package ne prend pas en charge les remplacements de registres. Il est conçu pour résoudre les problèmes d’exécution.

Données et télémétrie

Le Framework de prise en charge de package comprend la télémétrie qui collecte les données d’utilisation et les envoie à Microsoft pour contribuer à l’amélioration de nos produits et services. Lisez la déclaration de confidentialité de Microsoft pour en savoir plus. Toutefois, les données sont collectées seulement si les deux conditions suivantes sont réunies :

  • Les fichiers binaires du Framework de prise en charge de package sont utilisés à partir du package NuGet sur un ordinateur Windows 10.
  • L’utilisateur a activé la collecte de données sur l’ordinateur.

Le package NuGet contient des fichiers binaires signés et collecte les données d’utilisation de l’ordinateur. La télémétrie n’est pas collectée lorsque les fichiers binaires sont générés localement en clonant le référentiel ou en téléchargeant les fichiers binaires directement.