Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314

Профиль | Отправить PM | Цитировать


NEW Новое приложение к Руководству, думаю, будет интересно даже опытным авторам аддонов.

Приложение 7. Секция [Optional Components]

читать дальше »
Бродя по темным закоулкам Technet и просматривая одним глазом DDK и SDK KIT для Win98 я наткнулся на описание
загадочной секции использующейся для установки через sysoc.inf. Я подозревал, что это штатная секция INF файлов, просто не сильно
афишировавшаяся. Итак,

Секция [Optional Components]

Синтаксис:

Код: Выделить весь код
[Optional Components]
Имя секции -ссылка на секцию в файле которую надо исполнить для установки
.....
[Имя секции] - сама установочная секция

Данная секция служит для добавления устанавливаемого приложения в список оснастки "Установка\Удаление программ \Компоненты Windows"
Секция не будет исполнена при попытке выполнить файл по правому щелчку мышью, через команду [Setupx.dll InstallHinfSection точка_входа] также
нельзя выполнить [Optional Components]. В первом случае будет выполнятся секция [DefaultInstall], во втором секция указанная точкой входа. Параметры
[Optional Components] будут игнорированны.

Насколько я понимаю для обработки дополнительных инструкций секции [Optional Components] и существует sysoc.inf, ocgen.dll, sysocmgr.exe.
В основном инструкции [Optional Components] служат для управления отображения компонентов в окне "Компоненты Windows".

Вернемся к синтаксису, в секцию установки могут быть добавлены следующие инструкции ОС:

Код: Выделить весь код
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 это иконка которая будет отображатся рядом с названием компонента, привожу список в оригинале:

Код: Выделить весь код
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.

Пример:

Код: Выделить весь код
[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="Калькулятор, очистка диска и монитор производительности"

-------

Ю-ху!


Последний раз редактировалось volk1234, 17-04-2008 в 03:40.

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:29, 17-04-2008 | #133