Показать полную графическую версию : Несколько вопросов по .INF
1. INF с секцией OptionalComponents.
Как быстрее и проще адаптировать его для установки вручную (контекстное меню - установить)?
Можно ли просто скопировать содержимое секции в DefaultInstall?
А можно ли как-то "сослаться" из DefaultInstall на OptionalComponents (или наоборот)?
2. INF вносит данные в HKCU.
Как обеспечить внесение этих данных для каждого нового юзера (при первом логине)?
Как обеспечить удаление этих данных при первом входе каждого юзера после деинсталяции программы?
придётся попробовать поднять тему :(
Вышеперечисленное абсолютно необходимо для полноценного использования "истинно многопользовательской" системы
INF вносит данные в HKCU.Не может быть :) Вы читали Руководство по работе с INF-файлами (Как обеспечить внесение этих данных для каждого нового юзера (при первом логине)?[/q]Не знаю, как с INFами, но где-то я публиковал CMD файл, импортирующий через regedit [url]http://forum.oszone.net/post-404318-36.html?
Эх, надо было просто поднять... Старой версии не осталось, а там специально в первой же строке было сказано, что, мол, и то-то читал, и там-то линки из шапки посетил и т.п. :) И вопросы там были разжёваны, а тут сократил до предела
"INF вносит данные" в куда я ему скажу, в пределах реестра, разумеется - AddReg blah-blah. :)
А тот же HKCU может пригодиться для работы софта (какой на это способен) сразу после установки.
Но если юзеров несколько, что делать с другими, и с Default User profile (не HKU\.DEFAUL)?
Как вариант возможно внесение необходимых данных и текущему юзеру после перелогина.
Но тогда это всё равно сводится к вопросу "а как сделать для каждого при первом входе".
В "Руководстве" же как раз те места, которые нужны ("более подробно в описании того-то") пусты. :(
Есть подозрение, что можно заюзать AdvancedINF-2 PerUserInstall, но как правильно?
Что значит "PerUserInstall=Имя единственной дочерней секции"?
Сделать, что-ли, вроде
[DefaultInstall]
AddReg=AddUserReg
PerUserInstall=ThisPerUserInstall
[ThisPerUserInstall]
rundll32.exe advpack,LaunchINFSection C:\Script.inf,AddUserRegНо тогда под текущим юзером это, похоже, отработает дважды?
И как тогда насчёт PerUserUNInstall?
CMD хороший, просто и со вкусом, хотя всё-таки это изврат.
В идеале нужно то же поведение, которое можно было видеть после установки некоторых старых МС-вских продуктов - например, ИЕ 4 или 4.5. Т.е. во время первого после установки входа в систему (для каждого юзера) десктоп не показывался сразу, а вместо этого висел месседж типа "обновление конфигурации" или что-то такое, ставились ярлычки, что-то регистрилось и т.д. и т.п.
Petya V4sechkin
26-04-2007, 16:12
VitRom
1. INF с секцией OptionalComponents.
Как быстрее и проще адаптировать его для установки вручную (контекстное меню - установить)?
Можно ли просто скопировать содержимое секции в DefaultInstall?
А можно ли как-то "сослаться" из DefaultInstall на OptionalComponents (или наоборот)?Аналогичные темы, возможно, там чего-нибудь полезное для себя найдешь:
http://forum.oszone.net/thread-82861.html
http://forum.oszone.net/thread-79336.html
Petya V4sechkin, спасибо, поиском х.. бы нашёл. В посте 8 (http://forum.oszone.net/post-579026-8.html) есть 90% ответа на мой 1-й вопрос. Неясной осталась лишь допустимость "наглой" ссылки на другую главную секцию.
И самое главное осталось - "Per-Every-User-(un)install"
Petya V4sechkin
27-04-2007, 10:52
VitRom
Насчет PerUserInstall подсказать не смогу (не использовал), поищи в доках. Главное - не забудь, что по правой кнопке мыши на inf-файле вызывается обычный setupapi.dll.
Petya V4sechkin, вся беда в том, что я уже искал, и не только там.
Всё, что попадается - только долбаный ДДК или его производные.
Или вообще ничего: http://search.msdn.microsoft.com/search/Default.aspx?brand=msdn&query=PerUserInstallИзвините, невозможно найти результаты, содержащие PerUserInstall
Советы по поиску
Поробуйте упростить сложные или слишком подробные запросы.Правда, что тут ещё упрощать - я не знаю.
по правой кнопке мыши вызывается setupapi.dll Спасибо, что подсказал. Хотя лучше бы знать, откуда это можно взять самому (читать-то я умею, в школе научили - было б что - вообще б без вопросов обошёлся).
Получается, использовать AdvancedInf в шелле я могу только прямой командой? Или AddReg в HKCU\runonce и перелогин?
Petya V4sechkin
27-04-2007, 11:44
VitRom
Спасибо, что подсказал. Хотя лучше бы знать, откуда это можно взять самомуЭто в реестре, раздел HKEY_CLASSES_ROOT\inffile\shell\Install. Собственно, по аналогии можно создать еще один пункт для установки с помощью advpack.dll. Или батником вызывать.
В принципе, для проверки выполнения из sysoc.inf можно попробовать тоже батником, типа как здесь (http://forum.oszone.net/post-576076-11.html).
Я имел в виду не "где посмотреть ассоциацию", :)
а "где брать аналогичную информацию" в применении к "стандартной" (нетвиканной) Винде.
Или подобные особенности вообще нигде не документированы, :o
и то, чем со мной поделились - результат именно того, что кому-то когда-то после долгого траха пришлось-таки самому смотреть реестр?
ЗЫ. В налево и направо склоняемом МСДН у меня лично всегда получалось найти только разные варианты долбаного ДДК, и всё.
Petya V4sechkin
27-04-2007, 12:24
VitRom
Ну ты просто залез в такие дебри, в которые здесь никто еще не залезал :)
Может, не надо усложнять (Uninstall для каждого юзера), какая в этом реальная необходимость? Если у кого-то что-то в ветке HKCU и останется, особой проблемы в этом не вижу.
Да и Install тоже в большинстве случаев делают до первого логона, а там, сам понимаешь, все изменения HKCU вносятся в Default-профиль.
dimich22
27-04-2007, 15:03
Раз уж тут появилась отдельная тема, то задам свой вопрос здесь.
Проявилась у меня одна проблема с регистрацией библиотеки из inf файла. Т.е. я все хочу довести до ума аддон findexer, но пока не получается. Смысл в чем: для появления панели findexer требуется зарегистрировать одну библиотеку, но findexer также требует еще vcredist2005 Так вот, если при создании аддона через sysoc.inf в инфе прописать секцию registerdll, то ничего не происходит - findexer не работает. Решил пойти другим путем - добавить в реестр в секцию runonce запуск батника с регистрацией библиотеки, но что меня поразило - runonce отрабатывает в этом случае на t13. Имя запускающему файлу дал z_fnd.cmd - специально, чтобы отрабатывался после vcredist.exe Но, в голову пришла сейчас мысль - м.б. он все равно отрабатывается позже? и надо тогда тоже создать самораспаковывающийся архив z_fnd.exe?
P.S. Спасибо DJ Electronic за поддержку, тестирование и несколько дельных мыслей по этому поводу.
P.P.S. Аддон, собранный методом svcpack отрабатывает на ура - проверено и реализовано DJ Electronic. Но хочется все-таки решить вопрос с методом sysoc.inf
Petya V4sechkin
27-04-2007, 15:19
dimich22
Решил пойти другим путем - добавить в реестр в секцию runonce запуск батника с регистрацией библиотеки, но что меня поразило - runonce отрабатывает в этом случае на t13.Да. Причем до выполнения Svcpack.
и надо тогда тоже создать самораспаковывающийся архив z_fnd.exe?Можно так.
Другой способ - перенос выполнения на RunOnce после первого логона. Пример в аддоне 1-MU (для этого надо использовать advpack.dll, а RegisterDlls приходится заменять на RegisterOCXs).
dimich22
27-04-2007, 16:06
RegisterDlls приходится заменять на RegisterOCXs).
А почему приходится? И в чем получается принципиальная разница. Просмотрев руководства, так и не понял.
Petya V4sechkin
27-04-2007, 17:05
dimich22
Не знаю, у меня при выполнении inf-файлов с помощью advpack.dll почему-то не работала секция RegisterDlls.
dimich22
27-04-2007, 18:08
Может, я что не так делаю, но у меня при такой строчке в inf-файле
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce","FindeXer_inf",0x20000,"%SystemRoot%\System32\rundll32.exe advpack.dll,LaunchINFSection %17%\wee.inf,RunOnceInst,0" все равно регистрация библиотеки происходит на T13
Petya V4sechkin
27-04-2007, 19:59
dimich22
Дык, два раза надо ;) В RunOnceInst второй такой же фокус.
dimich22
27-04-2007, 20:34
Можно поподробнее, для тупых :wink: А то что-то я торможу. Т.е. в этой строчке я ссылаюсь на RunOnceInst, а в ней я не регистрирую библиотеку, а опять пишу ту же строчку, только, например, со ссылкой на RunOnceInst1 и там только прописываю RegisterOcx? Я пытался проделать тот же маневр, но через батник, но не получилось.
Petya V4sechkin
27-04-2007, 20:37
dimich22
Да, примерно так.
Не знаю, почему у тебя не получилось через батник :)
dimich22
27-04-2007, 20:50
Я завтра попробую и отпишусь. Через батник пробовал так: в инфе прописывал запуск батника через runonce, в котором в свою очередь добавлялся запуск другого батника через runonce. Так вот, второй батник запускался практически сразу же, т.е. на T13.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC