Visual C++ での配置

開発用コンピューター以外のコンピューターでのアプリケーションのインストールは、配置と呼ばれます。 Visual C++ アプリケーションを別のコンピューターに配置する場合、アプリケーションと、アプリケーションが依存するすべてのライブラリ ファイルの両方をインストールする必要があります。 Visual C++ では、集中配置ローカル配置静的リンク の 3 つの方法で、アプリケーションと共に Visual C++ ライブラリを配置できます。 中央展開では、すべてのアプリケーションが自動的にアクセスできる Windows ディレクトリの下にライブラリ ファイルが配置されます。 ローカル配置では、ご利用のアプリケーションと同じディレクトリにライブラリ ファイルが配置されます。 ローカルに配置されたライブラリを自分で再配置して更新する必要があります。 静的リンクでは、ご利用のアプリケーションにライブラリ コードがバインドされます。 静的リンクを使用する場合は、ライブラリの更新を利用するために、アプリケーションを再コンパイルして再デプロイする必要があります。

Visual Studio 2015 では、Microsoft C ランタイム ライブラリは、バージョンに固有のローカル ライブラリ コンポーネントと、Windows の一部となった新しい Universal C ランタイム ライブラリにリファクタリングされました。 ユニバーサル CRT の配置の詳細については、「ユニバーサル CRT の配置」を参照してください。

集中配置

集中配置では、ライブラリ DLL ファイルは、Windows\System32 ディレクトリにインストールされます。x64 システムの 32 ビット ライブラリ ファイルの場合は、Windows\SysWow64 ディレクトリにインストールされます。 一元的にデプロイされたライブラリ ファイルは、他のアプリケーションで使用できます。

Visual C++ ライブラリを集中配置する場合、インストールするファイルの次の 2 つのソースのいずれかを使用できます。

  • "再頒布可能パッケージ" ファイル。 これらのファイルは、圧縮形式のすべてのVisual C++ 再頒布可能パッケージ ライブラリを含むスタンドアロンのコマンド ライン実行可能ファイルです。 最新の再頒布可能パッケージは、「サポートされている最新の Visual C++ 再頒布可能パッケージのダウンロード」から入手できます。 再頒布可能パッケージを中央展開に使用する場合、Windows Update はライブラリに個別にサービスを提供できます。

  • "再頒布可能マージ モジュール" (.msm ファイル)。アプリケーションの Windows インストーラー (.msi) ファイルに含めることができます。 この方法でデプロイされたライブラリは、Windows Update では自動的に更新できないため、このメソッドは非推奨です。 詳細については、「マージ モジュールを使用した再配布」を参照してください。

再頒布可能パッケージ ファイルにより、特定のシステム アーキテクチャの Visual C++ ライブラリがすべてインストールされます。 たとえば、アプリケーションが x64 用にビルドされている場合、vcredist_x64.exe パッケージを使って、アプリケーションで使用される Visual C++ ライブラリをすべてインストールできます。 アプリケーションをインストールする前に必須コンポーネントとしてパッケージを実行するように、アプリケーション インストーラーをプログラミングできます。

再頒布可能パッケージを使用した一元展開により、Windows Update で Visual C++ ライブラリを自動的に更新できます。 セキュリティと機能を継続するには、静的ライブラリではなくアプリケーションでライブラリ DLL を使用し、ローカル展開ではなく再頒布可能パッケージと中央展開を使用することをお勧めします。

ローカル デプロイ

ローカル配置では、ライブラリ ファイルが、実行可能ファイルと共にご利用のアプリケーション フォルダーにインストールされます。 各バージョンのファイル名にはバージョン番号が含まれているため、Visual C++ 再頒布可能パッケージ ライブラリの異なるバージョンを同じフォルダーにインストールできます。 たとえば、C++ ランタイム ライブラリのバージョン 12 の場合は msvcp120.dll となり、バージョン 14 の場合は msvcp140.dll となります。

ライブラリへの拡張は、ドット ライブラリと呼ばれる複数の追加 DLL に分散できます。 たとえば、msvcp140.dll の ABI 互換性を保持するために、Visual Studio 2017 バージョン 15.6 でリリースされた標準ライブラリの一部の機能は msvcp140_1.dll に追加されました。 Visual Studio 2017 バージョン 15.6 (ツールセット 14.13) 以降を使用する場合は、これらのドット ライブラリとメイン ライブラリの両方をローカルにデプロイする必要がある場合があります。 ABI が変更されたときに、これらの個々のドット ライブラリは最終的に基本ライブラリに追加されます。

ローカル配置された Visual C++ ライブラリは Microsoft で自動更新できないため、これらのライブラリのローカル配置はお勧めしません。 再頒布可能ライブラリのローカル配置を使用する場合は、ローカル配置されたライブラリを対象とした独自の自動更新方法を実装することをお勧めします。

静的リンク

動的にリンクされたライブラリに加え、Visual Studio では静的ライブラリとしてほとんどのライブラリが提供されます。 静的ライブラリをご利用のアプリケーションに静的にリンクすることができます。つまり、ライブラリ オブジェクト コードを直接アプリケーションにリンクできます。 静的リンクを使用すると、DLL 依存関係のない 1 つのバイナリが作成されるため、Visual C++ ライブラリ ファイルを個別に配置する必要はありません。 ただし、静的にリンクされたライブラリを適切に更新できないため、この方法はお勧めしません。 静的なリンクを使用している場合、リンクされたライブラリを更新するには、アプリケーションの再コンパイルと再配置が必要です。

デプロイに関する問題のトラブルシューティング

Visual C++ ライブラリの読み込み順序はシステムに依存します。 ローダーの問題を診断するには、depends.exe または where.exe を使用します。 詳細については、ダイナミック リンク ライブラリの検索順序 (Windows) に関するページを参照してください。

関連項目

デスクトップ アプリケーションの配置
ユニバーサル CRT の配置