Framework de prise en charge de packagePackage Support Framework

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.The Package Support Framework is an open source kit that helps you apply fixes to your existing win32 application when you don't have access to the source code, so that it can run in an MSIX container. Le Framework de prise en charge de package aide votre application à respecter les bonnes pratiques de l’environnement d’exécution moderne.The Package Support Framework helps your application follow the best practices of the modern runtime environment.

Voici quelques exemples courants où vous trouverez le framework de prise en charge de package utile :Here are some common examples where you can find the Package Support Framework useful:

  • Votre application n’arrive pas à trouver des DLL lors de son lancement.Your app can't find some DLLs when launched. Vous aurez peut-être besoin de définir votre répertoire de travail actuel.You may need to set your current working directory. 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.You can learn about the required current working directory in the original shortcut before you converted to MSIX.
  • L’application écrit dans le dossier d’installation.The app writes into the install folder. En général, vous le verrez via les erreurs « Accès refusé » dans Analyseur de processus.You will typically see it by "Access Denied" errors in Process Monitor.
  • Votre application doit passer des paramètres au fichier exécutable lors du lancement.Your app needs to pass parameters to the executable on launch. Vous pouvez en savoir plus sur la façon d’identifier ce problème ici et sur les configurations disponibles ici.You can learn more about how to identify this issue here and learn more about the available configurations here.

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.To create the Package Support Framework, we leveraged the Detours technology which is an open source framework developed by Microsoft Research (MSR) and helps with API redirection and hooking.

Ce framework est open source et léger, et vous pouvez l’utiliser pour résoudre rapidement les problèmes d’application.This framework is open source, lightweight, and you can use it to address application issues quickly. 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.It also gives you the opportunity to consult with the community around the globe, and to build on top of the investments of others.

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.For a step-by-step guide, see Apply runtime fixes to an MSIX package by using the Package Support Framework.

Coup d’œil rapide dans le Framework de prise en charge de packageA quick look inside of the Package Support Framework

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.The Package Support Framework contains an executable, a runtime manager DLL, and a set of runtime fixes.

Framework de prise en charge de package

Voici le principe :Here's how it works. Vous allez créer un fichier de configuration qui spécifie les correctifs que vous souhaitez appliquer à votre application.You'll create a configuration file that specifies the fixes that you want to apply to your 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).Then, you'll modify your package to point to the Package Support Framework (PSF) launcher executable file.

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.When users start your application, the Package Support Framework launcher is the first executable that runs. Il lit votre fichier de configuration et injecte les correctifs de runtime et la DLL de gestionnaire de runtime dans le processus d’application.It reads your configuration file and injects the runtime fixes and the runtime manager DLL into the application process. Le gestionnaire de runtime applique le correctif quand l’application en a besoin pour s’exécuter à l’intérieur d’un conteneur MSIX.The runtime manager applies the fix when it's needed by the application to run inside of an MSIX container.

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

Bien démarrer avec le Framework de prise en charge de packageGet started using the Package Support Framework

Une fois que vous avez créé un package pour votre application, installez-le et exécutez-le, et observez son comportement.After you create a package for your application, install and run it, and observe its behavior. Vous recevrez peut-être des messages d’erreur qui vous aideront à identifier un problème de compatibilité.You might receive error messages that can help you identify a compatibility issue. Vous pouvez également utiliser Process Monitor pour identifier les problèmes.You can also use Process Monitor to identify issues.

Une fois que vous avez identifié un problème, vous pouvez vérifier s’il existe un correctif sur notre page GitHub.After you find an issue, you can check our GitHub page for a fix. Si vous en trouvez un, vous pouvez l’appliquer à votre package.If you find one, you can apply it to your package. Notre guide pas à pas explique comment procéder.Our step-by-step guide shows you how to do this. 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é.It will also show you how to use the Visual Studio debugger to step through your application and verify that the fix is working and that it has resolved the compatibility issue.

Si vous ne trouvez pas de correctif de runtime qui résout votre problème, vous pouvez en créer un.If you can't find a runtime fix that addresses your issue, you can create one. Pour cela, vous allez identifier les appels de fonction qui échouent quand votre application s’exécute dans un conteneur MSIX.To do that, you'll identify which function calls fail when your application runs in an MSIX container. Ensuite, vous pouvez créer des fonctions de remplacement que vous souhaitez que le gestionnaire de runtime appellent à la place.Then, you can create replacement functions that you'd like the runtime manager to call instead. 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.This gives you an opportunity to replace the implementation of a function with behavior that conforms to the rules of the modern runtime environment.

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.You can also use the Package Support Framework to run scripts to customize an application for the user environment dynamically. Pour plus d’informations, consultez cet article.For more information, see this article.

LimitationsLimitations

Le Framework de prise en charge de package ne prend pas en charge les remplacements de registres.The Package Support Framework does not support registry overrides. Il est conçu pour résoudre les problèmes d’exécution.It is designed to resolve run time issues.

Données et télémétrieData and telemetry

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.The Package Support Framework includes telemetry that collects usage data and sends it to Microsoft to help improve our products and services. Lisez la déclaration de confidentialité de Microsoft pour en savoir plus.Read Microsoft's privacy statement to learn more. Toutefois, les données sont collectées seulement si les deux conditions suivantes sont réunies :However, data will be collected only when both of the following conditions are met:

  • Les fichiers binaires du Framework de prise en charge de package sont utilisés à partir du package NuGet sur un ordinateur Windows 10.The Package Support Framework binaries are used from the NuGet package on a Windows 10 computer.
  • L’utilisateur a activé la collecte de données sur l’ordinateur.The user has enabled collection of data on the computer.

Le package NuGet contient des fichiers binaires signés et collecte les données d’utilisation de l’ordinateur.The NuGet package contains signed binaries and will collect usage data from the computer. 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.Telemetry is not collected when the binaries are built locally by cloning the repo or downloading the binaries directly.