Как автоматизировать установку MSI?

11

У меня есть около 20 приложений, которые должны быть запущены в определенном порядке. Я хочу написать их, чтобы я мог сделать это удаленно.

Каждое из приложений имеет Setup.exe и MSI.

Я надеялся, что у меня будет простой скрипт, который будет называть MSI с файлом ответов, но с тех пор, как я это сделал, прошли годы. Тем не менее, я не помню, как создать файл ответов.

Это хороший способ сделать это? Или был бы более простой способ?

Mowens
источник

Ответы:

17

Поговорим о загруженном вопросе ...

Для начала проигнорируйте setup.exe. Скорее всего, это просто вызывает MSI. Или иногда они извлекают кучу вещей, которые затем вызывают MSI, обычно вы можете наблюдать за вашим временным каталогом, когда запускаете программу установки, и получаете представление о том, что она делает.

Я всегда обманывал и пробовал запускать install ( msiexec /i path/to-install.msi /l*v /qn) с включенным ведением журнала, затем просматривал журнал и выбирал свойства, которые хотел установить, и устанавливал их через командную строку. Файлы ответов никогда не работали или не стоили труда пройти через процесс их создания.

Затем я нашел InstEdit и использовал его как лодку. Он позволит вам редактировать свойства MSI и сгенерировать Transform, который вы затем сможете передать в качестве аргумента в своем скрипте: msiexec /i path/to/installer.msi /t path/to/transform.mst я рекомендую сначала попробовать его, есть бесплатная версия, которая делает практически все.

Вы также можете посмотреть здесь все переключатели msiexec.

PeelMan
источник
+1, но, к сожалению, переключатели не работают со всеми MSI. Не изучал почему, но это определенно имеет место с некоторыми.
Ciaran
Зависит от того, как был создан MSI. Есть некоторые свойства, которые вы можете установить, чтобы игнорировать определенные параметры, IIRC. Обычно использование Instedit и построение Transform всегда работало, единственные ошибки, с которыми я сталкивался, обычно были человеческими.
Пилман
1
+1 для InstEdit
user66001
1
Метод журнала работал для меня. Важно отметить, что свойства будут перечислены какProperty(S) : PROPERTY_NAME...
Дрю Чапин
5

Msiexec - это инструмент, который вам нужен. У него есть параметр -q, позволяющий устанавливать вещи "спокойно":

/ qn: не отображает пользовательский интерфейс.

/ qb: отображает базовый пользовательский интерфейс.

/ qr: отображает сокращенный пользовательский интерфейс с модальным диалоговым окном, отображаемым в конце установки.

/ qf: отображает полный пользовательский интерфейс с модальным диалоговым окном, отображаемым в конце.

/ qn +: не отображает пользовательский интерфейс, за исключением модального диалогового окна, отображаемого в конце.

/ qb +: отображает базовый пользовательский интерфейс с модальным диалоговым окном, отображаемым в конце.

/ qb-: отображает базовый пользовательский интерфейс без модальных диалоговых окон.

Вы также можете указать именованные параметры (или «свойства») в конце командной строки; какие свойства поддерживаются, зависит от пакета. Например, эта команда:

msiexec /qb /l* perl-log.txt /i ActivePerl.msi PERL_PATH=Yes PERL_EXT=Yes

... это то, как вы устанавливаете ActiveState Perl, инструктируя пакет MSI добавить Perl.exe в вашу PATH и связать с ним файлы .pl. ( источник )

fretje
источник
1
Обратите внимание, что разработчик может отключить параметр / q в установщике msi.
Джоэл Коухорн
1

Большинство приложений могут быть установлены в режиме без вывода сообщений и, следовательно, по сценарию. Каждый файл Setup.exe может иметь несколько потенциальных ключей, поэтому необходимо обязательно позвонить поставщику или выполнить поиск по его веб-сайту. Иногда вы можете получить информацию, запустив установку с помощью ключа / ?, / h / help. Файлы MSI также могут иметь любое количество переключателей, но в этой статье в параметрах командной строки MSI приведен список.

При создании сценария процесса вы можете запустить приложение, которое устанавливается с помощью setup.exe, а затем запускает другой файл, например MSI. Одним из примеров был MS Office XP. Когда это происходит, ваш сценарий может подумать, что файл, который вы запустили, завершен, и запустить следующую установку, которая не удалась, и все пойдет на юг. Чтобы обойти это, попробуйте обойти установочный файл и сразу перейти к фактическому установщику (возможно, MSI) с параметрами командной строки. Если это невозможно, вам, возможно, потребуется создать какую-то паузу таймера. Раньше я использовал небольшую утилиту под названием wait.exe, которую я нашел в интернете, но есть миллион способов сделать это. Ключ к созданию сценариев, однако, должен быть в состоянии определить, правильно ли установлено приложение, чтобы можно было начать следующую установку.

боб
источник