Проект установки Visual Studio 2017 - включает распространяемый VC ++ 2015 - PullRequest
0 голосов
/ 31 августа 2018

Я создаю установщик для моего приложения, используя тип проекта «Установщик Visual Studio» в Visual Studio 2017.

Я хочу, чтобы мой установщик установил распространяемый Visual C ++ 2015 вместе с моим приложением. Я скачал файл vc_redist.x86.exe, включил его в свой проект и пытаюсь выполнить установку как настраиваемое действие при «установке». Я запускаю с аргументами /install /passive /norestart.

Когда я запускаю мой установщик, когда он выполняет настраиваемое действие, я получаю эту ошибку:

Проблема с этим пакетом установщика Windows. Программа, запущенная как часть установки, завершилась не так, как ожидалось. Обратитесь в службу поддержки или к поставщику пакета.

Я могу запустить vc_redist.x86.exe /install /passive /norestart в командной строке без проблем или ошибок.

Какие-либо предложения или альтернативные способы включить распространяемый Visual C ++ в качестве части моей установки?

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Вы не можете запустить этот распространяемый файл как пользовательское действие, потому что это установка на основе MSI, и вы не можете выполнить рекурсивные установки MSI (у вас вызов VC redist).

В проектах установки Visual Studio предполагается использовать функцию предварительных требований. Щелкните правой кнопкой мыши проект установки в обозревателе решений, выберите «Свойства», затем «Предварительные условия». Это создаст файл setup.exe для установки необходимых компонентов, а затем файла MSI. Насколько я могу судить, Microsoft Visual C ++ 14 - это среда выполнения Visual Studio 2015.

0 голосов
/ 31 августа 2018

Рекомендация : переход на WiX Запись (загрузчик / загрузчик / секвенсор) для обеспечения большей гибкости и контроля в будущем (ссылки на WiX приведены ниже).

В качестве альтернативы сначала попробуйте секцию пререквизитов ниже (выберите «Visual Studio 14» для установки) или попробуйте доступные модули объединения (секция ниже). Обратите внимание на отказ от ответственности за модули слияния.


Logging & Mutex : Что говорит файл журнала? С технической точки зрения обычная проблема заключается в том, что вы не можете установить другой пакет MSI изнутри собственной запущенной установки MSI из-за технических ограничений времени выполнения. Мьютекс настроен на предотвращение нескольких транзакций установки MSI одновременно. Проверьте логи. Я полагаю, что этот распространяемый файл основан на MSI, поэтому вы увидите эту проблему при запуске EXE из пользовательского действия, как вы.

Инструменты развертывания : Проекты установщика Visual Studio очень ограничены, и, похоже, со временем большинство людей переходят от них к другому инструменту развертывания. Может быть, посмотрите здесь - и вот список инструментов . Функция записи WiX (загрузчик / загрузчик / секвенсор) может достичь того, что вам нужно. Также прочитайте ответ PhilDW здесь .

Предварительные условия : Проекты установщика Visual Studio имеют представление предварительных условий (нажмите кнопку Prerequisites...), где ограниченное количество предварительных условий может быть определено для установка через загрузчик setup.exe (запускается не из самого MSI, а через его загрузочный файл setup.exe - это означает, что вы не запускаете установку из собственного MSI, а перед этим начинает устанавливать - и, следовательно, может работать правильно). Я не уверен, что записи для "Visual Studio 14" предназначены для нужной вам версии. Я полагаю, вы могли бы попробовать.

Модули слияния : Существуют модули слияния для установки среды выполнения Visual Studio ( см. Здесь, раздел «Среда выполнения Visual C ++» - довольно много страница), но они кажутся неадекватными в наши дни по причинам, объясненным здесь (очень важно). По сути, Visual Studio Runtime является более сложным, начиная с 2015 года, и предпочтительным является установщик EXE. Обязательно прочитайте ссылку - пожалуйста. Чтобы найти соответствующие модули слияния, найдите файлы * .msm под %ProgramFiles(x86)% - если у вас установлен Visual Studio (и / или Windows SDK). Merge modules can be installed embedded in your own package without the need for a setup.exe launcher. В Visual Studio щелкните правой кнопкой мыши ваш проект установщика, Add, затем Merge Module...

...