Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка Windows 2000/XP/2003 (http://forum.oszone.net/forumdisplay.php?f=32)
-   -   где прописать команду по внедрению inf файла (http://forum.oszone.net/showthread.php?t=128705)

Alexander_Ursu 15-01-2009 02:59 1008060

где прописать команду по внедрению 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 - если да, то в какой секции и с каким синтаксисом?

Надеюсь поставленные вопросы я изъяснил правильно - заранее спасибо за указания и ответы.

Vadikan 15-01-2009 03:22 1008069

Цитата:

Цитата Alexander_Ursu
Надеюсь поставленные вопросы я изъяснил правильно »

Вполне :) См. OSzone.net: Использование файла svcpack.inf для установки программ и импорта твиков реестра

Alexander_Ursu 15-01-2009 12:11 1008365

Хорошо, можно ли прописать таким синтаксисом:

[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 ?

Vadikan 15-01-2009 12:50 1008399

Цитата:

Цитата Alexander_Ursu
Хорошо, можно ли прописать таким синтаксисом:
[SetupHotfixesToRun]
rundll32 advpack.dll,LaunchINFSection nlite.inf,U »

Не знаю... проверьте и сообщите нам.

Цитата:

Цитата Alexander_Ursu
И где тогда разместить nlite.inf - в i386 или в i386\svcpack ? »

в i386\svcpack

Alexander_Ursu 15-01-2009 13:29 1008437

Хорошо, я попробую и отпишусь.
А есть ли другие способы кроме svcpack.inf? Ведь по сути в i386 лежат более 500 inf файлов. Все они в принципе имеют один и тот же формат. Поэтому я так полагаю, что похожие команды (имеется ввиду в данном случае - rundll32 advpack.dll,LaunchINFSection nlite.inf,U) для этих файлов где-то прописываются на исполнение.

jameszero 15-01-2009 13:43 1008449

Alexander_Ursu
Насчёт строки запуска не уверен, но возможно сработает и так, а я бы взял её в кавычки:
Код:

[SetupHotfixesToRun]
"rundll32 advpack.dll,LaunchINFSection nlite.inf,U"

В i386\svcpack положите rundll32.exe, а не nlite.inf
Файл nlite.inf после обработки nLite-ом уже есть в I386 и при установке копируется в %WinDir%\Inf. Интерпретатор advpack по умолчанию ищет inf-файлы в этой директории.

Alexander_Ursu 15-01-2009 18:00 1008730

Пробовал всеми рассмотренными вариантами с svcpack.inf - не получилось в полном объеме.

jameszero 15-01-2009 18:55 1008783

Alexander_Ursu
Что имеено не получилось?
Предложенный в предыдущем посте способ только что проверен на виртуальной машине.

Alexander_Ursu 16-01-2009 11:29 1009415

Первое, что бросается в глаза: в 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...

jameszero 16-01-2009 11:58 1009443

Alexander_Ursu
Цитата:

Цитата Alexander_Ursu
При использовании cmdlines.txt пользователь admin добавляется, а при использовании svcpack.inf - нет »

Этот нюанс оговорен в статье из второго поста темы.

Проверить отрабатывает ли inf из svcpack можно так:

Cоздать файл test.inf такого содержания:
Код:

[Version]
Signature=$Windows NT$

[u]
RunPreSetupCommands = RunNotepad

[RunNotepad]
notepad.exe

Сжать test.inf командой:
Код:

makecab <путь>\test.inf <путь>\TEST.IN_
и поместить его в I386 дистрибутива Windows XP.

Добавить в секцию [SourceDisksFiles] файла txtsetup.sif строчку:
Код:

test.inf = 100,,,,,,,20,0,0
Добавить в секцию [Files] файла dosnet.inf строчку (необходимо для установки с HDD):
Код:

d1,test.inf
Добавить в секцию [SetupHotfixesToRun] файла svcpack.inf строчку:
Код:

"rundll32 advpack.dll,LaunchINFSection test.inf,U"
Скопировать файл rundll32.exe в папку I386\SVCPACK дистрибутива Windows XP.

В результате установки полученной системы на этапе T12 (SVCPACK) будет запущен блокнот.
Эксперимент, разумеется, только тестовый, но он показывает, что inf-файл отрабатывает.

Alexander_Ursu 16-01-2009 16:16 1009643

Поковырял немного..

В файле 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 - это загадка.

jameszero 17-01-2009 13:35 1010449

Alexander_Ursu
Цитата:

Цитата Alexander_Ursu
Неисполняется только секция [TO]. Почему эта секция выполняется в cmdlines.txt - это загадка. »

Видимо потому, что в эту секцию вынесены действия, которые невозможно применить из SVCPACK.


Время: 18:57.

Время: 18:57.
© OSzone.net 2001-