Шаг 27 - INF файлы Windows

Операционная система Windows использует файлы с расширением INF. Это обычный текстовый файл очень похожий по структуре на INI файлы. В Windows он применяется для разных целей:

Для программистов конечно важное место занимают последние два варианта применения. Если Вы пишите драйвер для устройства Windows, то для его установки вам нужен этот файл. Вы, наверно, часто сталкивались с поиском этого файла при установке оборудования. На каждой инсталляционной дискете для драйверов монитора, сетевых карт и так далее присутствует этот файл. Можно запустить этот файл из проводника через всплывающее меню действием "установить" :-)

Второе его применение - возможность создания программ быстрой установки. Для установки программного обеспечения есть большое количество программ типа Setup Wizard. Но все они дописывают около 100 КБ или больше своего кода. Что делать, если это больше чем Ваша утилита вообще, или если Вы предпологаете распространять Вашу программу по интернету ? Вобщем используя INF файл у Вас есть возможность создать самому маленькую утилиту инсталляции. При этом сохранив функциональность и создав рабочую группу или запись в реестре для необходимости. Вот пример, как создается группа.

[DefaultInstall]
.......
UpdateInis  = Test.Inis
........

[Test.Inis]
setup.ini, progman.groups,, "group321=Test"

В INF файле можно описать практически все необходимое для инсталляции программы. При этом не надо знать функции API, например, для записи данных в реестр. Вот например как это делается в INF

[DefaultInstall]
......
AddReg = Test.Add.Reg

......

[Test.Add.Reg]
HKLM,%URJ1%,DisplayName,"%Test_Desc%"
......

[Strings]
......
URJ1 = "Software\Microsoft\Windows\CurrentVersion"
APPS_DESC       = "Accessories"
Test_Desc    = "Test App"
......

Но программа инсталляции все равно нужна. Правда в данном варианте она коротенькая совсем. Естественно она должна называться типа Setup.exe для красоты. Основное это то, что ваша программа инсталляции должна вызывать ShellExecuteEx и ей нужно передать местонахождение Вашего INF файла. При этом нужно дождаться окончания процесса его выполнения, тут поможет WaitForSingleObject.

Описание INF файла требует отдельного разговора, а вот идея его организации такова. Очень часто параметр ссылается на раздел, в котором другие параметры и тем самым моделируется дерево.

[DefaultInstall]
......
AddReg = Test.Add.Reg--------
			    |	
......			    |	
			    |	
[Test.Add.Reg] <-------------

Кроме того в разделе Strings можно создать константы, которые в последствии использовать в параметрах (%имя_константы%)

[Strings]
APPS_DESC       = "Accessories"

Да, если Вы опишите нестандартный раздел или ошибетесь, то он просто игнорируется. Это говорит о том, что для генерации INF файла надо бы использовать или самому написать утилиту :-) Правила INF файлов таковы:


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.