Автоматизация установки приложений


Я всегда мечтал о полностью автоматизированной программе, запускаемой с помощью речевого ввода, предназначенной как для установки Windows 2000, так и для установки приложений и всех необходимых пакетов изменений. Однажды я перестал мечтать и начал создавать подобную программу вручную, взяв за основу службу Microsoft Remote Installation Services (RIS). В процессе работы моя программа запрашивала пользователя о специфической конфигурации системы и в соответствии с его ответами проводила несколько видоизмененную установку Windows 2000 Professional. Вместе с тем, хотя сама по себе индивидуализация установки системы - замечательная возможность, найдется немного организаций, которые ограничатся только установкой системы Windows 2000 Professional. Тогда я предпринял следующий шаг в изучении RIS и добавил к списку рутинных операций, выполняемых с помощью этой службы, установку приложений.

ЧТО УЖЕ ИЗВЕСТНО

В статье "Служба удаленной установки: установка Windows 2000 на заказ" перечислены шаги для настройки индивидуальных параметров установки, что позволяет развертывать систему в конфигурации, заданной пользователем. Сначала модифицируются файлы .osc, предстающие перед пользователем в виде экранов программы OSChooser, а затем аккуратно подготавливаются файлы-шаблоны, которые использует в своей работе процедура установки. Файлы .osc модифицируются таким образом, чтобы в экранах программы установки клиента (Client Installation Wizard) службы RIS задавались вопросы о деталях конфигурации системы, которые следует установить для данного пользователя (например, используемых адресах IP, системных компонентах). Эта специфическая для пользователя информация транслируется в переменные окружения файлов-шаблонов, на которые, в свою очередь, ссылается процедура установки Windows 2000 Professional.

Очень небольшое число рабочих мест укомплектовано только системой, без каких-либо дополнительных приложений. Но ведь технология RIS способна помочь в установке только Windows 2000 Professional, не так ли? Оказывается, не так. С помощью модификации файлов автоматической установки можно автоматизировать процесс установки большинства, если не всех, приложений.

GUI. GUIRUN. GUIRUNONCE.

В стандартном файле автоматической установки Windows 2000 или Windows NT присутствует секция [GuiRunOnce]. Во время установки записи этой секции автоматически помещаются в реестр компьютера в раздел RunOnce. Когда на компьютере в первый раз происходит регистрация, выполняется каждая команда, записанная в этом разделе, после чего команды из реестра удаляются. Поскольку основанная на технологии RIS установка Windows 2000 Professional после завершения процедуры установки автоматически выполняет регистрацию от имени администратора, все команды, содержащиеся в секции [GuiRunOnce], также будут выполнены.

Записи в [GuiRunOnce] - отличное решение для запуска программ установки приложений. Синтаксис секции [GuiRunOnce] прост. Скажем, требуется автоматически установить на целевой компьютер пакет изменений Service Pack 1 (SP1) и выполнить эту задачу как часть RIS-установки. Для этого достаточно вызвать копию update.exe из дистрибутива SP1, предварительно сохраненную где-либо в сети, добавив в секцию [GuiRunOnce] всего две строчки:


[GuiRunOnce]
"net use n: \\\ password  /USER:username /persistent:no"
"n:\sp1\update.exe"

Все команды в секции [GuiRunOnce] следует заключить в кавычки. Во время самой первой регистрации Windows 2000 выполняет по очереди все команды, присутствующие в секции. Сначала подключается сетевой диск (буква N), на котором размещены файлы установки пакета изменений и программа update.exe. Во второй строке запускается update.exe - программа установки SP1. Чтобы воспользоваться секцией [GuiRunOnce] для установки SP1, необходимо зарегистрироваться с полномочиями, достаточными для обновления операционной системы. Добавьте следующие строки


"Autologon=Yes"
"Autologoncount=1"

в секцию [GuiUnattend] системного файла-шаблона (.sif), гарантируя тем самым, что программа update.exe будет запущена с административными полномочиями.

Добавить новые команды в секцию [GuiRunOnce] файла ristndrd.sif очень просто, и мне еще не встречались ограничения на число добавляемых строк-команд. Используя данную технику, можно устанавливать столько приложений, сколько требуется. Ключевой момент - подобрать (или подготовить) приложения так, чтобы их установка в автоматическом режиме не требовала операций ввода со стороны пользователя.

Вопрос об обновлении набора приложений, используемых в организации, представляется очень сложным, но на деле это не совсем так. Нужно получить информацию обо всех параметрах (документированных и недокументированных) для выполнения автоматической установки. Большинство приложений использует схожие технологии установки, например, такие, как у Windows Installer и InstallShield. Эти программы без труда работают в автоматическом режиме.

АВТОМАТИЗАЦИЯ УСТАНОВКИ SERVICE PACKS

Обычный запуск программы update.exe, заданной в секции [GuiRunOnce], для установки пакета изменений требует от пользователя ввода некоторых параметров. Это не согласуется с задачей установки в полностью автоматическом режиме. Однако, начиная с версии NT SP3, Microsoft добавила в программу установки update.exe параметр -u. Этот ключ означает запуск программы установки в автоматическом режиме и на мониторе пользователе отображается только текущий рабочий статус установки пакета изменений.

По умолчанию, после установки пакета изменений система перезагружается. Если SP1 - единственное приложение, запущенное пользователем, то это вполне приемлемо. Однако если после установки пакета изменений нужно установить дополнительные приложения, перезагрузка может быть отменена при помощи ключа -z. Если использовать оба ключа и прописать в секцию [GuiRunOnce] вызов команды update.exe в таком виде


"n:\sp1\update.exe -u -z"

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

АВТОМАТИЗАЦИЯ ПРОГРАММЫ WINDOWS INSTALLER

Если вы знакомы с Windows 2000, то, наверное, уже имеете представление о технологии Windows Installer, новом стандарте Microsoft для установки приложений, таких как Office 2000 и Windows 2000 Server Terminal Services Client.

Не так давно Microsoft был выпущен Windows Installer для пакета изменений. Windows Installer быстро становится основной программой установки программного обеспечения Microsoft, поэтому многим будет интересно узнать о возможностях ее автоматизации.

Для автоматической установки приложений, в которых используется Windows Installer, достаточно просто указать ключ /q при запуске программы установки. Ключ /q предписывает Windows Installer использовать определенный уровень интерфейса пользователя (UI) при развертывании приложения. В Таблице 1 перечислены уровни UI, которые поддерживаются программой Windows Installer. Переключателя /qb в большинстве случаев как правило бывает достаточно.

Чтобы сообщить Windows Installer о начале процедуры установки, нужно в командной строке указать ключ /I перед именем .msi-пакета. Для программы, .msi-файл которой назван packagename.msi, команда в секции [GuiRunOnce] будет выглядеть так:


"msiexec /I packagename.msi /qb"

Недостатком автоматизации установок по технологии Windows Installer является то, что приходится принимать настройки приложения, принятые по умолчанию. Мне еще не удалось найти способ изменить параметры установки для индивидуальной настройки целевых каталогов и компонентов. Однако InstallShield-технология лишена этого недостатка.

АВТОМАТИЗАЦИЯ ПРОГРАММЫ INSTALLSHIELD

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

Простота использования InstallShield, возможности автоматизации установки приложений - все это не является новейшей разработкой на рынке программного обеспечения. Сама компания не афиширует функциональность, связанную с автоматизацией, за исключением материалов, относящихся к технической поддержке. В статье "HOWTO: Creating a Silent Installation" на сайте компании раскрывается секрет автоматизации установки приложений: ключи -r и -s.

Типичная установка приложения на основе технологии InstallShield выполняется с помощью специально создаваемого шаблона. Но если запустить программу setup.exe с ключом -r, то все ответы пользователя в процессе установки записываются в специальный файл ответов InstallShield Silent Response File (.iss).

Даже если используется ключ -r программа InstallShield все равно устанавливает приложение на компьютер пользователя. После того, как программа установки создаст файл .iss, я рекомендую немедленно удалить установленное приложение. InstallShield по умолчанию записывает .iss-файл в каталог Windows, хотя это, наверное, не самое лучшее решение. Скопируйте файл setup.iss из каталога Windows в тот же каталог, где находится дистрибутив приложения, а затем воспользуйтесь ключом -s при запуске программы setup.exe для переустановки приложения, на этот раз в "молчаливом" режиме (silent mode).

"Молчаливая" установка (или автоматическая установка с использованием файла ответов) работает при установке большинства приложений на базе InstallShield. Многие из них широко распространены на рынке программного обеспечения. Вместе с тем, компания InstallShield Software документировала сценарий, при котором "молчаливая" установка может не работать, например, в тех случаях, когда используются специальные диалоговые окна, не позволяющие записать необходимые данные при запуске с ключом -r. К счастью, мне не встретилось ни одного такого приложения. Как бы то ни было, предварительно нужно протестировать приложения на предмет возможности автоматического развертывания в "молчаливом" режиме до того, как команда установки будет записана в секцию [GuiRunOnce].

В зависимости от программы установки приложения, после запуска InstallShield в режиме автоматической установки на экран могут выводиться диалоговые окна, подсказки и графика. Вероятно, в процессе установки будет замечена возросшая активность диска. Однако понять, когда же процесс установки завершился, довольно сложно. Для ответа на этот вопрос лучше всего обратиться в меню Windows Start или Windows Task Manager.

В "молчаливом" режиме приложение может быть установлено с ошибками. Чтобы выяснить, так ли это, откройте файл setup.log, создаваемый по ходу установки приложения. Установочная процедура записывает в этот файл коды состояний, которыми можно воспользоваться для поиска причин ошибки. В документации InstallShield Software, относящейся к "молчаливому" режиму, содержится информация относительно сообщений об ошибках при установке приложений.

Если приложение установлено нормально, можно воспользоваться ключом -s и ввести команду установки в секцию [GuiRunOnce], например, так:


"setup.exe -s"

СОБИРАЕМ МОЗАИКУ

Предположим, что настроенная под требования пользователя Windows 2000 Professional полностью подготовлена к установке и в систему после завершения установки требуется добавить SP1, Acrobat Reader и Terminal Services Client. Необходимо, чтобы каждое приложение устанавливалось в автоматическом режиме. Вы устанавливает каждое приложение на сервер и записываете в секцию [GuiRunOnce] только четыре строчки. Выглядеть секция будет примерно так:


[GuiRunOnce]
"net use n: \\\ password  /USER:username /persistent:no"
"n:\sp1\update.exe -u -z"
"n:\adobe\setup.exe -s"
"msiexec /I n:\TSCpackagename.msi /qb"

Осталось запустить RIS для установки Windows 2000 Professional, затем начнется автоматическая установка перечисленных приложений. После чего система полностью готова к работе.

ПОДСКАЗКА

При запуске программ автоматической установки в едином пакете с помощью секции [GuiRunOnce] возможет один оригинальный эффект. А именно - все приложения могут начать процедуры установки в одно и то же время. Одновременно запущенные процессы установки могут помешать друг другу, например, при попытке одновременно использовать одинаковые файлы. Если нужно, чтобы каждая следующая установка начиналась лишь по окончании предыдущей, попробуйте в секции [GuiRunOnce] перед каждым вызовом программы установки указать Start /wait (запуск приложения с ожиданием его завершения). Во многих случаях этого оказывается достаточно - каждая установка ожидает завершения предыдущей и начинается "с чистого листа".

Но что делать, если требуются более гибкие возможности управления процессом автоматической установки? Что если нужно установить лишь некоторые приложения на ряд систем? Что если, например, вы хотите установить Terminal Services Client не на все, а лишь на избранные станции? В этом случае можно воспользоваться знаниями о настройке RIS и редактировании OSChooser-экранов, чтобы узнать у пользователя, следует ли на его компьютер устанавливать Terminal Services Client. После чего записать ответ в переменную окружения и создать командный файл (файл install.bat в примере ниже), который или устанавливает или пропускает Terminal Services Client в соответствии со значением переменной окружения. Например, следующая команда, помещенная в секцию [GuiRunOnce], вызывает командный файл и передает ответ пользователя в качестве параметра запуска:


"n:\tsc\install.bat %TSC%"

ПРОДОЛЖЕНИЕ СЛЕДУЕТ

Представьте себе, что вы находитесь за рабочим столом и запускаете некую глобальную установку, инсталлируя полностью настроенную для данного пользователя систему Windows 2000 Professional, антивирусную программу, Office 2000 и все остальные приложения. Имея в запасе достаточно времени, можно построить такую завершенную программу автоматической установки системы и приложений, которая позволит развернуть и Windows 2000 Professional, и приложения от независимых разработчиков.

Представьте себе, что функциональность RIS можно раскрыть еще больше. В следующий раз мы посмотрим, как использовать RIS для запуска необходимых пользователю программ, не связанных с процедурой установки тех или иных приложений. Хотите запустить диагностическую программу непосредственно из меню RIS? Это тоже возможно.


Дуглас Тумбс - Внештатный редактор Windows NT Magazine. Имеет сертификаты MCSE, Compaq ASE и Novell CNA. Соавтор книги "Mastering Windows 2000 Server" (издательство Sybex). С ним можно связаться по электронной почте по адресу: doug@netarchitect.com.