На страницах сайта автоустановки много внимания уделяется использованию файла cmdlines.txt. С его помощью можно выполнять целый ряд задач - от импорта твиков реестра на Т-12 до организации установки программ методом RunOnceEx. Однако использование файла cmdlines.txt возможно только при наличии $OEM$ папок и соответствующих параметров в файле ответов. В некоторых сценариях автоматической установки приходится выполнять подобные задачи, обходясь без $OEM$ папок. В таких случаях эффекта, аналогичного использованию cmdlines.txt, можно достичь с помощью файла svcpack.inf, располагаемого в папке i386 установочного диска. Этот файл рассматривается в статье Мeтод svcpack.inf применительно к установке обновлений, но его можно приспособить и для других задач.
Состав файла svcpack.inf
Ниже приводится пример файла svcpack.inf для Windows XP:
[Version]
Signature="$Windows NT$"
MajorVersion=5
MinorVersion=1
BuildNumber=2600
[SetupData]
CatalogSubDir="\i386\svcpack"
[ProductCatalogsToInstall]
[SetupHotfixesToRun]
batch.cmd
Все задачи будут выполняться из пакетного файла batch.cmd (имя может быть любым, конечно), который размещается в папке i386\svcpack установочного диска. На Т-13 команды раздела [SetupHotfixesToRun] инициализируются, и запускается файл batch.cmd.
svcpack.inf и RunOnceEx
Рассмотрим пример того, как организовать установку программ методом RunOnceEx из svcpack.inf. Допустим, что мы хотим запустить таким способом некий исполняемый файл file.exe. Файл необязательно должен иметь расширение .EXE - это может быть любой пакетный файл (.CMD). Поняв принцип работы способа и зная, каким образом работает RunOnceEx, вы легко сможете скорректировать приведенный ниже код для установки любых программ или запуска других пакетных файлов при первом входе в систему.
Поскольку $OEM$ папки не используются, все подлежащие исполнению файлы располагаются на CD или DVD. Поэтому основная задача сводится к тому, как определить расположение файла file.exe и внести путь к нему в реестр для последующего запуска при первом входе в систему. В этом случае файл batch.cmd будет выглядеть следующим образом:
@echo off
:: Укажите путь к папке, в которой находится исполняемый файл, относительно корня компакт-диска
SET folder=install
:: Определяем букву компакт-диска
FOR %%d IN (c d e f g h i j k l m n o p q r s t u v w x y z) DO IF EXIST %%d:\WIN51 SET CDROM=%%d:
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
REG ADD %KEY%\999 /V 1 /D "%CDROM%\%folder%\file.exe" /f
В третьей строке необходимо указать путь к папке, в которой находится исполняемый файл. Путь указывается относительно корня CD или DVD. В данном примере file.exe расположен в папке install, которая в свою очередь находится в корне компакт-диска. Просто подставьте свое значение вместо install. Остальные команды подробно рассматриваются в статье Запуск RunOnceEx с CD, поэтому на них мы не будем останавливаться.
Это все! Теперь на Т-13 из файла svcpack.inf будет запущен файл batch.cmd, который в свою очередь определит расположение файла file.exe и внесет информацию в раздел реестра RunOnceEx. Наконец, при первом входе в систему будут запущены команды раздела RunOnceEx, что повлечет запуск файла file.exe.
svcpack.inf и WPI
Если вы используете программу WPI для выборочной установки приложений, вы также можете задействовать этот способ. В этом случае вместо file.exe запускается WPI.hta.
svcpack.inf и твики реестра
Поскольку импорт твиков реестра в раздел HKCU необходимо выполнять до первого входа в систему, для этой задачи можно также использовать файл svcpack.inf. В этом случае содержимое файла batch.cmd будет выглядеть так:
@echo off
:: Укажите путь к папке, в которой находится файл твиков, относительно корня компакт-диска
SET folder=install
:: Определяем букву компакт-диска
FOR %%d IN (c d e f g h i j k l m n o p q r s t u v w x y z) DO IF EXIST %%d:\WIN51 SET CDROM=%%d:
regedit /s "%CDROM%\%folder%\tweaks.reg"
Внимание! Параметры автоматического входа в систему, указываемые в файле svcpack.inf, не срабатывают. Используйте другие методы, описанные в указанной статье.
Примечание. В пакетном файле, рассматриваемом в статье, используется способ назначения переменной %CDROM%, который в некоторых сценариях может не привести к ожидаемым результатам. Это произойдет только в том случае, если после назначения переменной и внесения параметров в реестр на Т13/Т12, система обнаружит дисковые устройства и, как следствие, назначит им буквы. В результате при первом входе в систему привод CD или DVD может иметь букву, отличную от той, которая была присвоена на более раннем этапе установки ОС.
Автор благодарит участника конференции OSZone Master Fess за помощь в подготовке статьи.