Существует множество ответов о том, как это сделать, включая множество методов, как определить, установлен ли redist. Я не собираюсь говорить, что все из них неполные и не работают в методе проверки будущего, но я не добился успеха с ними. Итак, я думаю, что лучше всего всегда устанавливать Redist и позволить Microsoft позаботиться об этом. По состоянию на март 2020 года это добавит 14 МБ к вашей программе установки, но, возможно, в наш век высокоскоростного Inte rnet это уже не так уж важно, как раньше. К счастью, это довольно просто, и, надеюсь, этот вопрос помешает вам следовать всем устаревшим ссылкам и ссылкам, которые я сделал.
Инструкции по распространению от Microsoft можно найти здесь: Распространение файлов Visual C ++
Чтобы превратить это в NSIS:
Найдите файл, который вы хотите распространить, в вашей установке Visual Studio. Для меня это:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.25.28508\vcredist_x86.exe
Номер версии определенно может быть изменен (14.25.28508) в будущем, вероятно, только когда вы устанавливаете обновления для Visual Studio, поэтому помните, что вам нужно будет обновить этот путь, когда ваша программа установки не работает. Вам также нужно будет выбрать между vcredist_x86.exe и vcredist_x64.exe, в зависимости от того, собираете ли вы свое приложение как 32-битное или 64-битное.
Добавьте такой раздел в установочный файл NSIS, возможно, раньше вы делаете основную установку. Все, что он делает, это копирует файл redist в файловую систему, запускает его, ожидает завершения, затем удаляет файл redist.
Section "Visual Studio Runtime"
SetOutPath "$INSTDIR"
File "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.25.28508\vcredist_x86.exe"
ExecWait "$INSTDIR\vcredist_x86.exe"
Delete "$INSTDIR\vcredist_x86.exe"
SectionEnd
Подставляет правильный путь для файла redist, который вы хотите использовать.
Как написано (и текущее поведение программы redist), появится диалоговое окно, которое пользователь должен будет выполнить, чтобы установить программу redist. Вы можете заменить тихий режим:
ExecWait '"$INSTDIR\vcredist_x86.exe" /quiet'
Однако у меня не было хороших результатов с этим. YMMV.