Вам понадобятся несколько файлов, которые необходимы для данного способа установки драйверов с CD. Вы можете
загрузить файлы отсюда. Просто распакуйте содержимое архива в
корень директории C:\XPCD\$OEM$.
Редактирование файла ответов
В файл ответов нужно добавить строки, приведенные ниже. Есть два варианта в зависимости от того, хотите ли вы
видеть консольное окно в процессе установки. Если вы хотите видеть консоль с отработкой командного (cmd) файла, то
добавьте эти строчки (при этом консольное окно в процессе установки запускается свернутым левом углу):
[GuiUnattended]
DetachedProgram=".\system32\cmd.exe"
Arguments="/Q /C FOR /F %I IN (%SystemRoot%\SYSTEM32\$WINNT$.INF) DO (FOR %J IN (%I$OEM$) DO (IF EXIST %J (start /min /D%J Drivers.cmd)))"
Если вы не желаетe видеть консольное окно, то добавляйте:
[GuiUnattended]
DetachedProgram=".\system32\cmd.exe"
Arguments="/Q /C FOR /F %I IN (%SystemRoot%\SYSTEM32\$WINNT$.INF) DO (FOR %J IN (%I$OEM$) DO (IF EXIST %J (start /min /D%J NirCmd.exe exec hide Drivers.cmd)))"
Подготовка драйверов
Для каждого из компонентов вашей системы (чипсет, сетевая карта, и т.д)
создайте отдельную директорию. Поименуйте ваши директории таким образом, чтобы имена начинались с номеров. Таким
образом, установка драйверов будет происходить в числовом порядке. Делается это для того, чтобы обеспечить правильный
порядок установки драйверов. Как вы, вероятно, знаете, драйверы чипсета должны устанавливаться первыми, следовательно
директория, содержащая драйверы чипсета должна быть первой, а точнее мы сделаем ее нулевой (000). Таким образом,
программа установки Windows сначала обратится именно к этой директории. Ниже приводится пример того, как можно
поименовать директории:
000_chipset
001_network
002_graphics
003_tv_out
004_sound
005_monitor
006_keyboard
007_mouse
008_and_so_on
Значит сначала у нас пойдут драйверы чипсета, потом сетевой карты, потом видео и звуковые карты, потом монитор, и
в конце периферия (мышь, клавиатура и т.д.).
Tеперь надо извлечь драйверы из инсталляционных пакетов. Производители драйверов используют разные типы
инсталляторов, так что универсального рецепта для каждого драйвера не существует. Большинство драйверов можно извлечь
из инсталляционного пакета при помощи WinRAR или аналогичных программ. Иногда, для извлечения достаточно запустить
установку, и дождавшись первого экрана пойти во временную папку, отыскать драйверы, распакованные инсталлятором,
скопировать их в другую папку, а затем отменить установку. Итак, извлеките драйверы в соответствующие директории,
которые вы создали ранее. Не беспокойтесь, если извлеченные драйверы содержат поддиректории - это ни на что не
повлияет.
В $OEM$ директории вашего инсталляционного диска (C:\XPCD\$OEM$) создайте директорию Drivers. Переместите папки с
извлеченными драйверами в Drivers. Драйверы будут устанавливаться прямо с CD, никакого копирования на жесткий диск не
будет. Конечно, драйверы должны быть в несжатом виде. Если вы хотите сэкономить место на носителе, то ниже
описывается, как упаковать драйверы. Если упакованные драйверы не используются, файл 7za.exe из папки $OEM$
можно удалить.
Упакованные драйверы
Если вы хотите использовать упакованные драйверы для экономии места, то запакуйте их с помощью 7-zip (можно
использовать и любой другой архиватор, но тогда не забудьте изменить в файле Drivers.cmd команду и ключи на
распаковку), назовите файл Drivers.7z и разместите его в корне $OEM$\. При установке драйверы автоматически
распакуются в %SystemDrive%\Drivers. Не забудьте удалить эту папку впоследствии (из cmdlines.txt или при
первом входе в систему), если, конечно, не планируете ее в использовать в дальнейшем.
Как это все работает
У вас должна получиться примерно такая структура папок и файлов:
На стадии установки T-39 программа установки Windows запускает файл Drivers.cmd, который:
- прежде всего останавливает процесс установки (используя утилиту Process.exe)
- затем запускает WatchDriverSigningPolicy.exe, которая позволяет устанавливать неподписанные
драйверы
- после этого определяется, есть ли в рабочей папке ($OEM$\Drivers) файл Drivers.7z, если есть то
распаковывается в %SystemDrive%\Drivers
- затем запускается утилита SetupCopyOEMInf.exe, которая сканирует все папки и подпапки в $OEM$\Drivers
(или %systemdrive%\Drivers - если используются запакованные драйверы) и копирует все inf файлы в папку
%windir%\Inf
- и наконец, процесс установки возобновляется
Примечания
Этот метод не работает для установки RAID, SATA и SCSI драйверов.
Утилита WatchDriverSigningPolicy.exe, иногда не срабатывает и появляется диалог о неподписанности
драйвера.
Если вы используете мультизагрузочный диск (с несколькими дистрибутивами), то при добавлении драйверов у вас не
должно быть пробелов в SourcePath (название каталога, расположенного в корне носителя и содержащего дистрибутив).
Например, не будет работать:
CD:\XP Pro\$OEM$\Drivers\nVidia ForceWare 77.72\
Замените пробел в XP Pro на какой-нибудь символ и
CD:\XP-Pro_A\$OEM$\Drivers\nVidia ForceWare 77.72\
будет работать.
Вы можете спокойно подправить файл Drivers.cmd под свои нужды (поменять пути, названия файлов и т.д.).
Если вы не хотите держать файлы Drivers.cmd, nircmd.exe, Process.exe,
SetupCopyOEMInf.exe, WatchDriverSigningPolicy.exe в корне директории $OEM$, то можно переместить
их, например, в каталог $OEM$\Drv. В таком случае внутри этой папки нужно создать еще одну папку Drivers, в которой
будут лежать незапакованные драйверы и не забыть поменять путь до файла Drivers.cmd в файле
winnt.sif в строке Arguments: (%I$OEM$) на (%I$OEM$\Drv).