マージ モジュールを使用したコンポーネントの再配布

重要

Visual Studio 2019 以降、Visual C++ 再頒布可能ファイルのマージ モジュールは非推奨です。 アプリケーションの配置に使用することはお勧めしません。 マージ モジュールを使用してインストールされた再頒布可能パッケージは、Windows Update では更新できません。これは、検出メカニズムがインストールパッケージの詳細を把握することに依存するためです。 Visual C++ 再頒布可能パッケージ パッケージはリリースごとに認識されますが、MSM を使用するパッケージはユーザーによって生成されます。 Microsoft では、ユーザーが生成したパッケージの詳細を把握できません。 代わりに、Visual C++ 再頒布可能パッケージの集中配置を使用することをお勧めします。 集中配置では、すべてのアプリケーションとユーザーが使用するための Windows %SYSTEMROOT%\system32\ フォルダーに再頒布可能ファイルがインストールされます。 再頒布可能パッケージによる集中配置を使用すると、Microsoft がランタイム ライブラリ ファイルを個別に処理することが可能になります。 また、アプリをアンインストールしても、同様に集中配置を使用している他のアプリケーションが壊れる可能性はありません。 再頒布可能パッケージを使用した集中配置の場合、アプリケーションのメンテナンスの一環としてランタイム ライブラリを追跡および更新する責任はユーザーにはありません。これらのライブラリは Microsoft Update サービスによって自動的に更新されます。 それ以外の場合、ランタイム ライブラリ ファイルを更新するには、.msi インストーラーを更新して再配置する必要があります。 そうしないと、アプリがバグやセキュリティの問題に対して脆弱になる可能性があります。

Visual Studio には、アプリケーションと共に再頒布することがライセンスされている Visual C++ コンポーネントごとに、マージ モジュール (.msm ファイル) が用意されています。 ターゲット プラットフォームごとに別のバージョンのマージ モジュールがあります。 マージ モジュールを Windows インストーラーのセットアップ ファイルにコンパイルすると、その特定のプラットフォームへの Visual C++ 再頒布可能ファイルの配置が有効になります。 同じ DLL のさまざまなバージョンのマージ モジュールを 1 つのインストーラーに含めることはできません。 インストーラーのセットアップ ファイルで、そのマージ モジュールがアプリケーションの必須コンポーネントであることを指定します。

マージ モジュールは、集中配置またはローカル配置に使用できます。 ユーザーは、管理者権限を持たない限り、集中配置されたファイルをインストールできません。 ローカル配置では、管理者以外のユーザーがアプリをインストールして実行できますが、独立したサービス性が必要になります。

新しい既存のライブラリに対して以前のマージ モジュールの集中配置を試みると、インストール サービスでエラーが報告されます。 このエラーを適切に処理し、エラー メッセージを表示しないようにインストーラーのセットアップを記述する必要があります。 このエラーが発生した場合でも、コードを正常に配置して実行できます。 詳細については、「Visual Studio のバージョン間の C++ バイナリ互換性」を参照してください。

コードを .msi インストーラーとしてのみ配置する場合は、マージ モジュールをインストーラーに含めないことをお勧めします。 代わりに、必要な再頒布可能ライブラリが見つからない場合は、ユーザーにエラーを報告してください。 エラー ダイアログに、最新の再頒布可能パッケージを見つけてインストールする方法の手順を示します。 再頒布可能パッケージの詳細とリンクについては、サポートされている最新の Visual C++ のダウンロードに関するページを参照してください。

最新の再頒布可能パッケージとマージ モジュールは、Visual Studio 2015 以降を使用してビルドしたコードと互換性があります。 2015 より前のバージョンの Visual Studio でビルドしたコードには、別の再頒布可能パッケージが必要です。

マージ モジュールを使用する場合

マージ モジュールが適している状況は、限られています。

  • ポリシー上の理由から、別の再頒布可能パッケージをインストールすることや、必要とすることができない。
  • コードには、特定のバグと互換性のあるバージョンのライブラリが必要です。
  • コードが 1 つのプラットフォームのみをターゲットとしており、複数のバージョンの DLL に依存していない。
  • 配置したコードに定期的にメンテナンスする予定であり、ライブラリが最新の状態に維持される。

マージ モジュールを使用する場合は、アプリケーションを追跡し、ライブラリの更新プログラムを使用して定期的にメンテナンスする必要があります。 そうしないと、最終的に、コードを実行するか、セキュリティを維持するかの選択をクライアントに強制することになります。

マージ モジュール ファイルの検索場所

Visual Studio 2022 と 2019 では、マージ モジュール ファイルは、Visual Studio インストーラーで C++<バージョン> 再頒布可能 MSM という名前の、オプションでインストール可能なコンポーネントに含まれています。 マージ モジュールは、既定で Visual Studio 2017 と Visual Studio 2015 で C++ インストールの一部としてインストールされます。 Visual Studio 2022 にインストールされる場合、再頒布可能パッケージのマージ モジュールは %VCINSTALLDIR%Redist\MSVC\v143\MergeModules にあります。 最新バージョンの Visual Studio 2019 では、マージ モジュールは %VCINSTALLDIR%Redist\MSVC\v142\MergeModules に含まれています。 Visual Studio 2019 と Visual Studio 2017 の両方では、%VCToolsRedistDir%MergeModules にもあります。 Visual Studio 2015 では、Program Files [(x86)]\Common Files\Merge Modules にあります。 詳細と再頒布可能マージ モジュールの一覧へのリンクについては、「Visual C++ ファイルの再配布」を参照してください。

関連項目

Visual C++ ファイルの再配布