Платформа поддержки пакетовPackage Support Framework

Платформа поддержки пакетов — это набор средств с открытым исходным кодом, который помогает применять исправления к существующим приложениям win32 для выполнения в контейнере 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. Платформа поддержки пакетов помогает настроить приложения в соответствии с требованиями современных сред выполнения.The Package Support Framework helps your application follow the best practices of the modern runtime environment.

Ниже приведено несколько распространенных примеров, в которых удобно применять платформу поддержки пакетов.Here are some common examples where you can find the Package Support Framework useful:

  • Ваше приложение не может найти некоторые библиотеки DLL при запуске.Your app can't find some DLLs when launched. Может потребоваться задать текущий рабочий каталог.You may need to set your current working directory. Перед преобразованием в MSIX требуемый текущий рабочий каталог можно определить в исходном ярлыке.You can learn about the required current working directory in the original shortcut before you converted to MSIX.
  • Приложение записывает данные в папку установки.The app writes into the install folder. Обычно при этом в мониторе процессов отображаются ошибки "Отказано в доступе".You will typically see it by "Access Denied" errors in Process Monitor.
  • Приложению необходимо передать параметры в исполняемый файл при запуске.Your app needs to pass parameters to the executable on launch. Здесь вы можете узнать больше о том, как выявить эту проблему, а здесь вы можете узнать больше о доступных конфигурациях.You can learn more about how to identify this issue here and learn more about the available configurations here.

Чтобы создать платформу поддержки пакетов, мы использовали технологию Detours — платформу с открытым исходным кодом, разработанную Microsoft Research (MSR), которая помогает выполнять подключения и перенаправления 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.

Это упрощенная платформа с открытым кодом, с помощью которой можно быстро устранять неполадки с приложениями.This framework is open source, lightweight, and you can use it to address application issues quickly. Основанная на совместной работе многих участников, она также позволяет обращаться к сообществу пользователей по всему миру.It also gives you the opportunity to consult with the community around the globe, and to build on top of the investments of others.

См. подробнее о применении исправлений среды выполнения к пакету MSIX с помощью платформы поддержки пакетов.For a step-by-step guide, see Apply runtime fixes to an MSIX package by using the Package Support Framework.

Краткий обзор платформы поддержки пакетовA quick look inside of the Package Support Framework

Платформа поддержки пакетов содержит исполняемый файл, библиотеку DLL диспетчера среды выполнения и набор исправлений для среды выполнения.The Package Support Framework contains an executable, a runtime manager DLL, and a set of runtime fixes.

Платформа поддержки пакетов

Вот как это работает.Here's how it works. Вы создаете файл конфигурации, чтобы определить исправления, которые нужно применить к приложению.You'll create a configuration file that specifies the fixes that you want to apply to your application. Затем вы изменяете пакет, чтобы определить исполняемый файл средства запуска платформы поддержки пакетов.Then, you'll modify your package to point to the Package Support Framework (PSF) launcher executable file.

Когда пользователь запускает приложение, средство запуска платформы поддержки пакетов является первым исполняемым файлом.When users start your application, the Package Support Framework launcher is the first executable that runs. Он считывает файл конфигурации и внедряет исправления среды выполнения и библиотеку DLL диспетчера среды выполнения в процесс приложения.It reads your configuration file and injects the runtime fixes and the runtime manager DLL into the application process. Диспетчер среды выполнения применяет исправление, когда это требуется для выполнения приложения в контейнере MSIX.The runtime manager applies the fix when it's needed by the application to run inside of an MSIX container.

Внедрение библиотеки DLL платформы поддержки пакетов

Приступая к работе с платформой поддержки пакетовGet started using the Package Support Framework

Создав пакет для приложения, установите и запустите его, а также понаблюдайте за его поведением.After you create a package for your application, install and run it, and observe its behavior. Могут появиться сообщения об ошибке, которые помогут выявить проблемы с совместимостью.You might receive error messages that can help you identify a compatibility issue. Вы также можете использовать Монитор процесса для выявления проблем.You can also use Process Monitor to identify issues.

Обнаружив проблему, можно просмотреть соответствующую страницу GitHub, чтобы получить исправление.After you find an issue, you can check our GitHub page for a fix. Найдя нужное исправление, вы можете применить его к своему пакету.If you find one, you can apply it to your package. В этом пошаговом руководстве показано, как это сделать.Our step-by-step guide shows you how to do this. Вы также узнаете, как использовать отладчик Visual Studio, чтобы поэтапно проверить работу приложения и убедиться, что исправление работает и что проблемы совместимости решены.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.

Если вы не можете найти исправление среды выполнения, которое устранит вашу проблему, его можно создать.If you can't find a runtime fix that addresses your issue, you can create one. Для этого вам нужно определить, какая функция вызывает сбой при запуске приложения в контейнере MSIX.To do that, you'll identify which function calls fail when your application runs in an MSIX container. Затем вам нужно создать альтернативные функции, которые должен вызвать диспетчер среды выполнения.Then, you can create replacement functions that you'd like the runtime manager to call instead. Это позволит вам заменить реализацию функции, чтобы ее поведение соответствовало правилам работы с современными средами выполнения.This gives you an opportunity to replace the implementation of a function with behavior that conforms to the rules of the modern runtime environment.

Кроме того, с помощью платформы поддержки пакетов можно выполнять сценарии для динамической настройки приложения в соответствии с пользовательской средой.You can also use the Package Support Framework to run scripts to customize an application for the user environment dynamically. Дополнительные сведения см. в этой статье.For more information, see this article.

ОграниченияLimitations

Платформа поддержки пакетов не поддерживает переопределение реестра.The Package Support Framework does not support registry overrides. Она предназначена для устранения проблем времени выполнения.It is designed to resolve run time issues.

Данные и телеметрияData and telemetry

Платформа поддержки пакетов включает в себя функцию телеметрии, которая собирает данные об использовании и отправляет их в корпорацию Майкрософт, чтобы помочь улучшить наши продукты и услуги.The Package Support Framework includes telemetry that collects usage data and sends it to Microsoft to help improve our products and services. Ознакомьтесь с заявлением о конфиденциальности корпорации Майкрософт, чтобы узнать больше.Read Microsoft's privacy statement to learn more. Тем не менее данные будут собираться только при выполнении обоих следующих условий:However, data will be collected only when both of the following conditions are met:

  • На компьютере с Windows 10 используются двоичные файлы платформы поддержки пакетов из пакета NuGet.The Package Support Framework binaries are used from the NuGet package on a Windows 10 computer.
  • Пользователь включил сбор данных на компьютере.The user has enabled collection of data on the computer.

Пакет NuGet содержит подписанные двоичные файлы. Он будет собирать данные об использовании с компьютера.The NuGet package contains signed binaries and will collect usage data from the computer. Данные телеметрии не собираются, если двоичные файлы были созданы локально путем клонирования репозитория или скачивания двоичных файлов напрямую.Telemetry is not collected when the binaries are built locally by cloning the repo or downloading the binaries directly.