Бродя по темным закоулкам Technet и просматривая одним глазом DDK и SDK KIT для Win98 я наткнулся на описание
загадочной секции использующейся для установки через
sysoc.inf. Я подозревал, что это штатная секция INF файлов, просто не сильно
афишировавшаяся. Итак,
Секция [Optional Components]
Синтаксис:
Код:
![Выделить весь код](images/misc/selectcode.png)
[Optional Components]
Имя секции -ссылка на секцию в файле которую надо исполнить для установки
.....
[Имя секции] - сама установочная секция
Данная секция служит для добавления устанавливаемого приложения в список оснастки
"Установка\Удаление программ \Компоненты Windows"
Секция
не будет исполнена при попытке выполнить файл по правому щелчку мышью, через команду [
Setupx.dll InstallHinfSection точка_входа] также
нельзя выполнить
[Optional Components]. В первом случае будет выполнятся секция
[DefaultInstall], во втором секция указанная точкой входа. Параметры
[Optional Components] будут игнорированны.
Насколько я понимаю для обработки дополнительных инструкций секции
[Optional Components] и существует
sysoc.inf, ocgen.dll, sysocmgr.exe.
В основном инструкции
[Optional Components] служат для управления отображения компонентов в окне
"Компоненты Windows".
Вернемся к синтаксису, в секцию установки могут быть добавлены следующие инструкции ОС:
Код:
![Выделить весь код](images/misc/selectcode.png)
OptionDesc=название дополнительного компонента
Tip=Подсказка в поле "Описание".
InstallDefault=0 | 1 ; Устанавливать компонент по умолчанию. 1=Да, 0=Нет.
IconIndex=Номер иконки для отображения
Parent= (имя секции\группы)группа или подгруппа в "Компоненты Windows" (Пример:игры windows относятся к Parent=AccessUtil, аддоны 3dParty к Parent=NonMS)
Needs=имя секции, имя секции
Include=inf-файл, [inf-файл]
OptionDesc это строковой параметр задающий название дополнительного компонента отображающегося в "Компоненты Windows". Может быть задан через
Strings.
Tip это текст подсказки в поле "Описание", ограничение - 255 символов. Может быть задан через
Strings.
IconIndex это иконка которая будет отображатся рядом с названием компонента, привожу список в оригинале:
Код:
![Выделить весь код](images/misc/selectcode.png)
0 Machine (base and display)
1 Integrated circuit chip
2 Display
3 Network wires
4 Windows flag
5 Mouse
6 Keyboard (3 keys)
7 Phone
8 Speaker
9 Hard disks
10 Comm connector
11 Diamond (default value)
12 Checked box
13 Un-checked box
14 Printer
15 Net card
16 Same as 0
17 Same as 0 w/ a sharing hand underneath
18 Unknown (question mark)
19 Atwork
20 Greyed check box
21 Dial-up networking
22 Direct cable connection
23 Briefcase
24 Exchange
25 Partial check
26 Accessories group
27 Multimedia group
28 Quick View
29 MSN
30 Calculator
31 Defrag
32 Generic document
33 DriveSpace
34 Solitaire
35 HyperTerminal
36 Object Packager
37 Paint
38 Screen saver
39 WordPad
40 Clipboard Viewer
41 Accessibility
42 Backup
43 Bitmap document
44 Character map
45 Mouse pointers
46 Net Watcher
47 Phone Dialer
48 System Monitor
49 Help book
50 Globe (international settings)
51 Audio compression
52 CD player
53 Media Player
54 Sound scheme
55 Video clip
56 Video compression
57 Volume control
58 Musica sound scheme
59 Jungle sound scheme
60 Robotz sound scheme
61 Utopia sound scheme
Parent это инструкция указывабщая является ли компонент подчиненным или родительским. Если параметр отсутствует, то менеджер дополнительных компонентов
считает что компонент родительский. Если указать несуществующий родительский компонент (например сам аддон) менеджер компонентов зависнет в попытке найти такого родителя.
Для всех Авторов Аддонов должен быть только один вариант Parent=NonMS (аддон 3dParty)- дабы не загаживать менеджер дополнительных компонентов (конечно, кроме особых случаев).
Needs указывает на секцию другого дополнительного компонента от которого зависит устанваливаемый компонент. Секция долна быть в этом же файле, в противном случае
необходимо использовать
Include.
Include присоединяет inf- файл стороннего компонента к текущей установке, что позволяет ссылатся на секции в присоединенном файле
InstallDefault скорее всего досталось в наследство от Win98, я пробовал ставить аддон с этим параметром=1 вместо
Modes=0,1,2,3 , аддон не поставился, но в списке
компонентов появился и позволил доустановить себя. У кого получится отпишитесь. Пока могу посоветовать использовать
Modes=0,1,2,3.
Пример:
Код:
![Выделить весь код](images/misc/selectcode.png)
[Optional Components]
InstallMyToys
InstallGames
[InstallMyToys]
OptionDesc=%Toys_DESC%
Tip=%Tomytoysys_TIP%
IconIndex=35 ;Иконка "Телефон"
Parent=MailApps
Needs=MSMAIL, MAPI, MicrosoftNetwork
Include=mos.inf, msmail.inf
CopyFiles=MyToysFiles
UpdateInis=MyToysLinks
AddReg=MyToysRegItems
[InstallOtherApps]
OptionDesc=%Other_DESC%
Tip=%Other_TIP%
IconIndex=4 ;windows mini icon for dialogs
CopyFiles=OtherFiles
UpdateInis=OtherLinks
AddReg=OtherRegItems
[Strings]
Toys_DESC="Почтовая утилита"
Toys_TIP="Дополнительные почтовые инструменты"
Other_DESC="Другие полезные утилиты"
Other_TIP="Калькулятор, очистка диска и монитор производительности"