Маркерные файлы-пустышки
Если вы используете несколько файлов ответов с OEM установкой (т.е. предположим вам нужны разные наборы настроек и софта), то вам нужны и разные папки $OEM$, но к сожалению при установке с CD (DVD), OEM файлы могут находиться только в корне диска в папке $OEM$ (переменная OemFilesPath= в winnt.sif почему-то игнорируется, видимо используется только при локальных и сетевых установках).
Для того чтобы обойти это ограничение я решил использовать батник, который по маркерному файлу определяет какой из файлов ответов использовался и в соответствии с этим ищет инфу в той или другой папке. Маркерный файл - это файл пустышка, который распаковывается из SFX архива за 39 минут до окончания установки.
Для этого есть специальный ключ:
[GuiUnattended]
DetachedProgram = "%SystemDrive%\Temp\dummy1.exe"
Из примера видно что файл распаковывается с жесткого диска, т.к. все архивы попадают туда во время текстового этапа установки вместе со всеми другими OEM файлами (в моем случае из папки $OEM$\$1\Temp). В это время копируются все архивы содержащие в себе по одному маркерному файлу (dummy1.exe, dummy2.exe и т.д.), а на этапе Т-39 распаковывается только нужный, указанный в файле ответов. Чтобы файл распаковался в нужную директорию (Temp), необходимо задать соответствующие настройки SFX архиву WinRAR. Это можно сделать во время создания архива через закладку Дополнительно) или прямо в закладке Комментарий:
;The comment below contains SFX script commands
Path=%SystemDrive%\Temp
Silent=1
Overwrite=1
Таким образом когда наступает время применения файлов настроек и установки программ, с помощью пакетного файла можно направить установку в нужную папку к нужным файлам. В моем случае используется bat-файл choice.bat, который запускается из cmdlines.txt
[COMMANDS]
"choice.bat"
и содержит следующие условия:
cmdow @ /HID @echo off
if exist %systemdrive%\Temp\dummy1.fle goto START1 if exist %systemdrive%\Temp\dummy2.fle goto START2 .... goto END :START1 REGEDIT /S Tweaks1.reg .\RunOnce1.cmd .\WinMUI\Muisetup.exe /i 0419 /d 0419 /l /f /r /s goto END
:START2 REGEDIT /S Tweaks2.reg .\RunOnce2.cmd goto END ...
:END
dummy1.fle - это и есть маркерный файл, распакованный из dummy1.exe. Можно использовать и копирование вместо распаковки, но при копировании появляется консольное окно, а я использовал WinRAR SFX архив, поэтому распаковка происходит незаметно. Но как правильно недавно подметил один человек, для того чтобы не появлялась консоль можно компилить батники в исполнимые файлы exe :)
Директория $ОЕМ$ в нашем случае выглядит так:
В данном примере при первом варианте установки (START1) будет использован RunOnce1.cmd для инсталляции ПО, импортированы твики реестра из Tweaks1.reg, а также установлен MUI. При втором варианте установки (START2) соответственно используются RunOnce2.cmd и Tweaks2.reg, а MUI не устанавливается вовсе. Как вы понимаете, это всего лишь пример, приведенный для наглядности. Расположение файлов и команды измените на ваше усмотрение.
Теперь, когда структура диска готова, нужно подготовить мультизагрузку при помощи Bootable CD Wizard)