パッケージ サポート フレームワーク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 テクノロジが利用されています。これは、API リダイレクトとフックを支援する、Microsoft Research (MSR) によって開発されたオープン ソースのフレームワークです。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.

ステップバイステップ ガイドについては、「Apply runtime fixes to an MSIX package by using the Package Support Framework (パッケージ サポート フレームワークを使用した 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. 次に、パッケージ サポート フレームワーク (PSF) ランチャーの実行可能ファイルを指すようにパッケージを変更します。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

パッケージ サポート フレームワークには、製品やサービスの向上に役立てるために、使用状況データを収集して Microsoft に送信するテレメトリが含まれています。The Package Support Framework includes telemetry that collects usage data and sends it to Microsoft to help improve our products and services. 詳しくは、Microsoft のプライバシーに関する声明をご覧ください。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.