Установка INF-файлов
Файлы Setup Information (Информации об установке) имеют расширение .inf; я называю их INF-файлами. Setup API (Application Programming Interface - API установки) Windows ХР использует INF-файлы для создания сценариев инсталляций. Большинство людей связывает INF-файлы с установкой драйверов устройств, но приложения также часто их используют. Большинство действий, которые вы связываете с установкой драйверов устройств и приложений, доступны при посредстве INF-файлов. Вы можете копировать, удалять и переименовывать файлы. Вы можете добавлять, изменять и удалять значения из реестра. Вы можете устанавливать и запускать службы. Можно устанавливать что угодно с помощью INF-файлов. Например, вы можете использовать их для конфигурирования настроек в реестре. Вы также можете создать INF-файлы, которые пользователи смогут деинсталлировать, используя Add Or Remove Programs (Установка и удаление программ).
INF-файлы очень похожи на INI-файлы. Это текстовые файлы, которые содержат разделы, которые имеют вид [Разделы]. Каждый раздел содержит элементы, иногда называемые свойствами, которые имеют вид Имя=3начение. Windows ХР поставляется с великолепным редактором INF-файлов: Notepad (Блокнотом). Когда вы создаете новый INF-файл с помощью блокнота, убедитесь, что вы заключили имя файла в кавычки или выбрали All Files (Все файлы) в списке Save As Туре (Тип файла) диалогового окна Save As (Сохранить как). Таким образом, ваш файл будет иметь расширение .inf, а не расширение .txt. Установка INF-файла очень проста: сделайте щелчок правой кнопкой мыши на INF-файле, а затем выберите Install (Установить). Чтобы распространять INF-файл и не заставлять пользователей устанавливать его вручную, используйте следующую команду, заменив Filename именем вашего INF-файла. (Это командная строка, которую Windows ХР ассоциирует с расширением файла .inf в реестре.)
Листинг 9.1 показывает простой INF-файл. Первый раздел, [Version], обязателен. Имя второго раздела может быть любым, но обычно это [Defaultlnstall], так что пользователи могут щелкнуть правой кнопкой мыши на файле, чтобы установить его. Этот раздел посвящен разбору командной строки, которую вы только что увидели перед этим параграфом. Командой является rundll32.exe, которая исполняет функцию API из Setupapi.dll, с именем InstallHinf Section. Следующий элемент командной строки, Defaultlnstall, является именем раздела установки. Число 132, которое вы видите перед именем файла, говорит setup API, что он должен запросить пользователя перед перезагрузкой компьютера, если зто необходимо. Последний элемент командной строки - это имя устанавливаемого INF-файла. Как я упоминал, из-за того, что эта команда ассоциируется Windows ХР с расширением файлов .inf, вы должны присваивать разделу имя [Defaultlnstall]. В этом разделе вы увидите две директивы, AddReg и DelReg. Директива AddReg=Add.Settings добавляет настройки, содержащиеся в разделе [Add.Settings]. Директива DelReg=Del.Settings удаляет настройки, перечисленные в разделе [Del.Settings]. Имена этих разделов произвольны; вы должны выбрать осмысленные имена и придерживаться их, чтобы не перепутать чего-либо в дальнейшем.
Листинг 9.1. Example.inf
[Version]
Signature=$CHICAGO$ [Defaultlnstall]
AddReg=Add.Settings DelReg=Del.Settings
[Add.Settings] HKCR,regfile\shell„0,”edit”
[Del.Settings]
HKCU,Software\Microsoft\Windows\CurrentVersion\Applets\Regedit
Это было введение в INF-файлы. Разделы, которые следуют за этим, описывают, как писать различные части INF-файлов. Я обращаю особое внимание на использование INF-файлов для редактирования реестра, но вы можете использовать их и для многих других задач. Превосходным ресурсом по написанию INF-файлов является http:// msdn.microsoft.com /library/en-us/install/hh/install/inf-forma t_7soi.asp на веб-сайте Microsoft. Это раздел INF File Sections and Directives (Разделы и директивы INF-файлов) из Windows Driver Development Kit (Набор для разработки драйверов для Windows - DDK). Не думайте, что если эта информация размещена в DDK, то она не для вас; она достаточно проста и полезна во многих других случаях, а не только при разработке драйверов.