Вопрос по синтаксису inf-файлов

Объясняю ситуацию: решил сделать собственный пак для интеграции .Net Framework в дистрибутив Винды (1.1SP1+2.0 для W2K и 1.1SP1+3.0 для WXP/W2K3), однако не для бесключевой инсталляции, а для интеграции в апплет "Установка и удаление компонентов Windows", с последующей установкой из него и расположением инсталлятора на установочном диске, потому как мне так кажется удобнее...
Сами пакеты взял уже в перепакованном виде (с интеграцией хот-фиксов и русского языкового пакета) у Пети Васе4кина с ОсЗоны (только в паке фрэймворка 1.1 изменил конфигурационный файл SFX и соответственно отредактировал/добавил cmd-файлы, чтобы оный пак понимал ключ -ai); далее запаковал EXE'шники инсталляторов в CAB'ы и добавил в файлы установки Винды следующее (это для винтукея; для ХР/2К3 DotNet2.* соответственно заменяется везде на DotNet3.*):

В sysoc.inf


DotNet11=ocgen.dll,OcEntry,DotNet11.inf,,7
DotNet2=ocgen.dll,OcEntry,DotNet2.inf,,7

В dosnet.inf

d1,DotNet11.cab
d1,DotNet11.inf
d1,DotNet2.cab
d1,DotNet2.inf

И в txtsetup.sif

DotNet11.cab    = 1,,,,,,_x,,0,0
DotNet11.inf    = 1,,,,,,,20,0,0
DotNet2.cab    = 1,,,,,,_x,,3,3
DotNet2.inf    = 1,,,,,,,20,0,0

Смысл всего вышеизложенного, надеюсь, понятен (а если непонятен, то и незачем читать дальше wink ), дело осталось за малым - написать сами inf-файлы... roll
Получилось примерно вот что (пример для одного из пакетов, второй inf - полная аналогия):
[Version]
Signature = "$Windows NT$"
Class = NoDriver
ClassGuid = {8ECC055D-047F-11D1-A537-0000F8753ED1}

[SourceDisksNames]
1 = ".NET Framework v1.1 SP1 Multilanguage Component", DotNet11.cab,, "I386"

[SourceDisksFiles]
DotNet11.exe = 1

[DestinationDirs]
DefaultDestDir = 30, Temp
DotNet11.TemporaryCopy = 30, Temp

[DefaultInstall]
CopyFiles = DotNet11.TemporaryCopy
AddReg = DotNet11.RunInstall
RunPostSetupCommands=Cmd.DelFiles

[Optional Components]
DotNet11

[DotNet11]
OptionDesc = "Компонент .NET Framework v1.1 SP1"
Tip = "Динамическая среда выполнения .NET"
IconIndex = *, fp40ext.dll, 102
SizeApproximation = 196000000
CopyFiles = DotNet11.TemporaryCopy
Run = DotNet11.RunInstallEx
Uninstall = DotNet11.Uninstall

[DotNet11.Uninstall]
Run = DotNet11.RunUninstallEx

[DotNet11.TemporaryCopy]
DotNet11.exe

[Cmd.DelFiles]
rundll32.exe advpack,DelNodeRunDLL32 "%30%\Temp\DotNet11.exe"

[DotNet11.RunInstall]
HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup,"Run Setup Installation ...",,"%30%\Temp\DotNet11.exe -ai"

[DotNet11.RunUninstall]
HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup,"Run Setup Uninstallation ...",,"%11%\MsiExec.exe /X{CB2F7EDD-9D1F-43C1-90FC-4F52EAE172A1} /qb-!"
HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup,"Run Setup Uninstallation ...",,"%11%\MsiExec.exe /X{2BB372D9-52B4-410A-BC1A-FEAB63181EEF} /qb-!"

[DotNet11.RunInstallEx]
Commandline="%30%\Temp\DotNet11.exe -ai"
WorkingDir = 30, Temp
TickCount=500

[DotNet11.RunUninstallEx]
Commandline="%11%\MsiExec.exe /X{CB2F7EDD-9D1F-43C1-90FC-4F52EAE172A1} /qb-!"
Commandline="%11%\MsiExec.exe /X{2BB372D9-52B4-410A-BC1A-FEAB63181EEF} /qb-!"
WorkingDir = 11
TickCount=500

Комментарии к строкам удаления (RunUninstall и RunUninstallEx):
1) Строк удаления две, потому как ставим-то мы один интегрированный пакет, а удалять нужно два - сам фрэймворк + его лангпак;
2) Путей для удаления в "нормальном" виде (типа %windir%\Microsoft.NET\Framework\...\install.msi) у _этих_ пакетов нету - в реестре в Uninstall для всех версий (1.1, 2.0 и 3.0) прописывается строка вида MsiExec.exe /X{...} (хотя при "обычной" инсталляции для 2.0/3.0 они создаются).

В общем, основную часть задачи я выполнил - компонент в оснастке "Установка компонентов Windows" появился, устанавливается при добавлении через оный апплет вполне корректно, а вот с удалением неувязочка - не получается оно оттуда (точнее, делает вид, что удаляет, но при этом файлы остаются на месте, и в самой "Установке и удалении программ" все также видны фрэймворк с его хот-фиксами и языковым пакетом; при нажатии кнопки деинсталляции в "Установке и удалении" все деинсталлируется вполне корректно)...
Собственно, вопрос - где ошибка (про гены не отвечать, я и сам знаю wink )?..
Ну и уж до кучи - правильно ли я прописал удаление установочного пакета после инсталляции (просто в первых версиях про это забыл и добавил только что, еще не успел проверить)?..
Проблема еще осножняется тем, что сколько я не рыл MSDN и вообще Инет, _полной_ документации по скриптам на базе inf-файлов я нигде так и не нашел - все какие-то "куски" разной степени подробности, типа, как угадал, так и сделал... roll

Аватар пользователя MmM

Дядя Илья ... если есть необходимость могу подлечить MSDN от декабря сего года (благо он ощутимо похудел) ... сам не рыл по этому поводу.
А по теме ... не пробовал смотреть, что происходит при нажатии на кнопочку деинсталировать ??? (Ну и ессно сравнить с тем, что происходит у тебя)

Аватар пользователя ivp

MmM писал(-а):
... если есть необходимость могу подлечить MSDN от декабря сего года (благо он ощутимо похудел) ...

Был бы премного обязан (как обычно wink )...

MmM писал(-а):
... не пробовал смотреть, что происходит при нажатии на кнопочку деинсталировать ??? (Ну и ессно сравнить с тем, что происходит у тебя)

Пытаюсь уже, только вот понимаю, увы, мало (хотя все очень "похоже на правду"); сейчас занялся анализом некоторых файлов, включенных в sysoc.inf, вроде accessor.inf и games.inf...

- Ситчик веселенький есть?..
- Приезжайте, обхохочетесь!..

Аватар пользователя MmM

Насколько я понимаю, там должен вызываться со страшными ключами некий hta файлик

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей