| INF-файлы. Пишем программу установки в Блокноте. | |||||||||||||||||
| В данной статье мы на примерах рассмотрим, что представляет собой INF-файл, как с его помощью работать с файлами и реестром, создавать ярлыки, запускать программы и многое другое. Как известно, для более не менее серьезного программного продукта обычно требуется специальная программа инсталляции, с помощью которой пользователь сможет легко установить и также легко удалить сам продукт. Существует много инструментальных средств, позволяющих быстро создавать инсталляционные пакеты. Однако, большинство из них добавляют к исходному размеру продукта 200-500 килобайт. А ведь это далеко не всегда приемлемо. Серьезный продукт еще не означает большой по размеру. И если вы хотите сделать инсталляцию доступной в Сети, то эти 200-500 килобайт могут сильно сказаться на популярности продукта. Как выйти из подобной ситуации? Прежде, чем ответить на данный вопрос рассмотрим, как это делают инсталляционные пакеты корпорации Microsoft. Любой из таких пакетов Вы можете открыть в архиваторе WinZip. Обратите внимание на файлы с расширением *.inf. При установке программы операционная система обращаеться к одному из таких файлов и руководствуеться его условиями (или сценарием) установки. Именно с помощью INF-файлов можно удалять, копировать другие файлы, добавлять информацию в реестр, в INI-файлы, создавать ярлыки, вообщем делать тоже самое, что и громоздкие программы установки. При этом мы получим приблизительно 2-4 килобайта лишнего веса. Давайте и мы заставим операционную систему Windows работать на нас и перейдем к изучению спецификации INF-файлов. INF-файл представляет собой текстовый файл, который, как уже говорилось ранее, содержит условия установки программного обеспечения. Чтобы запустить INF-файл, нужно щелкнуть по нему правой кнопкой мыши и выбрать в открывшемся контекстном меню параметр "Установить" (Install). Но для дистрибутива лучше воспользоваться для этого WinZip Self-Extractor, который поддерживает запуск INF-файлов. С помошью данной программы и со знанием INF-файлов можно создавать профессиональные инсталляционные пакеты. Основную информацию в INF-файле содержат следующие секции (более сложные INF-файлы могут иметь дополнительные секции).
Секция [Version] обязательно должна включать данную строку: Эта секция определяет стандартный заголовок для всех .inf файлов Microsoft Windows. Если сигнатура не $Chicago$, Windows не примит .inf файл, как принадлежащий любому из классов устройств признанных Windows. При написании сигнатуры Вы можете использовать как верхний так и нижний регистры - $Chicago$ или $CHICAGO$. Секция установки [DefaultInstall] может содержать следующие данные:
CopyFiles=копирование файлов Секция установки идентифицируют дополнительные секции в .inf файле, которые содержат установочную информацию для компонента. Например:
|
| Цифровые обозначения папок, применяемые в INF-файлах. | |
| Для идентификации системных каталогов inf- файл использует цифровые идентификаторы, которые представлены ниже. Корневой загрузочный диск C:\ указан условно. Программа установки будет сама определять букву диска.
10 - C:\WINDOWS Если нужно скопировать файл в папку WEB, которая находиться в каталоге WINDOWS, пропишите следуещее:
Никаких пробелов после запятой быть не должно. Также можно поступать с другими папками, находящимися в определенных каталогах. |
| Секция копирования файлов (CopyFiles). | ||||||||||||||||
| В секции CopyFiles указываються имена подсекций, которые содержат названия файлов для копирования с исходного диска в папку(и) назначения. Папка назначения определена в секции [DestinationDirs] .inf файла. Следующий пример копирует два файла:
Цифры через три запятые обозначают дополнительные флаги при копировании файлов и могут быть следующими:
Раздел CopyFiles может копировать файл непосредственно в секции [DefaultInstall]. Для этого перед файлом нужно поставить символ @. Следующий пример копирует два файла (выделены красным):
|
| Секция переименования файлов (RenFiles). | |
| Параметр RenFiles содержит секции, которые в свою очередь содержат имена файлов для переименования. Папка, где будет происходить переименование должна быть определена в секции [DestinationDirs] INF-файла. Следующий пример переименовывает два файла из *.bmp в *.txt:
Все старые имена файлов (Example1.bmp, Example2.bmp) должны быть определены в секции [SourceDisksFiles]. |
| Секция удаления файлов (DelFiles). | |
| Параметр DelFiles содержит секции, которые содержат имена файлов для удаления. Папка, где будет происходить удаление, как всегда, должна быть определена в секции [DestinationDirs] INF-файла. Следующий пример удаляет два файла:
|
| Секция добавления в реестр (AddReg). | |||
| В параметре AddReg указываются секции, которые содержат информацию о добавлении или изменении ключей, значений в реестре. Следующий пример регистрирует Вашу копию операционной системы Windows.
С помощью этого файла в реестр добавляеться следующая информация:
Обратите внимание на запятые в inf файле. Если нужно добавить в реестр параметр по умолчанию, запятые должны быть проставлены по-другому. Например, в расмотренном нами ключе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion поставим параметр по умолчанию равным единице (1):
Ниже представлены корневые имена реестра: HKCR - HKEY_CLASSES_ROOT |
| Секция удаления из реестра (DelReg). | |
В параметре DelReg указываются секции, которые содержат информацию об удалении подключей с параметрами и значениями из реестра. Следующий пример удаляет подключ Graphviz со всеми параметрами и значениями раздела реестра - HKEY_CURRENT_USER\Software\AT&T\Graphviz.
Корневые имена реестра естественно обозначаються также, как и в предыдущем разделе о добавлении информации в реестр. |
| Отображение и запуск файлов. | ||
| В процессе установки можно прервать выполнение INF файла для показа пользователю какого-нибудь документа, после закрытия которого установка продолжиться, или запустить определенный процесс. Следующий пример отображает файл справки About.hlp, текстовый файл About.txt и запускает другой INF-файл - Example.inf.
После того, как определенные в секции [ExampleView] команды выполнятся, записи, добавленные в реестр, будут автоматически удалены из него. Таким способом можно запускать и другие процессы, например, аплеты Панели управления:
|
| Секция изменения данных в .INI-файлах (UpdateInis). | |
| В данном примере показано как можно с помощью inf-файла изменить содержимое ini-файла.
Как вы успели заметить мы указали каталог Program Files как PROGRA~1, т.е. указали с коротким именем. В INF-файлах есть некоторые проблемы применение длинных имен файлов. Но об этом мы поговорим в другой статье... |
| Создание и удаление ярлыков в меню Пуск. | ||
| С помощью INF-файлов можно также создавать и удалять ярлыки в меню Пуск. Ярлык можно создать в уже созданной группе программ. Если таковой не существует, она будет создана автоматически. Следующий пример создает группу программ "Windows + +" в меню "Пуск\Программы" и ярлыки к утилитам winipcfg.exe (Конфигурация IP), Regedit.exe (Редактор реестра) и Winfile.exe (Диспетчер файлов). Все они есть у Вас на компьютере или должны быть в зависимости от операционной системы и находяться в папке С:\Windows.
Ярлык прописуеться в таком порядке:
1. Название группы программ "Windows + +". (выделено синим) Параметр %30%\ определяет корневой диск. Если Вы хотите создать ярлык к файлу, который находиться в каталоге Program Files смело прописывайте полный путь (не используйте короткие имена - 8.3 имена), например, %30%\Program Files\Setup Generator Pro\Sgpro.exe. Для удаления ярлыка нужно убрать все записи, указанные после Имени ярлыка. В следующем примере удаляется ярлык Конфигурация IP из программной группы Windows + +
Если Вы удаляете один ярлык из программной группы, а там присутствуют и другие, то удаление не затронет другие ярлыки. Для полного удаления программной группы нужно прописать данное действие для каждого ярлыка. |
| Выполнение INF-файла в командной строке. | |
| В командной строке INF-файл можно выполнит следующей конструкцией:
Параметр DefaultInstall - это имя секции, которая будет выполняться. В команде его можно заменить на любое другое (если секция с таким именем не будет найдена, то ничего не будет "выполняться", и сообщений об ошибках тоже не будет). Параметр 132 - режим перезагрузки после выполнения inf файла. Существуют следующие значения этого параметра:
0 или 128 - не перезагружать компьютер. Иногда нужно перезаписать файл, который используется системой. В таком случае примените значение, отвечающее за перезагрузку. Сразу после перезагрузки произойдет перезапись файлов. Параметр Путь\inf_файл нельзя брать в кавычки. Пробелов в нeм тоже быть не должно т.е. надо использовать 8.3 имена. Данная статья не претендует на полноту, но, надеюсь, поможет Вам освоить INF-файлы хотя бы поверхностно. Не бойтесь экспериментировать, но будьте предельно осторожны, особенно с процессами удаления. |
| Copyright © 2002-2008 by Vladimir Drigalkin aka LENIN INC. All Rights Reserved. |