Wix - Как запустить / установить приложение без интерфейса
У меня есть exe-файл и необходимо преобразовать его в MSI и установить его с помощью групповой политики на большем количестве компьютеров в домене без взаимодействия с пользователем.
Я нашел этот учебник /questions/38215727/wix-kak-zapustit-exe-fajlyi-posle-ustanovki-iz-ustanovlennogo-kataloga/38215740#38215740
Но это с помощью пользовательского интерфейса, где пользователь muset нажав на кнопку. Мне нужно после установки MSI запустить EXE-файл и установить на компьютер в фоновом режиме - без какого-либо пользовательского интерфейса.
Является ли это возможным? Как.
Спасибо за помощь.
2 ответа
Не вставляйте исполняемый файл установки в файлы MSI
Хорошо, вопрос не ясен на 100%, но я попробую. Доставка файлов EXE таким способом - встроенная в файл MSI - не идеальна. На самом деле это очень плохая идея - по правде говоря. MSI-файлы, как правило, не должны использоваться просто как оболочки для доставки встроенных файлов setup.exe. Сложная сложность MSI с его продвинутым олицетворением, секвенированием и согласованием делает эту ошибку очень трудной для реализации и тестирования. Кроме того, если встраиваемый вами двоичный файл окажется файлом MSI, обернутым в двоичный файл setup.exe, то MSI завершится ошибкой, поскольку он не допускает двух последовательных последовательностей установки - если вы не установите их из последовательности пользовательского интерфейса (которая выиграла не работает, когда работает тихо).
Запускать файлы setup.exe без вывода сообщений или с помощью переупаковки приложений?
Способность MSI-файлов надежно работать в бесшумном режиме (без графического интерфейса пользователя) не может быть сопоставлена с настройками устаревшего стиля. Однако часто можно найти ключи для устаревшего (или современного) файла setup.exe или установочного бинарного файла, которые позволяют устанавливать его в автоматическом режиме, но не с правами установки MSI с повышенными правами. Вам придется работать с реальными правами администратора. Кроме того, вам часто приходится "записывать" прогон через диалоги и использовать записанные ответы для запуска последовательности установки - это подвержено ошибкам, поскольку может появиться неожиданный диалог, где нет записанного "ответа". Тогда вы застряли. Надежный бесшумный запуск MSI является одним из ключевых корпоративных преимуществ MSI.
Вы можете найти много информации по этому вопросу в ответе, который я написал некоторое время назад: как я могу использовать powershell для запуска через установщик?, Не позволяйте названию вопроса сбить вас с толку, проблема все еще очень похожа на то, что вы спрашиваете - по крайней мере, я так думаю. Пожалуйста, дайте ему хотя бы быстрое снятие.
В ответе также описывается "Переупаковка приложений" - процесс преобразования устаревших (или современных) установщиков setup.exe в собственный формат MSI. Это специальная задача, требующая хорошего понимания MSI, но дает отличные результаты, если все сделано правильно, и установка без вывода сообщений становится проще, так как вы не полагаетесь на хрупкие "файлы ответов без вывода сообщений", как описано выше.
Bootstrappers / Chainers
Хотя я не уверен, что все они позволяют вам устанавливать в режиме без вывода сообщений, есть инструменты, которые позволяют вам последовательно устанавливать файлы MSI и двоичные файлы установки из EXE-файла программы запуска. Существует другой ответ, обсуждающий различные варианты загрузчика: Wix и.NET Framework (предварительные условия). Один из загрузчиков, рекомендуемых в этом обсуждении, - это dotNetInstaller. Я никогда не использовал это, поэтому я не могу сказать вам, если это хорошо. Это может быть в большей степени основано на графическом интерфейсе, чем собственная функция загрузчика WiX под названием Burn, однако я не уверен, что это совпадение по функциям. Если вы делаете тест, пожалуйста, сообщите о своих выводах. Конечно, есть и другие бутстраперы, но это не моя область знаний. Коммерческие инструменты, такие как Installshield (по крайней мере в их версии Premium), имеют функции для создания такого загрузчика с помощью графического интерфейса, и я думаю, что они называют их "Install Suites" - или что-то в этом роде. Просто набор установщиков и предварительных условий по существу. Я не пробовал эту функцию начальной загрузки в Advanced Installer.
Что касается Burn:
- Запись основана на разметке и компиляции XML - как правило, с использованием Visual Studio.
- Вот описание Как установить.NET Framework с помощью Burn.
- Официальная документация для Burn.
- Как вы видите, он немного сложнее, чем инструменты, которые позволяют вам использовать графический интерфейс для построения вашей последовательности или "цепочки" установщиков.
- Это бесплатно и надежно.
- Я постараюсь выкопать для вас образец Burn.
- Хорошо, это должен быть хороший пример того, что может сделать Burn: https://github.com/frederiksen/Classic-WiX-Burn-Theme. Я думаю, что в этом примере есть несколько дублированных идентификаторов GUID проектов Visual Studio, но это не должно быть проблемой для вас, если вы по какой-то причине не добавите оба проекта в процесс сборки (тогда дублированные идентификаторы GUID, скорее всего, будут путать ваши инструменты сборки - просто то, что случилось со мной однажды).
- Просто чтобы быть понятным, Burn builds setup.exe загрузочные пакеты, способные содержать как MSI-файлы, так и EXE-файлы, запускаются в заданной последовательности и являются частью инструментария WiX. Сам WiX создает файлы MSI из исходных файлов WiX XML. Файлы Burn Setup.exe также созданы из исходных файлов WiX XML, но схема, очевидно, отличается. Просто для тех, кто никогда не видел эти инструменты. Пример, приведенный выше, хорошо продемонстрирует разницу как с проектом WiX MSI, так и с проектом WiX Burn. У него также есть проект по созданию двоичного файла, который затем включается как в MSI, так и в setup.exe.
Установка MSI обычно выполняется следующим образом: https://msdn.microsoft.com/en-us/library/windows/desktop/aa372024(v=vs.85).aspx поэтому вы можете использовать /quiet в качестве опции для подавления Пользовательский интерфейс и просто "сделать это"