Выбор метода развертывания
В большинстве случаев развертывание приложений Visual C++ выполняется развертыванием установщика Windows.Дополнительные сведения о методах развертывания, которые поддерживаются в Visual Studio, и об альтернативных методах развертывания, см. в разделах Выбор стратегии развертывания и Deployment Alternatives.Развертывание ClickOnce для собственных приложений Visual C++ не поддерживается в Visual Studio 2010, однако, имеется возможность развернуть приложения Visual C++ в командной строке посредством ClickOnce.Дополнительные сведения см. в разделе Развертывание с помощью технологии ClickOnce для приложений Visual C++.
Библиотеки Visual C++ — общие библиотеки DLL
Visual Studio 2010 устанавливает библиотеки Visual C++ в качестве общих библиотек DLL в каталог %windir%\system32.Чтобы убедиться, что приложение Visual C++ будет выполняться на компьютере, на котором отсутствуют установленные библиотеки Visual C++, возможно, придется распространить библиотеки DLL Visual C++ с приложением и убедиться в том, что эти библиотеки установлены на конечном компьютере.
Распространение библиотек Visual С++
Существуют три способа распространения DLL-библиотек Visual C++:
Рекомендуется использовать распространяемый пакет Visual C++ (VCRedist_x86.exe, VCRedist_x64.exe, VCRedist_ia64.exe) для установки всех библиотек Visual C++ в качестве общих библиотек DLL в каталоге %windir%\system32.В Visual Studio этот пакет устанавливается в папку %WindowsSdkDir%\Bootstrapper\Packages.Его можно скачать в Центре загрузки Майкрософт.Пример использования этого пакета см. в разделе Пошаговое руководство. Развертывание приложения Visual C++ с помощью распространяемого пакета Visual C++.
С помощью повторно распространяемых модулей слияния Visual C++ можно установить отдельную библиотеку Visual C++ в качестве общей библиотеки DLL в каталог %windir%\system32.Для доступа к этой папке необходимо, чтобы приложение установщика выполнялось от имени пользователя с правами администратора.Дополнительные сведения см. в разделе Распространение с использованием модулей слияния.Пример подобного развертывания можно найти в разделе Пошаговое руководство. Развертывание приложения Visual C++ с помощью проекта установки.
Установите конкретную библиотеку DLL Visual C++ в одну папку с приложением, используя файлы из каталога Program Files\Microsoft Visual Studio 10.0\VC\Redist.Этот способ рекомендуется для того чтобы дать возможность установки приложений пользователям, у которых нет прав администратора, или для того чтобы выполнять приложения с совместно используемого ресурса.
При установке библиотек Visual C++ с использованием повторно распространяемых модулей слияния библиотеки DLL развертываются в виде общих библиотек DLL в каталоге %windir%\system32.Для доступа к этой папке необходимо, чтобы приложение установщика выполнялось от имени пользователя с правами администратора.
Если установка выполняется пользователем, который не имеет прав администратора, то развертывание библиотек DLL Visual C++ даст сбой во время установки и приложение не будет выполняться.Также, в некоторых продуктах разрешена установка для отдельных пользователей, но модули слияния выполняют установку библиотек в места совместного доступа и оказывают влияние на всех пользователей системы.В двух последних и подобных сценариях поддерживаемый метод состоит в установке необходимых библиотек DLL в каталог определенного пользовательского приложения.
С помощью этого метода достаточно скопировать библиотеки DLL в локальную папку приложения.При выполнении приложения загрузчик операционной системы использует последовательность поиска, описанную в разделе LoadLibraryEx.
Неверное распространение библиотек Visual C++ может привести к ошибкам во время выполнения при выполнении приложения, которое зависит от этих библиотек.
Динамическое связывание предпочтительнее статического
Не рекомендуется распространять приложения C/C++, которые статически привязаны к библиотекам Visual C++.Часто ошибочно полагают, что при статической привязке программ к библиотекам Visual C++, возможно значительно усовершенствовать производительность приложения.Однако, почти во всех случаях влияние, которое оказывается на производительность вследствие динамической загрузки библиотек Visual C++ незначительно.Более того, в случае статической привязки не позволяется обслуживание приложения и его зависимых библиотек даже автором приложения или Microsoft.Например, рассмотрим приложение, которое статически привязано к определенной библиотеке и выполняется на клиентском компьютере с новой версией этой библиотеки.В приложении по-прежнему используется код из предыдущей версии этой библиотеки. Приложение не получает преимуществ от усовершенствований библиотеки, таких как усовершенствование безопасности.Разработчикам приложений С/C++ настоятельно рекомендуется рассмотреть сценарии обслуживания перед тем, как принимать решение о статической привязке к зависимым библиотекам, и при любой возможности использовать динамическую привязку.
См. также
Основные понятия
Развертывание и безопасность технологии ClickOnce