В этой статье мы расскажем о наиболее распространенных инсталляторах, используемых производителями программного обеспечения для упаковки своих программ. Все инсталляторы поддерживают те или иные ключи автоматической установки.
InstallShield | Windows Installer Service (*.msi) | InstallShield с MSI
InnoSetup | Nullsoft Scriptable Install System (NSIS) | Wise Installer
InstallShield
Чтобы автоматически установить приложение, использующее InstallShield, вам надо предварительно создать файл setup.iss на рабочей ОС.
- Запустите приложение из командной строки, используя ключ /r (например, Setup.exe /r)
- Пойдет процесс установки, вы будете отвечать на вопросы - все как обычно. Главное, не выбирайте опцию перезагрузки компьютера сразу после установки ("Restart the computer now")
- После окончания установки зайдите в вашу системную директорию (C:\Windows) и извлеките оттуда файл setup.iss. Перед автоматической установкой положите файл в директорию, где лежит ваша программа.
В принципе, достаточно запустить автоматическую установку приложения таким образом:
start /wait %systemdrive%\install\setup.exe /s
Проблема в том, что инсталлятор раздваивается на два процесса и закрывает первый, так что start /wait отрабатывает вхолостую. Вы, наверняка, захотите поместить эту команду в пакетный файл, устанавливающий также и другие приложения. В таком случае правильнее использовать еще и ключ /sms, который заставит инсталлятор дождаться окончания установки приложения. Таким образом, команда будет выглядеть так:
start /wait %systemdrive%\install\setup.exe /s /sms
Установка InstallShield приложений методом RunOnceEx с CD
При установке приложений, использующих InstallShield, методом RunOnceEx с CD нужно указывать путь к лог-файлу (*.log). Для примера ниже приводятся команды на установку Kerio Personal Firewall. Путь к лог-файлу выделен.
REG ADD %KEY%\045 /VE /D "Kerio Personal Firewall 2.1.5" /f
REG ADD %KEY%\045 /V 1 /D "%CDROM%\apps\KPF\Setup.exe -s -f2\"%systemdrive%\kerio.log\"" /f
Как узнать, используется ли InstallShield для упаковки вашей программы?
Большинство из них может быть извлечено из установщика, в свойствах установочного файла (который, кстати, всегда называется setup.exe) будет что-то типа "InstallShield (R) Setup Launcher", и наконец наличие файла setup.iss в системной директории развеет все сомнения.
Windows Installer Service (*.msi)
Если у вашего файла расширение *.MSI, то он был запакован при помощи Windows Installer. Эти файлы можно устанавливать с ключами /qb и /qn. Вкратце, /qb и /qn аналогичны. Первый покажет прогресс установки, а второй полностью скроет все окна и незаметно установит приложение. Если вы хотите отобразить прогресс установки, но не показывать кнопку Cancel, исключая возможность прерывания установки пользователем, то используйте ключ /qb-!.
Некоторые приложения требуют перезагрузки компьютера после установки. Чтобы этого избежать используйте свойство REBOOT=ReallySuppress вместе с /qn или /qb, заключая все выражение в кавычки. Например:
setup.msi "/qn REBOOT=ReallySuppress"
Подробнее о ключах Windows Installer можно прочесть в этой статье MSDN. Смотрите также статью Использование ключей и свойств установщика Windows.
InstallShield с MSI
Начиная с версии 7 InstallShield способен производить MSI файлы. Приложения могут быть в виде отдельных MSI файлов или поставляться с установщиком setup.exe. Последние в свою очередь бывают двух типов: "InstallScript MSI" и "Basic MSI". InstallScript MSI использует традиционные ключи InstallShield. Basic MSI - отдельная история.
Чтобы автоматически установить приложение, использующее Basic MSI, вам нужно указать ключи /s /v"...". Многоточие нужно заменить на ключи, которые вы хотите передать непосредственно Windows Installer (msiexec). Иными словами, если вы хотите установить приложение абсолютно незаметно и избежать перезагрузки, то используйте такую команду
setup.exe /s /v"/qn REBOOT=ReallySuppress"
Inno Setup
Приложения, запакованные в бесплатный Inno Setup, поддерживают ключи /SILENT и /VERYSILENT (разница лишь в том, что второй не показывает полосу прогресса во время установки)
setup.exe /VERYSILENT
Есть небольшая проблемка. Вам захочется избавиться от окна, спрашивающего хотите ли вы продолжить установку:
Чтобы подавить это окошко используйте такой ключ:
setup.exe /VERYSILENT /SP-
Осталась еще одна проблема. Некоторые инсталляторы Inno Setup попытаются запустить программу по окончании установки. ISOBuster как раз такой случай. Тогда приходится убивать процесс, используя встроенную в Windows XP утилиту Taskkill. Ниже пример кода для установки ISOBuster:
ECHO.
ECHO Installing ISOBuster 1.4
ECHO Please wait...
start /wait %systemdrive%\install\Applications\ISOBuster\IsoBuster14.exe /VERYSILENT /SP-
ECHO.
ECHO Killing ISOBuster.exe process
taskkill.exe /F /IM isobuster.exe
ECHO.
Примечание. Утилита Taskkill не входит в состав Windows XP Home. Вместо нее можно использовать утилиту PsKill, входящую в состав PsTools от Sysinternals. Синтаксис утилиты очень прост. Продолжая пример с IsoBuster, команда для завершения процесса будет выглядеть так.
pskill.exe -t isobuster.exe
Подробнее о ключах InnoSetup вы можете прочесть в этой теме на конференции OSZone (спасибо, Mchik).
Как узнать, используется ли Inno Setup для упаковки вашей программы?
При запуске инсталлятора в самом первом окне кликните на иконку в левом верхнем углу и выберите пункт About Setup из меню.
Nullsoft Scriptable Install System (NSIS)
Приложения, использующие бесплатный NSIS, запускаются с ключом -S (например, Setup.exe /S). Вы также можете использовать ключ /D для указания директории установки. Ниже пример установки программы CD-ex:
Setup.exe /S /D=E:\Software\7-zip
Приложения Winamp и CDex показывают диалоговое окно, сообщающее об окночании инсталляции. Как это обойти - непонятно, но это не повлияет на остальные пакетные команды. Отмечу, что CD-ex можно устанавливать без инсталлятора.
Как узнать, используется ли NSIS для упаковки вашей программы?
Смотрите скриншот, он примерно одинаков для всех приложений
WISE Installer
Программы, запакованные WISE Installer, используют ключ /s. Все что нужно, это
Setup.exe /s
Как узнать, используется ли WISE Installer для упаковки вашей программы?
Большинство будет показывать заставку в начале инсталляции
Другие же могут развернуть окно с темно-синим фоном во весь экран, отображая окно установки в центре.