где прописать команду по внедрению inf файла
Я долгое время пользуюсь программой nLite для автоматизации установки. Мне она нравится и вполне подходит для моих нужд. Но сегодня задался следующим вопросом: все изменения, которые делает nLite, прграмма вносит либо непосредственно в существующие inf файлы либо в свой собственный - i386\nlite.inf. Но команду внедрения (применения) своего nlite.inf файла - "rundll32 advpack.dll,LaunchINFSection nlite.inf,U" - программа прописывает в cmdlines.txt в $OEM$. Так вот - я хочу избавиться от директории $OEM$ и тем самым мне нужно эту команду прописать где-нибудь в другом месте.
Где или как можно прописать эту команду ("rundll32 advpack.dll,LaunchINFSection nlite.inf,U") для того, что бы она корректно отработала содержимое nlite.inf точно так же, как и в cmdlines.txt? Либо же, есть ли возможность "расбросать" содержимое этого файла по другим, -уже существующим, inf файлам? Возможно ли эту команду прописать в svcpack.inf - если да, то в какой секции и с каким синтаксисом? Надеюсь поставленные вопросы я изъяснил правильно - заранее спасибо за указания и ответы. |
Цитата:
|
Хорошо, можно ли прописать таким синтаксисом:
[SetupHotfixesToRun] rundll32 advpack.dll,LaunchINFSection nlite.inf,U или же все-таки нужно создавать командный файл .cmd (.bat), т. е.: nlite.cmd: rundll32 advpack.dll,LaunchINFSection nlite.inf,U svcpack.inf: ... [SetupHotfixesToRun] nlite.cmd ... И где тогда разместить nlite.inf - в i386 или в i386\svcpack ? |
|
Хорошо, я попробую и отпишусь.
А есть ли другие способы кроме svcpack.inf? Ведь по сути в i386 лежат более 500 inf файлов. Все они в принципе имеют один и тот же формат. Поэтому я так полагаю, что похожие команды (имеется ввиду в данном случае - rundll32 advpack.dll,LaunchINFSection nlite.inf,U) для этих файлов где-то прописываются на исполнение. |
Alexander_Ursu
Насчёт строки запуска не уверен, но возможно сработает и так, а я бы взял её в кавычки: Код:
[SetupHotfixesToRun] Файл nlite.inf после обработки nLite-ом уже есть в I386 и при установке копируется в %WinDir%\Inf. Интерпретатор advpack по умолчанию ищет inf-файлы в этой директории. |
Пробовал всеми рассмотренными вариантами с svcpack.inf - не получилось в полном объеме.
|
Alexander_Ursu
Что имеено не получилось? Предложенный в предыдущем посте способ только что проверен на виртуальной машине. |
Первое, что бросается в глаза: в nlite есть возможность добавлять пользователей. Эти команды прописаны в секции [TO], они выглядят примерно так (AddReg = TO):
[TO] ... HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce","nlite_post_02",0x00000000,"nhelper net1 accounts /maxpwage:unlimited" HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce","nlite_post_03",0x00000000,"nhelper net1 user """"admin"""" /add /passwordreq:no" HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce","nlite_post_04",0x00000000,"nhelper net1 localgroup """"Администраторы"""" """"admin"""" /add" При использовании cmdlines.txt пользователь admin добавляется, а при использовании svcpack.inf - нет. Конечно я понимаю, что пользователя можно добавить другим способом, но т.к. не исполняются эти записи секции [TO], то скорее всего не исполняется вся секция в целом и нет гарантии, что остальные секции также исполняются в полном обьеме. Проверить, исполняются ли все записи из nLite.inf я не имею возможности - там у меня их около 400... |
Alexander_Ursu
Цитата:
Проверить отрабатывает ли inf из svcpack можно так: Cоздать файл test.inf такого содержания: Код:
[Version] Код:
makecab <путь>\test.inf <путь>\TEST.IN_ Добавить в секцию [SourceDisksFiles] файла txtsetup.sif строчку: Код:
test.inf = 100,,,,,,,20,0,0 Код:
d1,test.inf Код:
"rundll32 advpack.dll,LaunchINFSection test.inf,U" В результате установки полученной системы на этапе T12 (SVCPACK) будет запущен блокнот. Эксперимент, разумеется, только тестовый, но он показывает, что inf-файл отрабатывает. |
Поковырял немного..
В файле nLite.inf была секция [nLite] [nLite] OptionDesc = "nLite" Tip = "Windows component removal adjustments and tweaks." Modes = 0,1,2,3 DelReg = P AddReg = T AddReg = TO BitReg = B Я ее подкоректировал объединив директивы AddReg, т.е. получилось: [nLite] OptionDesc = "nLite" Tip = "Windows component removal adjustments and tweaks." Modes = 0,1,2,3 DelReg = P AddReg = T,TO BitReg = B Подкорректировал саму секцию: [TO] ... HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce","nlite_post_02",0x00000000,"net accounts /maxpwage:unlimited" HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce","nlite_post_03",0x00000000,"net user admin /add /passwordreq:no" HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce","nlite_post_04",0x00000000,"net localgroup Администраторы admin /add" После этого она начала отрабатываться полностью (без помощи svcpack.inf и cmdlines.txt). Единственная проблема теперь после установки автологин проходит в учетную запись Админимтратор, но не в запись admin А по поводу моего самого первого вопроса: nLite.inf прописан в SYSOC.inf наряду с другими inf файлами и исполняется наверное именно там и скорее всего исполняется корректно. Неисполняется только секция [TO]. Почему эта секция выполняется в cmdlines.txt - это загадка. |
Alexander_Ursu
Цитата:
|
Время: 18:57. |
Время: 18:57.
© OSzone.net 2001-