Типы инсталляторов

Автор: Вадим Стеркин aka Vadikan
Иcточник: (частично переведено с английского) unattended.msfn.org
Опубликована: 26.02.2005

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

InstallShield | Windows Installer Service (*.msi) | InstallShield с MSI

InnoSetup | Nullsoft Scriptable Install System (NSIS) | Wise Installer

InstallShield

Чтобы автоматически установить приложение, использующее InstallShield, вам надо предварительно создать файл setup.iss на рабочей ОС.

  1. Запустите приложение из командной строки, используя ключ /r (например, Setup.exe /r)
  2. Пойдет процесс установки, вы будете отвечать на вопросы - все как обычно. Главное, не выбирайте опцию перезагрузки компьютера сразу после установки ("Restart the computer now")
  3. После окончания установки зайдите в вашу системную директорию (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 для упаковки вашей программы?

Большинство будет показывать заставку в начале инсталляции

Другие же могут развернуть окно с темно-синим фоном во весь экран, отображая окно установки в центре.


Ссылка: http://www.oszone.net/2766/