Поделиться через


Выбор метода развертывания

Рекомендуется всегда использовать для развертывания установщик Windows, если приложение Visual C++ не является самодостаточным и не обладает возможностью развертывания с помощью команды копирования.Установщик Windows поддерживает установку, восстановление и удаление, а также поддерживает атомарное обновления файлов приложения, зависимостей и записей реестра.

ПримечаниеПримечание

Хотя развертывание ClickOnce для собственных приложений Visual C++ возможно в Visual Studio, оно требует дополнительных действий.Дополнительные сведения см. в разделе Развертывание с помощью технологии ClickOnce для приложений Visual C++.

Библиотеки Visual C++ — общие библиотеки DLL

Поскольку библиотеки Visual C++ устанавливаются в каталог %windir%\system32\ установщиком Visual Studio, при разработке приложения Visual C++, зависящего от них, оно выполняется без ошибок.Однако для развертывания приложения на компьютерах, где может быть не установлена Visual Studio, рекомендуется обеспечивать установку этих библиотек на такие компьютеры вместе с приложением.

Распространение библиотек Visual С++

В развертываниях можно распространять любую версию библиотеки Visual C++, которая лицензирована для распространения.Развертывание можно выполнить тремя способами.

  • Централизованное развертывание с помощью распространяемых пакетов, что установит библиотеки Visual C++ в качестве общих библиотек DLL в %windir%\system32\. (Установка в эту папку требует наличия прав администратора.) Можно создать скрипт или программу настройки, запускающую распространяемый пакет перед установкой приложения на целевой компьютер.Предлагаются распространяемые пакеты для платформ x86, x64 и ARM (VCRedist_x86.exe, VCRedist_x64.exe и VCRedist_arm.exe).Visual Studio включает эти пакеты в %ProgramFiles(x86)%\Microsoft Visual Studio version\VC\Redist\locale ID\.Можно также загрузить их из центра загрузки Майкрософт. (В центре загрузки выполните поиск «распространяемого пакета Visual C++ Visual Studio version and update», соответствующего приложению.Например, при использовании обновления 4 для Visual Studio 2012 для сборки приложения выполните поиск «обновления 4 распространяемого пакета Visual C++ 2012».) Дополнительные сведения о способах использования распространяемых пакетов см. в разделе Пошаговое руководство. Развертывание приложения Visual C++ с помощью распространяемого пакета Visual C++.

  • Централизованное развертывание с помощью модулей слияния, каждый из которых устанавливает определенную библиотеку Visual C++ в качестве общей библиотеки DLL в %windir%\system32\. (Установка в эту папку требует наличия прав администратора.) Модули слияния становятся частью файла установщика (MSI-файл) для приложения.Распространяемые модули слияния Visual C++ включены в Visual Studio, папка \Program Files (x86)\Common Files\Merge Modules\.Дополнительные сведения см. в разделе Распространение с использованием модулей слияния.

  • Локальное развертывание, при котором выполняется копирование определенных библиотек DLL Visual C++ из установки Visual Studio, обычно в папку \Program Files (x86)\Microsoft Visual Studio version\VC\Redist\platform\library\, и их установка на целевые компьютеры в ту же папку, где находится исполняемый файл приложения.Этот метод развертывания можно использовать для обеспечения возможности установки пользователями, у которых нет прав администратора, или для приложений, которые могут быть запущены из общей сетевой папки.

Если развертывание использует распространяемые модули слияния и установка выполняется пользователем, который не имеет прав администратора, библиотеки DLL Visual C++ не устанавливаются, и приложение не будет работать.Также установщики приложений, собранные с использованием модулей слияния, позволяющих выполнять установку для отдельных пользователей, устанавливают эти библиотеки в место совместного доступа, которое оказывает влияние на всех пользователей системы.Локальное развертывание можно использовать для установки необходимых библиотек DLL Visual C++ в каталог приложения определенного пользователя, не оказывая влияние на других пользователей, и для этого не требуются права администратора.Поскольку это может создать проблемы при обслуживании, не рекомендуется использовать локальное развертывание распространяемых библиотек DLL Visual C++.

Неверное развертывание библиотек Visual C++ может привести к ошибкам во время выполнения при выполнении приложения, которое зависит от этих библиотек.Если операционная система загружает приложение, она использует порядок поиска, описанный в LoadLibraryEx

Динамическое связывание лучше, чем статическое связывание

Рекомендуется избегать статического связывания при распространении библиотек Visual C++.Хотя статическое связывание почти никогда не приводит к значительному повышению производительности приложения, оно почти всегда выполняет усложняет обслуживание.Например, рассмотрим приложение, которое статически связано с библиотекой, обновляемой с применением усовершенствований системы безопасности — это приложение не сможет использовать преимущества обновления без повторной компиляции и повторного развертывания.Вместо этого рекомендуется динамически связывать приложения с библиотеками, от которых они зависят, чтобы библиотеки могли обновляться независимо от того, где они развернуты.

См. также

Основные понятия

Развертывание и безопасность технологии ClickOnce

Примеры развертывания

Другие ресурсы

Развертывание приложений рабочего стола (Visual C++)

Выбор стратегии развертывания

Windows Installer Deployment Overview