Распространение компонентов с помощью модулей слияния

Важно!

В Visual Studio 2019 и более поздних версиях модули слияния для Распространяемый компонент Visual C++ файлов устарели. Мы не рекомендуем использовать их для развертывания приложений. Распространяемые компоненты, установленные с помощью модулей слияния, не могут быть обновлены Обновл. Windows, так как механизм обнаружения зависит от сведений об установке пакета. Пакеты Распространяемый компонент Visual C++ известны для каждого выпуска, но пакеты, использующие MSMs, создаются пользователем. Корпорация Майкрософт не может знать сведения о созданных пользователем пакетах. Вместо этого рекомендуется использовать централизованное развертывание пакета Распространяемый компонент Visual C++. Централизованное развертывание устанавливает распространяемые файлы в папке Windows %SYSTEMROOT%\system32\ для использования всеми приложениями и пользователями. Централизованное развертывание распространяемым пакетом позволяет корпорации Майкрософт самостоятельно обслуживать файлы библиотеки среды выполнения. Кроме того, удаление приложения не может нарушить другие приложения, которые также используют централизованное развертывание. При использовании распространяемого пакета для центрального развертывания вы не несете ответственности за отслеживание и обновление библиотек среды выполнения в рамках обслуживания приложений: служба Центра обновления Майкрософт обновляет эти библиотеки. В противном случае обновление файлов библиотеки среды выполнения требует обновления и повторного развертывания установщика .msi . Ваше приложение может быть уязвимо для ошибок или проблем безопасности до тех пор, пока вы не сделаете это.

Visual Studio включает модули слияния (.msm файлы) для каждого компонента Visual C++, лицензированного для распространения с помощью приложения. Для каждой целевой платформы существуют отдельные версии модулей слияния. Когда модуль слияния компилируется в файл установки установщика Windows, он позволяет развертывать Распространяемый компонент Visual C++ файлы на этой конкретной платформе. Нельзя включить модули слияния для разных версий одной библиотеки DLL в одном установщике. В файле установки установщика укажите, что модули слияния являются предварительными условиями для приложения.

Модули слияния можно использовать для центрального развертывания или локального развертывания. Пользователи не могут устанавливать централизованно развернутые файлы, если у них нет прав администратора. Локальное развертывание может позволить неадминистратору устанавливать и запускать приложение, но за счет независимой возможности обслуживания.

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

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

Последние распространяемые пакеты и модули слияния совместимы с кодом, созданным с помощью Visual Studio 2015 и более поздних версий. Для кода, созданного версиями Visual Studio до 2015 года, требуется отдельный распространяемый пакет.

Когда следует использовать модули слияния

Модули слияния подходят только в ограниченных обстоятельствах:

  • Вы не можете установить или требовать отдельный распространяемый пакет по соображениям политики.
  • Для кода требуется определенная версия библиотек, совместимая с ошибками,
  • Код предназначен только для одной платформы, и у вас нет зависимостей от нескольких версий БИБЛИОТЕК DLL.
  • Вы планируете регулярно обслуживать развернутый код, поэтому библиотеки остаются актуальными.

При использовании модулей слияния необходимо отслеживать и регулярно обслуживать приложение с обновлениями библиотеки. В противном случае клиенты в конечном итоге принудительно выбираются между выполнением кода или сохранением безопасности.

Где найти файлы модуля слияния

В Visual Studio 2022 и 2019 файлы модулей слияния являются частью дополнительного устанавливаемого компонента с именем распространяемых MSM версии> C++ <в установщике Visual Studio. Модули слияния устанавливаются по умолчанию в рамках установки C++ в Visual Studio 2017 и Visual Studio 2015. При установке в Visual Studio 2022 вы найдете модули слияния Распространяемый компонент Visual C++ в %VCINSTALLDIR%Redist\MSVC\v143\MergeModules. В последней версии Visual Studio 2019 модули слияния находятся в %VCINSTALLDIR%Redist\MSVC\v142\MergeModules. В Visual Studio 2019 и Visual Studio 2017 они также находятся в %VCToolsRedistDir%MergeModules. В Visual Studio 2015 они находятся в Program Files [(x86)]\Common Files\Merge Modules. Дополнительные сведения и ссылку на список распространяемых модулей слияния см. в разделе "Распространение файлов Visual C++".

См. также

Распространение файлов Visual C++