VC++プロジェクトをVisualStudio2003からVisualStudio2008 SP1(9.0.30729.4148)に移植しています。依存する外部ライブラリもVisualStudio2008SP1でコンパイルされます。
MainApp - Main application Compiled with VS SP1 9.0.30729.4148
ExtStaticLib1 - External static library compiled with VS SP1 9.0.30729.4148
ExtDynamicDll1 - External DLL compiled with VS SP1 9.0.30729.4148
メインアプリケーションには、次の2つの展開シナリオがあります。
- ユーザー管理者権限を持つマシン:アプリケーションMainAppを使用する前に、VisualStudio再配布可能パッケージをインストールするための前提条件を設定することをお勧めします。これは、ユーザーが管理者権限を持っており、再配布可能なパッケージのインストールに問題がないため、うまく機能します。アプリケーションは、WinSxSフォルダー内のVCredistDLLに自動的にリンクします。
- 管理者以外のユーザーがいるマシン:このシナリオには問題があります。ユーザーには管理者権限がありません。したがって、VS2008SP1再配布可能パッケージをインストールすることはできません。
これを解決するために、次のことを行っています。
MainAppターゲットをマクロ_BIND_TO_CURRENT_OPENMP_VERSION(MainAppのすべてのプロジェクト用)でコンパイルします。
VS2008SP1再配布可能DLLをプライベートアセンブリとして配布し、アプリケーションインストールディレクトリにコピーします。
質問:
- フラグ_BIND_TO_CURRENT_VCLIBS_VERSIONを使用することによる副作用はありますか(特に、VC再配布可能パッケージとプライベートVC再配布アセンブリの両方が一緒に存在する場合)?
- 外部ライブラリExtStaticLib1、ExtDynamicDll1をあまり制御できないため、マクロ_BIND_TO_CURRENT_OPENMP_VERSIONでコンパイルされません。しかし、それらはすでにVSSp1でコンパイルされています。この設定に問題はありますか?
- 新しいバージョンのVS再配布可能ファイル(9.0.30729.4248より新しいバージョン)が利用可能な場合、問題は発生しますか?
ありがとう。