Как сделать самоустанавливающийся файл

Добавил пользователь Владимир З.
Обновлено: 01.09.2024

Тема настройки карантина для доступа к корпоративной сети уже неоднократно рассматривалась в нашем журнале, в частности мы рассказывали об основных методах проверки конфигурации компьютера перед тем, как открыть ему доступ ко внутренней сети через RRAS-сервер Windows Server 2003 Service Pack 1 (SP1)/Release 2 (R2). Продолжая тему, хочу дать несколько практических советов по управлению карантином при доступе к сети (Network Access Quarantine Control, NAQC) для VPN-клиентов Windows XP SP2. Цель данной публикации — предоставить решение исключительно на основе продуктов Microsoft, для которого не требуется применять продукты независимых поставщиков. Ради простоты мы рассмотрим только VPN-решение PPTP с проверкой подлинности MS-CHAP v2. Но могут применяться и другие методы, например туннелирование L2TP и проверка подлинности с использованием смарт-карт и цифровых сертификатов.

NAQC — это метод анализа конфигурации компьютера клиента при удаленном доступе перед тем, как ему будет разрешено обращаться к компьютерам в защищенной сети. Среди проверок, которые проходит клиент, — контроль своевременного обновления сигнатур вирусов, наличие пароля для хранителя экрана и обновления для брандмауэра XP. В данной статье в качестве критерия безопасности используется число установленных исправлений. Критерий безопасности можно дополнить другими проверками, но при этом возрастает сложность решения. Механизм реализации NAQC следующий:

VPN-клиент XP SP2 подключается к RRAS-серверу с использованием PPTP, и выполняется проверка подлинности.

Клиент помещается в карантин. Карантин представляет собой набор фильтров клиентского трафика на основе IP-адресов и протоколов. Фильтры могут обслуживать конкретные протоколы и порты или разрешать трафик по адресам.

Клиент загружает подготовленный администратором список необходимых исправлений с защищенного сервера, доступного через фильтры карантина.

Клиент обрабатывает список с помощью сценария, проверяя установленные обновления. Если все обновления установлены, клиенту предоставляется доступ к защищенной сети. Если обновления отсутствуют, то соединение клиента завершается тайм-аутом в карантине.

Можно усовершенствовать метод и настроить NAQC так, чтобы предоставить отправленному в карантин клиенту доступ к обновлениям, которые требуется установить. Ниже будут приведены советы по организации такого доступа.

В данной реализации используется три компьютера: контроллер домена (DC) Windows 2003 SP1/ R2, RRAS-сервер Windows 2003 SP1/R2 с несколькими сетевыми интерфейсами, функционирующий как пограничный сервер, и клиент XP SP2. В таблице показаны настроенные сетевые интерфейсы. Сеть 10.0.0.0 имитирует общедоступное пространство IP-адресов; на практике XP-клиент и внешний интерфейс RRAS будут иметь общедоступные IP-адреса. Трафик не проходит из XP-клиента в DC, если клиент не выведен из карантина.

Для контроллера домена Windows 2003 не требуется специальной настройки, за исключением создания тестовых учетных записей пользователей и групп. В данной статье тестовому пользователю дано имя VPNTest, а группа получила название VPNUsers. Тестовый пользователь введен в тестовую группу; установлен флажок Allow access в разделе Remote Access Permission (Dial-in or VPN) на вкладке Dial-in диалогового окна свойств учетной записи (экран 1).

Экран 1. Разрешение удаленного доступа

Чтобы выполнить проверку подлинности для соединения VPN, компьютер, функционирующий в качестве RRAS-сервера, должен быть членом домена DC. Чтобы настроить RRAS на сервере, который является членом домена, необходимо выполнить следующие действия:

Зарегистрироваться на сервере, члене домена, с учетной записью из группы Domain Admins. Это упростит процесс авторизации RRAS-сервера после завершения настройки.

Щелкнуть на имени сервера, а затем на Configure and Enable Routing and Remote Access, чтобы запустить мастер Routing and Remote Access Wizard.

На экране Configuration оставить параметры по умолчанию — Remote access (dial-up or VPN) — и щелкнуть на кнопке Next.

На странице IP Address Assignment установить флажок From a specified range of addresses и нажать Next. Назначать IP-адреса можно с использованием DHCP, но в ходе тестирования можно указать определенный диапазон.

На странице Address Range Assignment щелкнуть на кнопке New, чтобы добавить диапазон IP-адресов для клиентов удаленного доступа. Этот диапазон должен находиться внутри подсети в диапазоне адресов защищенной сети. Следует нажать Next.

На странице Managing Multiple Remote Access Servers щелкнуть на No, use Routing and Remote Access to authenticate connection requests и на кнопке Next. NAQC можно настроить на работу с RADIUS, но при этом процедура немного усложняется.

После установки RRAS на сервере, члене домена, необходимо установить службу Remote Access Quarantine Service и комплект Connection Manager Administration Kit (CMAK). Для установки этих компонентов нужно выполнить следующие действия:

В панели управления запустить утилиту Add or Remove Programs и перейти на вкладку Add/Remove Windows Components.

В диалоговом окне Networking Services выбрать Remote Access Quarantine Service (экран 2). Служба Remote Access Quarantine Service доступна в Windows 2003 SP1 и входит в состав R2.

Экран 2. Выбор службы карантина удаленного доступа

По завершении этой операции следует установить режим автоматической начальной загрузки Remote Access Quarantine Service, а затем применить инструмент Services из меню Administrative Tools, чтобы запустить службу.

Следующий этап настройки NAQC — создать и изменить политику удаленного доступа. Чтобы подготовить базовую политику удаленного доступа, требуется выполнить следующие действия:

Щелкнуть правой кнопкой мыши на Remote Access Policies и выбрать пункт New Remote Access Policy, чтобы запустить мастер New Remote Access Policy.

На странице User or Group Access выбрать Group, щелкнуть на кнопке Add и ввести VPNUsers (или группу, созданную ранее) в диалоговом окне. Закрыть диалоговое окно и щелкнуть на кнопке Next.

На странице Policy Encryption Level необходимо убедиться, что выбран только пункт Strongest encryption. Щелкните на кнопке Next, а затем на кнопке Finish, чтобы закрыть мастер.

После того как будет создана политика, нужно выполнить следующие действия, чтобы активизировать карантин удаленного доступа:

Ввести значение 45 секунд. Это значение определяет период времени, в течение которого клиент может ожидать окончания проверки. Если карантин не снят спустя 45 секунд, система автоматически разрывает соединение клиента с RRAS-сервером. 45-секундного интервала достаточно, чтобы выполнить начальную проверку и при необходимости принудительно загрузить одобренные обновления с серверов Windows Update компании Microsoft. Ниже этот процесс будет описан подробнее.

Выбрать атрибут MS-Quarantine-IPFilter и щелкнуть на кнопке Add. От настройки этого фильтра зависит, какой трафик можно передавать и получать от клиентов, находящихся в карантине. В данном примере фильтр разрешает весь трафик для компьютеров с IP-адресами 192.168.10.1 и 192.168.10.2. Администратор может установить по этому адресу FTP-сервер и разместить в нем обновления. Клиент в карантине сможет обратиться к этому FTP-серверу и загрузить новейший список необходимых исправлений. Конечно, можно подготовить более строгие фильтры, позволив клиентам в карантине обращаться только по определенным IP-адресам через заданные протоколы (например, TCP, UDP) и конкретные порты.

Сценарии и обновления

В результате сценарий будет пригоден для обработки большего числа исправлений. Без этого изменения сценарий не будет функционировать на компьютере с XP SP2. Вместо прилагаемого файла hotfixidlist.txt нужно создать собственный файл с тем же именем и ввести идентификационные номера KB911564, KB911565 и KB873339.

Придется изменить файл, чтобы охватить все требуемые исправления перед развертыванием и применять новые по мере выпуска. Однако для тестирования компьютера XP SP2 эти три идентификатора подойдут. Полный список одобренных исправлений будет весьма длинным. Чтобы проверить, насколько эффективно сценарий удерживает клиентов в карантине, следует создать фиктивный идентификационный номер Knowledge Base или Quickfix и добавить его в список. После его загрузки в клиентский компьютер и выполнения проверки клиент не выйдет из карантина, так как в нем отсутствует фиктивное исправление.

Необходимо создать базовый сценарий, чтобы вызвать сценарий проверки исправлений и оценить его результаты. Базовый сценарий не обязательно должен быть сложным; в листинге приведен пример работоспособного сценария. С помощью привычного текстового редактора следует подготовить файл с именем hotquar.cmd и внести в него исходный текст листинга. Сценарий выполняет следующие действия:

вызывает сценарий CheckHotFixes.vbs компании Microsoft, чтобы проверить, был ли установлен новейший список исправлений.

Дальнейшие действия определяются кодами ошибок сценария. ERRORLEVEL 1 или 2 указывают, что установлены не все требуемые исправления; ERRORLEVEL 0 свидетельствует о том, что все исправления установлены. Если код ошибки — ERRORLEVEL 0, то система вызывает компонент слушателя карантина удаленного доступа, и клиент изымается из карантина. Если код ошибки — ERRORLEVEL 1 или 2, то предпринимается попытка принудительного обновления WSUS. Основы этого процесса будут объяснены в конце статьи.

Принципы работы RQC.exe

RCQ.exe — клиентский компонент службы Remote Access Quarantine Service. После того как будет активизирована служба Remote Access Quarantine Service, клиенты отправляются в карантин на время, указанное в политике удаленного доступа. Клиенту разрешается покинуть карантин, только если RCQ.exe пересылает определенную строку RQS-слушателю на RRAS-сервере. Эта строка хранится в разделе HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices qsAllowedSet реестра RRAS-сервера. Значение по умолчанию — RASQuarantineConfigPassed.

Строка передается в RCQ.exe из профиля Connection Manager Profile. В реестр можно ввести несколько строк, поэтому может существовать несколько профилей Connection Manager Profile и сценариев. Каждая строка привязана к Connection Manager Profile, поэтому можно удалить устаревшие строки из реестра, чтобы помешать пользователям с устаревшими профилями выйти из карантина. В строке

CALL RCQ.EXE /CONN %2 /DOMAIN
%4 /USER %5 /SIG %3

используются переменные, переданные в нее из профиля Connection Manager Profile. Эти переменные — имя соединения (%2), имя домена (%4), имя пользователя (%5) и строка выхода из карантина (%3). Далее о строке будет рассказано при настройке Connection Manager Profile.

Чтобы изъять клиент из карантина, достаточно предоставить имя соединения и строку выхода. Необходимость в других полях объясняется тем, что с их помощью можно просмотреть системный журнал RRAS-сервера и выяснить, какие пользователи не выпущены из карантина. Если информация о пользователе или домене отсутствует, то видно, что чей-то компьютер не выпущен из карантина, но неизвестно, чей именно.

FTP и распространение списка исправлений

Компания Microsoft выпускает новые исправления по крайней мере один раз в месяц, поэтому администраторам необходимо обновлять список исправлений и пересылать его клиентам. Сценарий в листинге 1 позволяет выполнить эту задачу, используя фиксированный набор команд FTP, чтобы извлечь файл HotFixIDList.txt из FTP-сервера, доступного для клиента в карантине. В данном случае FTP-сервер установлен на внешнем интерфейсе RRAS-сервера. Если ограничить FTP защищенной сетью, то обращаться к FTP-серверу смогут только клиенты в защищенной сети и в карантине. В строке сценария

CALL FTP A s:gethotfixlist.txt
192.168.10.1

используется список команд из файла gethotfixlist.txt. Типичный файл gethotfixlist.txt содержит такие команды, как ascii, gethotfixidlist.txt и bye. Возможно, список команд придется изменить, если файл gethotfixlist.txt находится в папке корневого каталога FTP-сервера.

Создание профиля Connection Manager Profile

Для настройки клиента требуется установить Connection Manager Profile на RRAS-сервере, а затем установить профиль на клиенте.

Следует щелкнуть на Connection Manager Administration Kit в меню Administrative Tools на RRAS-сервере (с установленным CMAK), чтобы запустить мастер CMAK. Щелкните на кнопке Next.

В диалоговом окне Service and File Names следует ввести имя службы VPNTest и имя файла VPNTest. Щелкните на кнопке Next.

На странице VPN Support необходимо выбрать параметр Phone book from this profile. Установите флажок Always use the same VPN server и введите IP-адрес внешнего интерфейса пограничного сервера. Щелкните на кнопке Next.

На странице Phone Book снимите флажок Automatically download phone book updates и щелкните на кнопке Next.

На странице Custom Actions щелкните на кнопке New. В диалоговом окне New Custom Action (экран 3) нужно ввести следующие параметры:

Убедитесь, что установлен флажок Include the custom action program with this service profile and Program interacts with the user. Нажмите OK, а затем Next.

На странице Additional Files нужно добавить файлы CheckHotFixes.vbs, gethotfixlist.txt, hotfixidlist.txt, hotquar.cmd и rqc.exe. Файл rqc.exe находится в папке ProgramFilesCmakSupport на RRAS-сервере с установленным CMAK. Нажмите Next.

Экран 3. Ввод нужных параметров

Профили Connection Manager Profile распространяются как самоустанавливающиеся файлы. После того как профиль установлен, клиент может использовать его для подключения. После проверки подлинности пользователя на клиентский компьютер загружается обновленный список исправлений, а сценарий CheckHotfixes.vbs применяется для сверки списка. Клиент, успешно прошедший тест, изымается из карантина. Администраторы обновляют список исправления, редактируя текстовый файл в соответствующем каталоге FTP.

Для диагностики в случае неполадок можно воспользоваться файлом rqc.log на клиентском компьютере с помощью команды

netsh ras set tracing * enabled

После того как журнал будет активизирован, следует попытаться заново установить VPN-соединение на клиенте и найти файл rqc.log в каталоге windows racing. Он может быть полезен для устранения проблем с карантином на клиентском компьютере. Для диагностики NAQC на сервере следует отыскать в системном журнале события из источника RQS.

Получение исправлений для клиента

Клиенты пребывают в карантине недолго, поэтому загружать обновления через VPN-соединение смысла нет. Отправленных в карантин клиентов VPN можно настроить на получение одобренного списка обновлений из защищенной сети, а сервер WSUS настроить на принудительную загрузку этих обновлений на удаленные клиенты из Internet.

Защита доступа к сети в Longhorn

В Longhorn Server появилась технология защиты доступа к сети (Network Access Protection, NAP), похожая на NAQC. Однако механизм принудительного соответствия требованиям состояния системы в ней иной. В основе NAP лежат не сценарии, а политики, которые применяются ко всем сетевым соединениям (не только организованным с участием сервера удаленного доступа). NAP заменит NAQC в следующей версии Windows. Этот метод не требует размещения сценариев на клиентах, поэтому применить NAP в Longhorn должно быть легче, чем NAQC в Windows 2003.

Проблемы удаленного доступа

Клиенты удаленного доступа всегда доставляли много хлопот администраторам. С применением NAQC уменьшается опасность, что зараженный клиент получит доступ к защищенной сети, но такая возможность не исключается полностью. На данном этапе применить технологию сложно; большинство предприятий не будет ее внедрять, пока процедура использования не станет проще.

Однако ученым тоже хочется кушать, прилично одеваться и заправлять машину. Поэтому (правда довольно редко) возникает необходимость немного пофрилансить.

    — классика жанра, достаточно солидный проприетарный продукт — проприетарный инструмент с широкими возможностями кастомизации через GUI. На сайте сказано, что если Вы блоггер и будете писать об этом продукте много хороших слов, то у Вас есть возможность получить Free License — открытый бесплатный продукт, основанный на XML-скриптах. Мощная, хорошо документированная штука. Разбираться с ним я пока не стал, ибо время дорого (да и к XML душа лежит не очень). Возможно когда нибудь я к нему вернусь. Да, к нему есть плагины для Visual Studio, что несомненный плюс. — опенсорсный проект, код которого доступен на гитхабе. В силу бесплатности и низкого порога вхождения мой выбор остановился именно на нем, как инструменте позволившем выполнить работу быстро и качественно.

Думаю, что скачать программу с официального сайта и установить её труда не составит. Запускаем Inno Setup Compiler и видим такое окно


Пугающе уныло встречает нас Inno Setup.

Что это? По сути это просто-напросто редактор для набора скриптов, снабженный подсветкой синтаксиса и кнопками компиляции и запуска. От нас ждут, что мы начнем набирать в этом окне текст скрипта, определяющий логику работы будущего инсталлятора. Ну так и не будем терять время.

Прежде всего определим необходимые константы

Тело скрипта разделяется на секции, каждая из которых несет свое функциональное назначение. Обязательная секция [Setup] задает глобальные параметры работы инсталлятора и деинсталатора.

Последние опции в этой секции определяют алгоритм сжатия (LZMA) и указывают, что все файлы сжимаются одновременно, а не по отдельности (SolidCompression) что ускоряет процесс распаковки при большом количестве однотипных файлов.

Каждая строка в данной секции задает один из используемых при установке языков. Синтаксис строки таков

Параметр LicenseFile задает путь к файлу с текстом лицензии на соответствующем языке.

Обычно установщик предлагает нам, например, определится, хотим мы или не хотим создать ярлык на рабочем столе. Такие опции установки определяются необязательной секцией [Tasks]



Теперь укажем, какие файлы надо включить в дистрибутив и где их надо поместить при установке. Для этого используется обязательная секция [Files]

  • Source — путь к файлу-источнику. У меня всё необходимое программе для работы лежит в каталоге Release проекта MS VS
  • DestDir — каталог установки, переменная содержит путь, выбранный пользователем в окне установщика
  • Flags — разнообразные флаги. В нашем примере для исполняемого файла: игнорирование версии программы при перезаписи исполняемого модуля, если он уже существует в системе (ignorevarsion); для остальных файлов и каталогов так же игнорируем версию, рекурсивно включаем все подкаталоги и файлы источника (recursesubdirs) и создаем подкаталоги, если их нет (createallsubdirs)

Наконец, чтобы всё было красиво, опционально укажем компилятору, где брать иконки для размещения в меню программ и на рабочем столе

Итак, всё вроде готово. Жмем Ctrl + F9 и пытаемся собрать инсталлятор. Если не допущены синтаксические ошибки, начнется процесс сборки


Inno Setup собирает инсталлятор

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


Запуск инсталлятора под ограниченной учетной записью

В итоге мы увидим до боли знакомое каждому пользователю Windows окно выбора языка

приветствие мастера

лицензионное соглашение

ну и так далее. Приятно, что по умолчанию используется лаконичный дизайн мастера, без рюшечек (которые при желании можно добавить)

  1. Определиться с тем, как будем получать дистрибутив фреймворка. Тут есть два варианта — поставлять его вместе с дистрибутивом программы или, при необходимости установки загрузить его онлайн на целевую машину. Мы остановимся на варианте включения фреймворка в дистрибутив. Сам фреймфорк, скажем версии 4.0, можно взять бесплатно у Майкрософта
  2. Детектировать наличие/отсутствие данного фреймфорка в целевой системе. Для этого потребуется написать логику, анализирующую состояние системного реестра.

Значения в реестре, которые необходимо проверить приведены в официальной документации Microsoft, в статье я приведу краткую выжимку из неё

хотя можно набить код и непосредственно в секции [Code]. Надо помнить, что внутри этой секции используется синтаксис Pascal, и комментарии предваряются последовательностью "//" вместо используемой в основной части скрипта точки с запятой.

Не смотря на обилие кода, логика его работы достаточно проста — в зависимости от значения параметра version с помощью функции RegQueryDWordValue(. ) читается значение соответствующего ключа реестра и сравнивается с требуемым значением (смотрим таблицу 1). Для версии 4.5 дополнительно передаем номер релиза в параметре release.

Для того, чтобы перед началом установки проверить наличие фреймворка и сообщить пользователю о предпринимаемых действиях используем Callback-функцию InitializeSetup()

Сам запуск инсталляции фрейворка можно выполнить после установки основной программы, поэтому включаем в скрипт секцию [Run], в которой указывается, что необходимо запускать по окончании установки

Обратите внимание на то, что мы сначала указываем имя секции [Run], чтобы закрыть секцию [Code], а затем пишем комментарий начинающийся с точки с запятой. Это необходимо из-за различия синтаксиса основного скрипта и секции [Code], в противном случае при компиляции мы получим синтаксическую ошибку.



Майкрософт просит нас принять лицензию.

Я не профессионал и во многих вещах могу ошибаться. Прошу отнестись к этому с пониманием. Статья писалась нубом для нубов, её основная цель — задать вектор поиска при решении задачи написания инсталлятора. За остальными вопросами можно обратится к документации, поставляемой вместе с Inno Setup.

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

что такое тихий инстолятор? это обычный инстолятор, но ему передаётся специальный параметр, чтобы он не задавал пользователю вопросов, связанных с установкой.
Тренироваться мы будем на Mozilla Firefox версии 27.0.1 и нашем компьютере, без которого будет бесполезен в корне этот труд! ?

что нам понадобится:

  1. руки и голова, это самое главное.
  2. Блокнот. это думаю у вас найдётся.
  3. сам инстолятор. это совсем не проблема.
  4. Архиватор 7-zip, но если у вас уже установлен WinRar, то и он подойдёт.
  5. Остальное выбирайте сами, кому пригодится больше справка по пакетным файлам, а кому и крепкий кофе с плиткой шоколада.

Предисловие

Простым языком: пакетный файл — это такой файл, в котором последовательно записаны команды для интерпритатора cmd.exe. эти команды выполняются последовательно т.к., в пакетном режиме. по этому и называются они пакетными файлами.
Для тихой установки мы будем использовать такой файл, ибо именно через него проще всего передать параметры инсталлятору, чтобы он поставил программу так, чтобы не дыма, ни огня, а программа была, появилась у нас в системе как чёрт из табакерки.

Для чего это нужно?
Всё просто: кому-то надо быстро поставить много программ, а кому-то тихо внедрить программу в систему :-), но это уже не тема данной статьи.

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

Приступаем к работе

Итак, для начала подготовимся.
Качаем 7-zip на компьютер и устанавливаем его.

Затем качаем русский дистрибутив Mozilla Firefox, однако устанавливать его пока не будем: пусть он подождёт и отдохнёт.

На этом дистрибутиве мы и будем проводить свои эксперименты в области тихой установки.

Вот и всё, подготовку объявляем завершённой, вперёд!

Создание тихого инстолятора

Так как дистрибутив Firefox является уже своего рода архивом, а главный инстолятор внутри, распаковываем его в отдельную папку с помощью 7-zip.
После распаковки в директории, куда распаковали дистрибутив, мы увидим две папки

Теперь подробнее о том, что означают команды.

@echo off
Отключаем вывод команд на экран, зачем, ведь мы сами знаем, какие команды туда вписали.

start /wait setup.exe /s

Просто закрываем сеанс работы с cmd.exe. он конечно и сам может, но чтобы уж точно закрылся лучше напишем.

Большинство системных
администраторов знают, как можно быстро
установить/переустановить Windows. Для этих
целей существуют программы, позволяющие
сделать точный образ установленной Windows
вместе со всеми установленными
приложениями, драйверами и т.п. Достаточно
переписать этим образом системный раздел и
вот на машине установлена полностью
готовая к работе Windows. Этим занимаются такие
программы как Acronis TrueImage, PowerQuest DeployCenter, Norton
Ghost. С появлением Windows XP появилась также
возможность автоматически установить всю
Windows без вопросов про имя пользователя, ключ
продукта, временные, региональные
настройки и т.п. В ходе установки можно
автоматически установить любые приложения,
ключи реестра, обновленные драйвера. В
английском языке этот процесс называется
“unattended installation”, что по-русски означает “автоматическая
установка". Так что в плане полной
переустановки Windows у системных
администраторов проблем стало меньше. Вся
установка заключается только в том, чтобы
вставить специальный диск в привод
пользователя. А вот как быть если надо на
установленную Windows нужно поставить какое-нибудь
приложение? Софт для бухгалтера, юриста,
инженера? Тут администратор честно идет к
пользователю, честно жмет кнопки, отвечает,
что Да, он согласен с лицензионным
соглашением, вводит ручками серийник и ждет
появления кнопки Finish. Проделывать такую
работу больше чем на одном компьютере -
занятие неблагодарное. Но, к счастью, и
здесь есть незаменимые помощники. О них и
пойдет речь.

Помочь администратору могут сами
инсталляторы программ. Большинство из них
имеют специальные ключи, с помощью которых
можно запустить автоматическую установку
программы. Наиболее часто используются
следующие типы инсталляторов:

  1. InstallShield
  2. Windows Installer Service (*.msi)
  3. InstallShield с MSI
  4. Inno Setup
  5. Nullsoft SuperPiMP Install System (NSIS)
  6. WISE Installer

Список инсталляторов, конечно,
неполный, охватить все просто невозможно.

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

Наличие файла setup.iss в
директории;
В свойствах установочного файла (который,
кстати, всегда называется setup.exe) будет
что-то типа "InstallShield (R) Setup Launcher".

Несколько комментариев к таблице.

    Для Windows Installer можно задавать ключи /qb или
    /qn. Первый покажет прогресс установки, а
    второй полностью скроет все окна и
    незаметно установит приложение. Если вы
    хотите отобразить прогресс установки, но
    не показывать кнопку Cancel, исключая
    возможность прерывания установки
    пользователем, то используйте ключ /qb!.
    Некоторые приложения требуют
    перезагрузки компьютера после установки.
    Чтобы этого избежать используйте
    свойство REBOOT=ReallySuppress вместе с /qn или /qb,
    заключая все выражение в кавычки.

Для других типов инсталляторов
иногда о ключах можно узнать, запустив
программу с ключом /? или /help.

Отдельный разговор если
инсталлятор при установке требует ввод
серийного номера. Например, Nero Burning Rom может
быть автоматически установлен следующей
командой:

nero6303.exe /silent /noreboot /no_ui /sn=xxxx-xxxx-xxxx-xxxx-xxxx-xxxx /write_sn

Можно также создать
регистрационный файл, который будет
вносить регистрационные данные прямо в
реестр. Пример файла regnero.reg:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Ahead\Nero - Burning Rom\Info]
"User"="InsertName"
"Company"="InsertCompanyName"
"Serial5"="InsertSerial"

Для Nero 6-й версии последняя строка
должна быть такой:

Тогда перед автоустановкой вы
можете сначала запустить регистрационный
файл, а потом уже автоустановку с ключами. Понятно, что от такой
автоматизации мало толку без командных
файлов. Например, создайте файл autosetup.cmd

ECHO Installing Nero Burning Rom
ECHO Please wait.
REGEDIT /S D:\Install\regnero.reg
start /wait D:\Install\Nero551054.exe /silent /noreboot /no_ui
Где D - буква привода (универсальной
переменной типа %CDROM%, к сожалению, нету).

Ключ /wait команды start позволит
дождаться окончания процесса установки.
Это необходимо, чтобы не запускалось сразу
несколько процессов инсталляции. В командный
файл можете записать команды
для автоустановки всех необходимых
приложений.

Таким образом, вы можете записать
все инсталляторы и командный файл autosetup.cmd
на диск и запускать автоустановку через
него. Можно также бросить в корень диска
файл autorun.inf:

Тогда командный файл запустит
автоустановку сразу при вставке диска в
привод.

Если с ключами вам работать не
нравится, кажется сложным, или если вы не
смогли подобрать ключи для автоматической
установки, то можете попробовать программы
эмулирующие действия пользователя при "нормальной"
установке приложения. Общий смысл работы программ
такого типа в следующем. Инсталлятор
запускается в обычном режиме без ключей, а
все действия, такие как нажатие кнопок, ввод
серийных номеров, расстановка флажков,
происходят в режиме эмуляции действий
пользователя. В результате вы увидите окно
инсталлятора в котором сами нажимаются
кнопки, снимаются/ставятся флажки, вводятся
серийные номера и т.п. К программам такого рода
относятся: AutoIt и LazySetupCD.

Для AutoIt вы должны писать скрипты
на специальном скриптовом языке. Например, для установки
программы LazySetupCD скрипт будет такой:

//запуск установки из директории c:\temp
Run, c:\temp\LazySetupCD\setup.exe
//дождемся появления нужного окна
WinWaitActive, Лицензионное соглашение
//нажмем Да, т.е. отправим нажатие Enter
Send,
//дождемся появления следующего окна
WinWaitActive, LazySetupCD v.1.1
//нажмем OK
Send,
//завершение
Exit

  1. Нажать кнопку
  2. Поставить/снять флажок
  3. Установить переключатель
  4. Ввести текст

Итак мы рассмотрели три возможных
метода автоматической установки программ:

  1. С помощью ключей и командных файлов
  2. С помощью AutoIt
  3. С помощью LazySetupCD

Самым быстрым методом,
безусловно, является метод установки через
ключи и командные файлы, т.к. в этом случае
не появляется окон установки и не
расходуется время на их отрисовку. Однако,
по этому методу не всегда удается достичь
желаемого результата (например, не удастся
подобрать нужные ключи автоустановки).
Тогда на помощь приходят эмуляторы
действий пользователя - AutoIt и LazySetupCD. Чтобы
эффективно начать использовать AutoIt
придется потратить время на изучение
синтаксиса специального скриптового языка.
LazySetupCD предоставляет более простой и
удобный интерфейс для составления
алгоритма установки.

Читайте также: