Мы переносим проект VC ++ из Visual Studio 2003 в Visual Studio 2008 SP1 (9.0.30729.4148). Зависимые внешние библиотеки также
скомпилирован с Visual Studio 2008 SP1.
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
Существует два сценария развертывания для главного приложения:
- Машина с правами администратора пользователя:
Мы рекомендуем поставить предварительные условия для установки распространяемого пакета Visual Studio перед использованием приложения MainApp. Это работает хорошо, поскольку у пользователя есть права администратора, и установка распространяемого пакета не вызывает проблем. Приложение автоматически связывается с DLL перераспределения VC в папках WinSxS.
- Машина с пользователем без прав администратора:
Этот сценарий проблематичен. У пользователя нет прав администратора. Следовательно, невозможно установить повторно распространяемый пакет VS2008SP1.
Чтобы решить эту проблему, мы делаем следующее:
Скомпилируем цели MainApp с помощью макроса _BIND_TO_CURRENT_OPENMP_VERSION (для всех проектов в MainApp).
Распространяем распространяемые библиотеки DLL VS2008SP1 как частные сборки и копируем их в каталог установки приложения.
Вопросы:
- Есть ли побочный эффект использования флага _BIND_TO_CURRENT_VCLIBS_VERSION (особенно, когда и распространяемый пакет VC, и частные сборки распространяемого VC существуют вместе)?
- У нас нет большого контроля над внешними библиотеками ExtStaticLib1, ExtDynamicDll1 и следовательно, они не будут компилироваться с макросом _BIND_TO_CURRENT_OPENMP_VERSION. Но они уже скомпилированы с VSSp1. Будет ли проблема с этой настройкой?
- Возникнет ли проблема, если будет доступна более новая версия распространяемого пакета VS (новее 9.0.30729.4248).
Спасибо.
задан aJ. 25 July 2011 в 03:11
поделиться