配置方法の選択
ほとんどの場合、Visual C++ アプリケーションを配置するには Windows インストーラーを使用します。 Visual Studio でサポートされている配置方法とその代替策の詳細については、「配置ストラテジの選択」および「配置の代替手段」を参照してください。 ClickOnce を使用して Visual C++ ネイティブ アプリケーションを配置することは、Visual Studio 2010 ではサポートされていません。ただし、コマンド ラインでは、ClickOnce を使用して Visual C++ アプリケーションを配置できます。 詳細については、「Visual C++ アプリケーションの ClickOnce 配置」を参照してください。
Visual C++ ライブラリの共有 DLL
Visual Studio 2010 では、%windir%\system32 ディレクトリに、共有 DLL として Visual C++ ライブラリがインストールされます。 Visual C++ がインストールされていないコンピューター上で Visual C++ アプリケーションを実行するには、アプリケーションと共に Visual C++ DLL を再配布し、そのコンピューターにインストールすることが必要な場合があります。
Visual C++ ライブラリの再配布
Visual C++ の DLL を再配布する場合、次の 3 つの方法があります。
Visual C++ の再頒布可能パッケージ (VCRedist_x86.exe、VCRedist_x64.exe、VCRedist_ia64.exe) を使用して、すべての Visual C++ ライブラリを共有 DLL として %windir%\system32 にインストールすることをお勧めします。 Visual Studio は、このパッケージを %WindowsSdkDir%\Bootstrapper\Packages フォルダーにインストールします。 または、Microsoft ダウンロード センター からダウンロードします。 このパッケージの使用方法のサンプルについては、「チュートリアル: Visual C++ 再頒布可能パッケージを使用した Visual C++ アプリケーションの配置」を参照してください。
%windir%\system32 に特定の Visual C++ ライブラリを共有 DLL としてインストールするには、Visual C++ の再頒布可能なマージ モジュールを使用します。 このフォルダーにアクセスするには、管理権限を持つユーザーがインストーラー アプリケーションを実行する必要があります。 詳細については、「マージ モジュールを使用した再配布」を参照してください。 配置例については、「チュートリアル: セットアップ プロジェクトを使用した Visual C++ アプリケーションの配置」を参照してください。
特定の Visual C++ DLL をアプリケーションと同じフォルダーにインストールするには、Program Files\Microsoft Visual Studio 10.0\VC\Redist ディレクトリにあるファイルを使用します。 管理者権限のないユーザーでもアプリケーションをインストールできるようにする場合や、アプリケーションを共有場所から実行できるようにする場合は、この方法をお勧めします。
再頒布可能なマージ モジュールを使用して Visual C++ ライブラリをインストールすると、DLL は %windir%\system32 に共有 DLL として配置されます。 このフォルダーにアクセスするには、管理権限を持つユーザーがインストーラー アプリケーションを実行する必要があります。
管理者権限を持たないユーザーがインストールを実行すると、インストール時に Visual C++ DLL の配置が失敗するため、アプリケーションが実行されません。 また、製品によっては、ユーザー単位でのインストールが許可されていますが、マージ モジュールでは、共有の場所にライブラリがインストールされるため、システムのすべてのユーザーが影響を受けます。 このような状況、またはこれと似た状況で、必要な DLL を特定のユーザーのアプリケーションのディレクトリにインストールする方法がサポートされています。
この方法では、DLL をアプリケーションのローカル フォルダーにコピーするだけです。 アプリケーションの実行時、オペレーティング システムのローダーは LoadLibraryEx(LoadLibraryEx) で説明されている検索順序を使用します。
Visual C++ ライブラリの再配布の方法が不適切な場合、そのライブラリに依存するアプリケーションの実行時に実行時エラーが発生します。
静的リンクよりも望ましい動的リンク
Visual C++ ライブラリに静的にリンクする C/C++ アプリケーションを再配布することはお勧めしません。 一般的に、プログラムを Visual C++ ライブラリに静的にリンクすると、アプリケーションのパフォーマンスが大幅に向上すると誤って認識されています。 しかし、ほとんどの場合、Visual C++ ライブラリを動的に読み込むことによるパフォーマンスへの影響は微々たるものです。 さらに、静的にリンクした場合は、アプリケーションの作成者も Microsoft も、アプリケーションおよびその依存するライブラリにサービスを提供できません。 たとえば、特定のライブラリに静的にリンクしたアプリケーションが、そのライブラリの新しいバージョンを持つクライアント コンピューター上で実行される場合を考えます。 この場合、アプリケーションは以前のバージョンのライブラリからコードを使用するため、セキュリティ強化など、ライブラリの改良による恩恵を受けることができません。 C/C++ アプリケーションを作成するときは、サービスを提供する状況について十分に考慮したうえで、依存するライブラリに静的にリンクするかどうかを判断し、可能な場合は動的なリンクを使用することを強くお勧めします。