Формат INF-файла для создания компонентов в диалоге установки Windows немного отличается от обычного формата INF-файлов. Во-первых, основной блок INF-файла обязательно должен называться [Optional Components], иначе INF-файл работать не будет. Блок включает в себя список других блоков данного INF-файла. Каждый из описанных в [Optional Components] блоков определяет один раздел в диалоге установки компонентов Windows. Блок описания раздела установки компонента содержит следующие ключевые слова. OptionDesc — определяет название раздела, отображаемого в диалоге Установка компонентов Windows. Tip — указывает подсказку для раздела, отображаемого в нижней части диалога Установка компонентов Windows. Icon Index — определяет индекс значка, отображаемого напротив данного раздела в диалоге Установка компонентов Windows. Например, идентификатор 0 определяет значок компьютера, идентификатор 2 — монитора, 14 — принтера. Parent — указывает название блока INF-файла, описывающего раздел, который будет родителем для нашего раздела в диалоге установки компонентов Windows. Если данное ключевое слово отсутствует, то наш раздел будет отображаться непосредственно в диалоге установки конфигурации Windows. Uninstall — определяет блок INF-файла, вызываемый для данного компонента при установке созданного раздела (устанавливать можно только разделы, входящие непосредственно в список диалога установки компонентов (корневые), а не отдельно разделы, вложенные в корневой), если флажок напротив данного компонента будет снят. В блоке установки компонента можно также пользоваться такими стандартными ключевыми словами, как AddReg, BitReg, DelReg, CopyFiles и т.д. Все блоки, описанные в этих ключевых словах, будут выполняться при установке флажка напротив соответствующего компонента. Теперь добавим ссылку на наш компонент в файл sysoc.inf. Для того чтобы так сделать, необходимо в блок [Components] добавить строку следующего вида: hello=ocgen.dll, OcEntry, prim2.inf, , 7. Здесь test2 определяет идентификатор присоединяемого INF-файла, a prim.inf является названием самого присоединяемого файла. Стоит еще сказать, что созданный INF-файл должен находиться в каталоге %systemroot%\inf. ПРИМЕЧАНИЕ В строке также указывается название библиотеки и функция из этой библиотеки, которая будет устанавливать наши компоненты. Как правило, нет никакой разницы между различными функциями различных библиотек. Главное, чтобы они умели работать с диалогом установки компонентов. Поэтому была выбрана первая попавшаяся в файле sysoc.inf библиотека и функция для нее. На рис. 15.3 показан результат добавления компонентов. Рис. 15.3. Создание разделов диалогаЛистинг 15.13. Создание разделов в диалоге компонентов
[version]
signature="$Chicago$"
[Optional Components]
TopMain
Interface
Settings
HTMcomputer
Versus
[TopMain]
OptionDesc = Мои настройки
Tip = Варианты настройки интерфейса и конфигурации
IconIndex = 0
[Interface]
OptionDesc = Интерфейс Windows
Tip = Варианты настройки интерфейса
IconIndex = 4
Parent = TopMain
[Settings]
OptionDesc = Конфигурация Windows
Tip = Варианты настройки конфигурации компьютера
IconIndex = 16
Parent = TopMain
[HTMcomputer]
OptionDesc = Скрыть название моего компьютера
Tip = Скрывает название значка Мой компьютер
IconIndex = 0
Parent = Interface
AddReg = AddHTM
Uninstall = HTMUn
Modes = 0,1,2,3
[Versus]
OptionDesc = Отобразить версию на Рабочем столе
Tip = отображает версию операционной системы на Рабочем столе пользователя
IconIndex =4
Parent = Interface
AddReg =AddVersion
Uninstall =VersUn
Modes = 0,1,2,3
[AddHTM]
HKCR, "CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\ShellFolder", WantsFORDISPLAY, 0x00010001, 1
[AddVersion]
HKCU, "Control Panel\Desktop", PaintDesktopVersion, 0x00010001, 1
[HTMUn]
DelReg = HTMDel
[VersUn] AddReg = VersDel
[HTMDel]
HKCR, "CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\ShellFolder", WantsFORDISPLAY
[VersDel]
HKCU, "Control Panel\Desktop", PaintDesktopVersion, 0x00010001, 0