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

Рекомендуется использовать установщик Windows для развертывания. Установщик 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 C++

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

  • Централизованное развертывание с помощью пакетов Распространяемый компонент Visual C++. Этот подход является тем, который мы рекомендуем. Пакет Распространяемый компонент Visual C++ — это исполняемый файл, который устанавливает библиотеки Visual C++ как общие библиотеки DLL в %windir%\system32\. (Для установки в этой папке требуются права администратора.) Вы можете создать загрузчик, скрипт или программу установки, которая запускает распространяемый пакет перед установкой приложения на целевом компьютере. Распространяемые пакеты доступны для платформ x86, x64, ARM64 и ARM. Дополнительные сведения о том, где найти файлы пакета, см. в разделе "Поиск распространяемых файлов". Сведения об использовании распространяемого пакета см. в пошаговом руководстве. Развертывание приложения Visual C++ с помощью пакета Распространяемый компонент Visual C++.

  • Централизованное развертывание с помощью модулей слияния. Этот метод не рекомендуется использовать, так как библиотеки, развернутые таким образом, не могут быть автоматически обновлены Обновл. Windows. Модули слияния можно использовать для установки определенной библиотеки Visual C++ в качестве общей библиотеки DLL %windir%\system32\. (Для установки в эту папку требуются права администратора.) Модули слияния становятся частью файла установщика .msi для приложения. Так как они устарели, Распространяемый компонент Visual C++ модули слияния являются необязательным компонентом, который можно установить в Visual Studio 2022 и 2019. Они устанавливаются по умолчанию в Visual Studio 2017 и 2015. Дополнительные сведения см. в разделе "Где найти файлы модуля слияния".

  • Локальное развертывание. Локальное развертывание не рекомендуется в большинстве случаев. В локальном развертывании вы копируете определенные библиотеки DLL Visual C++ из установки Visual Studio ( обычно в \%VCINSTALLDIR%Redist\MSVC\<version>\<target-platform>\) и устанавливаете их на целевых компьютерах в той же папке, что и исполняемый файл приложения. Этот метод развертывания можно использовать для включения установки пользователями, у которых нет прав администратора. Кроме того, для приложений, которые могут выполняться с большого диска или сетевого ресурса.

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

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

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

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

См. также

Развертывание классических приложений
Развертывание и безопасность технологии ClickOnce
Примеры развертывания