パッケージ サポート フレームワーク

パッケージ サポート フレームワークは、ソース コードにアクセスできない場合に既存の win32 アプリケーションに修正プログラムを適用して、デスクトップ アプリケーションが MSIX コンテナー内で実行できるようにするのに役立つオープン ソース キットです。 パッケージ サポート フレームワークは、アプリケーションで最新のランタイム環境のベスト プラクティスに従うのに役立ちます。

パッケージ サポート フレームワークが役立つ一般的な例をいくつか紹介します。

  • アプリが起動時に DLL を見つけることができません。 場合によっては、現在の作業ディレクトリを設定する必要があります。 MSIX に変換する前に、元のショートカットで必要な現在の作業ディレクトリを調べることができます。
  • アプリはインストール フォルダーに書き込みます。 通常、プロセス モニターに "アクセスが拒否されました" というエラーが表示されます。
  • アプリは起動時にパラメーターを実行可能ファイルに渡す必要があります。 この問題を特定する方法の詳細についてはこちら、使用可能な構成の詳細についてはこちらを参照してください。

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

このフレームワークは、オープン ソースで軽量であり、アプリケーションの問題に迅速に対処するために使用できます。 さらに、これにより、世界中のコミュニティに相談する機会と共に、他者の投資に基づいて事を進める機会が得られます。

ステップバイステップ ガイドについては、「Apply runtime fixes to an MSIX package by using the Package Support Framework (パッケージ サポート フレームワークを使用した MSIX パッケージへのランタイム修正プログラムの適用)」を参照してください。

パッケージ サポート フレームワークの概要

パッケージ サポート フレームワークには、実行可能ファイル、ランタイム マネージャー DLL、およびランタイム修正プログラムのセットが含まれます。

パッケージ サポート フレームワーク

しくみは次のとおりです。 アプリケーションに適用する修正プログラムを指定する構成ファイルを作成します。 次に、パッケージ サポート フレームワーク (PSF) ランチャーの実行可能ファイルを指すようにパッケージを変更します。

ユーザーがアプリケーションを起動すると、パッケージ サポート フレームワーク ランチャーが最初に実行されます。 ランチャーによって構成ファイルが読み取られ、ランタイム修正プログラムとランタイム マネージャー DLL がアプリケーション プロセスに挿入されます。 ランタイム マネージャーは、MSIX、コンテナー内で実行するアプリケーションで必要になったときに修正プログラムを適用します。

パッケージ サポート フレームワークによる DLL の挿入

パッケージ サポート フレームワークの使用を開始する

アプリケーション用のパッケージを作成したら、それをインストールして実行し、その動作を確認します。 互換性に関する問題の特定に役立つエラー メッセージが表示されることがあります。 プロセス モニターを使用して問題を識別することもできます。

問題が見つかったら、GitHub のページで修正プログラムを確認できます。 修正プログラムが見つかった場合は、それをパッケージに適用できます。 このステップバイステップ ガイドにその方法が説明されています。 また、Visual Studio デバッガーを使用してアプリケーションをステップ実行し、修正プログラムが機能していること、および互換性の問題が解決されたことを確認する方法も示されています。

問題を解決するランタイム修正プログラムが見つからない場合は、自分で作成することができます。 そのためには、MSIX コンテナー内でアプリケーションを実行したときにどの関数呼び出しが失敗するかを特定します。 次に、ランタイム マネージャーで代わりに呼び出す差し替え用の関数を作成できます。 これにより、関数の実装を最新のランタイム環境の規則に準拠した動作に置き換えることができます。

また、パッケージ サポート フレームワークを使用してスクリプトを実行し、ユーザー環境に合わせてアプリケーションを動的にカスタマイズすることもできます。 詳しくは、こちらの記事をご覧ください。

制限事項

パッケージ サポート フレームワークでは、レジストリの上書きはサポートされていません。 これは、実行時の問題を解決するように設計されています。

データとテレメトリ

パッケージ サポート フレームワークには、製品やサービスの向上に役立てるために、使用状況データを収集して Microsoft に送信するテレメトリが含まれています。 詳しくは、Microsoft のプライバシーに関する声明をご覧ください。 ただし、データが収集されるのは、次の条件が両方とも満たされている場合だけです。

  • Windows 10 コンピューターで NuGet パッケージのパッケージ サポート フレームワークのバイナリが使用されている。
  • ユーザーがコンピューター上のデータ収集を有効にしている。

NuGet パッケージには署名済みバイナリが含まれており、該当するコンピューターの使用状況データを収集します。 リポジトリを複製したり、バイナリを直接ダウンロードしたりして、バイナリをローカルに構築している場合には、テレメトリは収集されません。