次の方法で共有


マージ モジュールを使用してコンポーネントを再配布する

重要

Visual Studio 2019 以降では、Visual C++ 再頒布可能ファイルのマージ モジュールは非推奨になりました。 アプリケーションのデプロイには使用しないことをお勧めします。 検出メカニズムはインストールパッケージの詳細を把握することに依存するため、Windows Updateマージ モジュールを使用してインストールされた再頒布可能ファイルを更新することはできません。

Visual C++ 再頒布可能パッケージはリリースごとに既知ですが、マージ モジュールを使用するパッケージはユーザーによって生成されます。 Microsoft では、ユーザーが生成したパッケージの詳細を把握できません。 代わりに、Visual C++ 再頒布可能パッケージの一元展開を使用することをお勧めします。 中央展開では、すべてのアプリケーションとユーザーが使用するために、Windows %SYSTEMROOT%\system32\ フォルダーに再頒布可能ファイルをインストールします。 再頒布可能パッケージによる一元的な展開により、Microsoft がランタイム ライブラリ ファイルを個別にサービス提供できるようになります。 アプリをアンインストールしても、中央展開を使用する他のアプリケーションを中断することはできません。

再頒布可能パッケージを中央展開に使用する場合、アプリケーションのメンテナンスの一環としてランタイム ライブラリを追跡および更新する責任はありません。 Microsoft Update サービスは、これらのライブラリを更新します。 それ以外の場合、ランタイム ライブラリ ファイルを更新するには、 インストーラーを更新して再配置する必要があります。 そうしないと、アプリがバグやセキュリティの問題に対して脆弱になる可能性があります。

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

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

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

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

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

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

マージ モジュールは、限られた状況でのみ適切です。

  • ポリシー上の理由から、別の再頒布可能パッケージをインストールしたり、必要にしたりすることはできません。
  • コードには、特定のバグと互換性のあるバージョンのライブラリが必要です。
  • コードは 1 つのプラットフォームのみを対象としており、複数のバージョンの DLL への依存関係はありません。
  • ライブラリを最新の状態に保つよう、デプロイされたコードに定期的にサービスを提供する予定です。

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

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

Visual Studio 2022 および 2019 では、マージ モジュール ファイルは、Visual Studio インストーラーの C++ <version> 再頒布可能 MSM という名前のオプションのインストール可能なコンポーネントの一部です。 マージ モジュールは、Visual Studio 2017 および Visual Studio 2015 の C++ インストールの一部として既定でインストールされます。 マージ モジュールが Visual Studio 2022 にインストールされている場合、Visual C++ 再頒布可能パッケージのマージ モジュールは %VCINSTALLDIR%Redist\MSVC\v143\MergeModules にあります。

Visual Studio 2019 の最新バージョンでは、マージ モジュールは %VCINSTALLDIR%Redist\MSVC\v142\MergeModules にあります。 2019 Visual Studioと 2017 Visual Studioの両方で、%VCToolsRedistDir%MergeModulesにも含まれます。 Visual Studio 2015 では、Program Files [(x86)]\Common Files\Merge Modules にあります。 再頒布可能マージ モジュールの一覧とリンクの詳細については、「 Visual C++ ファイルの再配布」を参照してください。

  • Visual C++ ファイルを再配布する