Формат inf что это

INF – Файл конфигурации установки программ (Setup Information File)

Расширение INF

Чем открыть файл INF

В Windows: Microsoft Windows, Блокнот, NotePad++, Любой текстовый редактор
В Mac OS: MacroMates TextMate, Любой текстовый редактор

Описание расширения INF

Популярность: Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

Расширение INF – это текстовый файл, который содержит информацию об устройствах и файлах для установки, например, образы драйверов, информация о реестре, расположение файлов и директорий, информация о версии и так далее, всё, что используется компонентами установки.

.INF состоит из множества названных секций, каждая из которых содержит одну или более позиций. Каждый раздел начинается с имени секции в квадратных скобках. Разделы имеют определенную цель (например, для копирования файлов или добавить записи в реестр) и содержат элементы, имеющие вид Имя=Значение. INF-файлы по сути похожи на INI-файлы. Файлы INF в основном используются для установки драйверов и системных инсталляционных пакетов Microsoft Windows, но так же могут быть использованы и для установки других приложений.

ПРИМЕЧАНИЕ: Самый известный INF-файл – это Autorun.inf, используемый для автоматического запуска или установки приложений в операционной системе Windows (начиная с версии Windows 95). Этот файл должен находиться в корневом каталоге файловой системы устройства, для которого осуществляется автозапуск.

MIME тип: application/inf
HEX код: 5B 61 75 74 6F 72 75 6E 5D 0D 0A
ASCII код: [autorun]

Другие программы, связанные с расширением INF

Относится к разделу Другие файлы.

Популярность:Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

Источник

Использование файла INF расширения

до Windows 10 Windows выбрали один пакет драйверов для установки для данного устройства. Это привело к созданию больших, сложных пакетов драйверов, которые включали код для всех сценариев и конфигураций, и каждое дополнительное обновление требует обновления для всего пакета драйверов. начиная с Windows 10 можно разделить функциональность INF на несколько компонентов, каждый из которых может обслуживаться независимо друг от друга.

Чтобы расширить функциональные возможности INF-файла пакета драйвера, предоставьте INF-файл расширения в отдельном пакете драйверов. INF-файл расширения:

На каждом устройстве должен быть установлен один базовый INF-файл, и при необходимости может быть связан один или несколько INF-файлов расширения. INF-файл расширения не сможет быть установлен на устройстве, если отсутствует базовый INF, который также должен быть установлен на устройстве.

Ниже перечислены типичные сценарии, в которых можно использовать INF-файл расширения.

Примеры кода для некоторых из этих сценариев можно найти в приведенных ниже примерах. См. также пример пакета драйверов, совместимого с ДЧ, который описывает, как Пример универсального драйвера дчу использует INF-пакеты расширения.

На схеме ниже две разные компании создали отдельные пакеты драйверов для одного устройства, которые показаны в пунктирных линиях. Первый содержит только INF-файл расширения, а второй — компонент INF и устаревший программный модуль. На схеме также показано, как файл INF расширения может ссылаться на INF-файл компонента, который, в свою очередь, может включать программные модули ссылок для установки.

Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

Совместная работа INF-файла расширения и основного INF-файла

Во время установки устройства параметры в INF-файле расширения применяются после параметров в базовом INF-файле. В результате, если INF-файл расширения и базовый INF указывают одинаковый параметр, применяется версия в INF-файле расширения. Аналогичным образом, если базовый INF-файл изменяется, INF-файл расширения сохраняется и применяется к новому базовому INF. Если на одном устройстве установлено несколько INF-файлов расширения, то не существует предварительно определенного порядка, в котором будут применены драйверы расширения INF, поэтому один файл INF расширения не может детерминированно переопределить значения, предоставленные другим INF-файлом расширения. Уникальные INF для добавочных имен, предназначенных для тех же устройств, не должны пытаться изменить одни и те же параметры.

В базовый INF-файл можно включить комментарии, описывающие, какие записи могут быть переопределены с помощью INF-файла расширения, а также допустимые диапазоны значений параметров и ограничения.

Указание ExtensionId

При написании INF-файла расширения создается Специальный идентификатор GUID, именуемый ExtensionId, который является записью в разделе [Version] INF.

Для иллюстрации рассмотрим следующий сценарий, включающий гипотетическое устройство, для которого существует три INF-файлов расширения:

Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

Сначала система выбирает пакет драйверов с наилучшим рангом и наивысшей версией.

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

Создание INF-файла расширения

Ниже приведены записи, необходимые для определения INF-файла в качестве INF-файла расширения.

если INF-файл расширения предназначен для Windows 10 S, см. статью Windows 10 в режиме S требования к драйверу для получения сведений об установке драйверов в этой версии Windows.

В разделе модели INFукажите один или несколько оборудования и совместимые идентификаторы, соответствующие параметрам целевого устройства. Обратите внимание, что эти аппаратные и совместимые идентификаторы не обязательно должны соответствовать базовому INF-файлу. Как правило, INF-файл расширения содержит более конкретный идентификатор оборудования, чем базовый INF, с целью дальнейшей специализации конкретной конфигурации драйвера. Например, базовый INF-файл может использовать идентификатор PCI, сооснованный на двух частях, а INF-файл расширения указывает идентификатор оборудования с четырьмя частями PCI, как показано ниже:

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

В некоторых случаях INF-файл расширения может предоставлять менее определенный идентификатор устройства, например совместимый идентификатор, для настройки параметра в более широком наборе устройств.

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

в большинстве случаев пакет драйверов расширения INF отправляется в Центр разработки оборудования отдельно от базового пакета драйверов. Примеры упаковки INF-файлов расширений, а также ссылки на примеры кода см. в разделе пример пакета драйверов, совместимого с ДЧ.

Процедура проверки и отправки драйверов одинакова для INF-файлов расширения, как и для обычных INF-файлов. дополнительные сведения см. в разделе Windows хлк начало работы.

Удаление драйвера расширения

Чтобы удалить пакет драйвера расширения из системы и удалить его с любых устройств, использующих его, используйте delete-driver команду PnPUtil с uninstall флагом. Это позволяет удалить пакет драйверов расширений с устройств, не удаляя базовый пакет драйверов.

Пример 1. Использование INF-файла расширения для задания понятного имени устройства

В одном распространенном сценарии поставщик оборудования (IHV) предоставляет базовый пакет драйверов, а затем Системный сборщик (OEM) предоставляет INF-файл расширения, который дополняет и в некоторых случаях переопределяет конфигурацию и параметры базового пакета драйверов. Следующий фрагмент кода представляет собой полный INF-файл расширения, который показывает, как задать понятное имя устройства.

Пример 2. Использование INF-файла расширения для установки дополнительного программного обеспечения

Следующий фрагмент кода представляет собой полный INF-файл расширения, который входит в комплект установки драйверов для универсальных драйверов. В этом примере используется директива INF AddComponent для создания компонентов, устанавливающих службу и исполняемый файл. Дополнительные сведения о том, что можно делать в INF-файле компонента, см. в разделе Использование INF-файла компонента.

Сведения о том, как использовать INF-файл расширения для установки драйвера фильтра, см. в разделе упорядочение драйверов фильтра устройств.

Чтобы улучшить расширяемость, рекомендуется добавить необязательную функциональность IHV в шаблон расширения INF.

обратная совместимость

Все изменения в базовом INF-файле должны быть тщательно проверены, чтобы не прерывать обратную совместимость для существующих INF-файлов расширения.

При управлении базовым INF-файлом следуйте приведенным ниже рекомендациям.

Отправка INF-файла расширения для сертификации

подробные сведения о работе с inf расширения на Центр разработки оборудования см. в разделе работа с inf расширения на панели мониторинга Windows Центр разработки оборудования.

Источник

Расширение файла INF

Setup Information Format

Что такое файл INF?

Программы, которые поддерживают INF расширение файла

Следующий список содержит программы, сгруппированные по 2 операционным системам, которые поддерживают INF файлы. Файлы с расширением INF, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.

Программы, обслуживающие файл INF

Как открыть файл INF?

Проблемы с доступом к INF могут быть вызваны разными причинами. С другой стороны, наиболее часто встречающиеся проблемы, связанные с файлами Setup Information Format, не являются сложными. В большинстве случаев они могут быть решены быстро и эффективно без помощи специалиста. Мы подготовили список, который поможет вам решить ваши проблемы с файлами INF.

Шаг 1. Установите Microsoft Windows программное обеспечение

Шаг 2. Убедитесь, что у вас установлена последняя версия Microsoft Windows

Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что этоВы по-прежнему не можете получить доступ к файлам INF, хотя Microsoft Windows установлен в вашей системе? Убедитесь, что программное обеспечение обновлено. Разработчики программного обеспечения могут реализовать поддержку более современных форматов файлов в обновленных версиях своих продуктов. Если у вас установлена более старая версия Microsoft Windows, она может не поддерживать формат INF. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью Microsoft Windows.

Шаг 3. Свяжите файлы Setup Information Format с Microsoft Windows

Если проблема не была решена на предыдущем шаге, вам следует связать INF файлы с последней версией Microsoft Windows, установленной на вашем устройстве. Процесс связывания форматов файлов с приложением по умолчанию может отличаться в деталях в зависимости от платформы, но основная процедура очень похожа.

Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

Выбор приложения первого выбора в Windows

Выбор приложения первого выбора в Mac OS

Шаг 4. Убедитесь, что файл INF заполнен и не содержит ошибок

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

Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

1. Проверьте INF файл на наличие вирусов или вредоносных программ.

Если файл заражен, вредоносная программа, находящаяся в файле INF, препятствует попыткам открыть его. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. INF файл инфицирован вредоносным ПО? Следуйте инструкциям антивирусного программного обеспечения.

2. Убедитесь, что файл с расширением INF завершен и не содержит ошибок

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

3. Проверьте, есть ли у вашей учетной записи административные права

Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Выйдите из своей текущей учетной записи и войдите в учетную запись с достаточными правами доступа. Затем откройте файл Setup Information Format.

4. Убедитесь, что в системе достаточно ресурсов для запуска Microsoft Windows

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

5. Убедитесь, что ваша операционная система и драйверы обновлены

Последние версии программ и драйверов могут помочь вам решить проблемы с файлами Setup Information Format и обеспечить безопасность вашего устройства и операционной системы. Устаревшие драйверы или программное обеспечение могли привести к невозможности использования периферийного устройства, необходимого для обработки файлов INF.

Вы хотите помочь?

Если у Вас есть дополнительная информация о расширение файла INF мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле INF.

Источник

Руководство по работе с INF-файлами

Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

1. Общая информация

2. Интерпретаторы

3. Идентификационный заголовок

4. Скрипты общего назначения

5. Последовательное выполнение списка команд (AdvancedINF)

6. Копирование файлов

7. Операции с системным реестром

8. Работа с INI-файлами

9. Разное

Общая информация

Этот документ описывает синтаксис и основные принципы написания пакетных скриптов для установки приложений в среде MS Windows 4.x и выше. Технология простых инсталляционных скриптов получила название INF. Чтобы получить пользу от документа, читатель должен знать понятие и структуру системного реестра MS Windows, уметь работать с файлами, архиваторами, текстовыми редакторами (не Word ;-)), знать значение слов: двоичный файл (бинарный, бинарник), драйвер, библиотека, функция, точка входа, деинсталляция, пользователь (как системный аккаунт). То есть он должен обладать минимальными познаниями в системе и, конечно, желанием.

Введение

Ограничения:

Соглашения

Интерпретаторы

rundll32.exe libraryname,EntryPoint parameters

SETUPAPI

Основной интерпретатор. Выполняет основную массу действий:

Типичный пример запуска интерпретатора SETUPAPI для выполнения скрипта:

rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 C:\Script.inf

В случае с MS Windows 95 строка запуска будет такой:

rundll.exe setupx.dll,InstallHinfSection DefaultInstall 132 C:\Short_

1. Другой объект длиннее 8-ми символов с одинаковыми первыми 6-ю символами в DOS-интерпретации будет оканчиваться на

ADVANCEDINF

Надстроечный над SETUPAPI интерпретатор, позволяющий выполнять дополнительные функции. Стандартные функции передаёт на выполнение интерпретатору SETUPAPI. Функции, поддерживаемые интерпретатором AdvancedINF, помимо вышеописанных:

rundll32.exe advpack,LaunchINFSection C:\Script.inf,DefaultInstall,4

Дополнительные ключи и флаги запуска

Числовое значениеОписание
0 или 128Не перезагружать компьютер
1 или 129Обязательно и без вопросов перезагрузить компьютер
2 или 130Спросить у пользователя: перезагрузить компьютер или нет
3 или 131Если нужно перезагружать компьютер, перезагрузить без вопросов
4 или 132Если нужно перезагружать компьютер, спросит у пользователя перезагружать или нет

Идентификационный заголовок

Для опознавания текстового файла как файла с INF-структурой интерпретатор ищет в непустых строках секционный заголовок [Version]. Заголовок традиционно располагается в начале файла и содержит в своей секции несколько строк, определяющих тип скрипта. Заголовки бывают следующих типов: Стандартные, Драйверные и Расширенные. Тип скрипта указывает, каким именно интерпретатором следует выполнять скрипт. В зависимости от интерпретатора можно выполнять различный набор действий.

Стандартный заголовок

Скрипт со стандартным заголовком предназначен для выполнения операций общего назначения. Набор функций, поддерживаемых скриптом со стандартным заголовком, определяется интерпретатором, которому был передан на выполнение этот скрипт. Вот секция стандартного заголовка скрипта:

[Version]
Signature=»$CHICAGO$»
SetupClass=BASE
ClassGUID=

Указанные здесь параметры SetupClass и ClassGUID редко используются вместе, обычно достаточно любого из них. С драйверными заголовками ситуация несколько иная. Ограничения для использования стандартного заголовка: крайне не рекомендуется использовать при написании скрипта установки драйверов. При построении листа драйверов, соответствующих типу устанавливаемого устройства, интерпретатор отбирает скрипты драйверов именно по заголовку и драйверные скрипты со стандартным заголовком никогда не будут включены в список.
Другие ограничения на данный момент не известны.

Драйверный заголовок

Драйверный заголовок умеет обрабатывать только интерпретатор SETUPAPI. Пример драйверного заголовка:

[Version]
Signature=»$CHICAGO$»
Class=System
ClassGuid=<4d36e97d-e325-11ce-bfc1-08002be10318>
CatalogFile=sample.cat
Provider=%MSFT%
LayoutFile=layout.inf
DriverVer=03/16/2005,6.00.9830.1

Computer
Display
Keyboard
HDC
HID
Image
Media
Modem
Monitor
Mouse
MultiPortSerial
Net
Printer
SCSI Adapter
Smart Cart Reader

Расширенный заголовок

[Version]
Signature=»$CHICAGO$»
AdvancedINF=2.0, «Error message»

Если файл с расширенным заголовком, предназначенный для обработки интерпретатором AdvancedINF, будет в командной строке передан на выполнение для SETUPAPI, выполнен он будет как файл со стандартным заголовком.

Сигнатура системы

Скрипты общего назначения

Выполняемая секция

В каждом INF-файле присутствует выполняемая секция, определяемая уже в строке вызова INF-файла. Именно эта секция рассматривается как руководство к выполнению команд, независимо от наличия других выполняемых секций в этом скрипте. Подобный подход (в отличие от BAT-файлов) позволяет хранить множество пакетов процедур в одном и том же файле скрипта. Как правило, в одном скрипте установки хранятся пакеты процедур установки и деинсталляции приложения. Выполняемая секция содержит ключи, флаги для проверки возможности выполнения скрипта и, самое главное, параметры типов действий, чьи значения содержат имена дочерних секций, в которых прописаны объекты для выполнения действий над ними.

Параметры

Наличие параметров в выполняемой секции во многом зависит от типа скрипта (стандартный, драйверный, расширенный). В одной заголовочной секции не может быть двух и более одноимённых параметров. Имена параметров, за исключением специальных флагов, определяют тип действий, например, запись в реестр, копирование файлов. Значения этих параметров составляют имена других, дочерних секций, содержащих адреса и имена объектов для выполнения операций. Имена дочерних секций должны даваться через запятую и знак пробела. Если имён дочерних секций несколько, они выполняются по очереди, в порядке написания. Некоторые параметры должны содержать только одну секцию. Пример выполняемой секции расширенного скрипта:

[DefaultInstall]
CopyFiles=cpf.test, cpf.testAA
AddReg=adr.tester, adr.tester2
DelReg=dlr.testing
UpdateInis=ini.test_section

Правило: имена дочерних секций ( в этом примере они: cpf.test, cpf.tester,cpf.testing. ) не должны начинаться со знака цифры (0-9) и не должны быть равны зарезервированным именам параметров, как то:
CopyFiles DelFiles AddReg DelReg UpdateInis Reboot CheckAdminRights RequiredEngine CustomDestination BeginPrompt EndPrompt ComponentName ComponentVersion PreRollBack PerUserInstall RunPreSetupCommands RunPostSetupCommands. Кроме того, имена секций не должны содержать пробелов и знаков: «,’/\?*;:^()[]

Ниже приведена таблица описаний имён параметров выполняемой секции:

Реализация Active Setup (AdvancedINF)

Дочерние секции

Дочерние секции подразумевают собой обычные секции, имена которых указаны в качестве значений в параметрах основной, выполняемой секции. Одна и та же дочерняя секция может вызываться из нескольких выполняемых секций. Дочернюю секцию невозможно выполнить отдельно, вызвав интерпретатор. Этим и различаются выполняемые и обычные секции.
Некоторые параметры выполняемой секции имеют возможность воспринимать несколько дочерних секций сразу, выполняя их последовательно, одну за другой, другие могут содержать только одну дочернюю секцию и не выполняются вообще, если Вы попытаетесь указать несколько дочерних секций. К параметрам выполняемой секции, воспринимающим несколько дочерних секций, относятся: CopyFiles DelFiles AddReg DelReg UpdateInis CustomDestination DelDirs RunPreSetupCommands RunPostSetupCommands; к параметрам, воспринимающим единственную секцию следующие:PerUserInstall BeginPromptEndPrompt.

Суффиксы операционной системы

[DefaultInstall]
CopyFiles=cpf.w9x

[DefaultInstall.NT]
CopyFiles=2cpf.NT
CheckAdminRights=1

Секция Per User (Active Setup)

Последовательное выполнение списка команд (AdvancedINF)

[DefaultInstall]
RunPreSetupCommands=cmd.begin, cmd.delay_post:4
RunPostSetupCommands=cmd.end, cmd.hidden:1, cmd.no_wait:2, cmd.nowait_hidden:3

;Простое выполнение команд с показом окон и ожиданием завершения каждого процесса
[cmd.begin]
filename.exe /param1 /param2

;Выполнение команд с задержкой в 400 ms завершения каждого процесса
[cmd.delay_post]
filename.exe /param1 /param2

;Выполнение команд со скрытием окон (SW_HIDE) и ожиданием завершения каждого процесса
[cmd.hidden]
filename.exe /param1 /param2

;Выполнение команд с показом окон (SW_SHOW) и без ожидания завершения каждого процесса
[cmd.nowait]
filename.exe /param1 /param2

;Выполнение команд со скрытием окон (SW_HIDE) и без ожидания завершения каждого процесса
[cmd.nowait_hidden]
filename.exe /param1 /param2

;Простое выполнение команд с показом окон и ожиданием завершения каждого процесса
[cmd.end]
filename.exe /param1 /param2
filename2.exe /param1 /param2
filename3.exe /param1 /param2

Копирование файлов

Секции копирования

[DefaultInstall]
CopyFiles=cpf.test

[cpf.test]
filename.ext

[DestinationDirs]
cpf.test=-1, C:\Temp

[SourceDisksFiles]
filename.ext=1

[SourceDisksNames]
1=»TEST CD»,»»,0

[SourceDisksNames]
1 = «Drive_Name»,»data1.cab»,subdir
2 = «Drive_Name 2″,»»,0

[SourceDisksFiles]
filename.ext = 1
filenam1.ext = 1
filenam2.ext = 2

Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

Директории назначения

Если в секции «куда» [DestinationDirs] не определено ни одной директории, все файлы будут копироваться в каталог по умолчанию, каковым является DIRID_SYSTEM, описанный выше в таблице. Каталог по умолчанию можно изменить (только в сессии выполнения текущего скрипта), указав в секции [DestinationDirs] параметр DefaultDestDir. Его значение будет директорией по умолчанию. Это полезно для некоторой экономии в размере файла скрипта, к примеру, при установке множества пакетов в один программный каталог. Например:

[DestinationDirs]
DefaultDestDir=24, Program Files\Program Name

Переменные путей нельзя использовать в секции [strings], в диалогах BeginPrompt и EndPrompt, в именах любых секций и в качестве обозначения типов параметров реестра. Во всех оставшихся местах, кроме секции [DestinationDirs], переменные директорий необходимо обрамлять знаками процента. В секции [DestinationDirs]этого делать нельзя. Если необходимо копировать файлы не в существующую директорию, а в её поддиректорию, необходимо указать оставшийся путь после знака запятой и пробела относительно имени переменной, как видно на примере.

Динамические директории (AdvancedINF)

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

[DefaultInstall]
CustomDestination=dirs.CustomDest
CopyFiles=cpf.test

[dirs.CustomDest]
49000,49001,49002,49003 = RegistryDir,5

[RegistryDir]
HKLM,»Software\Company_Name\Program_Name»,»Path»,,»Error String»

[cpf.test]filename.ext

[CustomDestination]
cpf.test = 49001

[SourceDisksFiles]
filename.ext= 1

[SourceDisksFiles]1 = «TEST»,»»,0

Теперь разберём пример. В секции [dirs.CustomDest] указаны четыре числа через запятую в качестве параметра. Это имена переменных одной и той же динамической директории в разной интерпретации. Первое число (49000) содержит путь к директории «C:\Program Files\Program Name» в формате 8.3 в кодировке OEM (DOS). То есть, эта переменная содержит строку такого вида: «C:\Progra

Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

При этом, для того, чтобы добиться подобных значений на площади окна, нужно совершенно изменить формат записи строки в секции [RegistryDir]:

[RegistryDir]
. «Укажите директорию для распаковки»,»C:\Test»

Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

Флаги копирования

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

[DefaultInstall]
CopyFiles=cpf.files

[cpf.files]
filenam2.exe,filename.ext,2

IDЗначениеОписание
COPYFLG_WARN_IF_SKIP0x00000001Выводить предупреждающее сообщение, если пользователь пытается пропустить файл после неудачной операции копирования
COPYFLG_NOSKIP0x00000002Скрыть кнопку пропуска файла в случае неудачного копирования. Полезно при замене важных системных файлов.
COPYFLG_NOVERSIONCHECK0x00000004Не обращать внимание на версию файла, который уже присутствует в месте назначения и всегда перезаписывать файлом из дистрибутива. Не есть хорошо.
COPYFLG_FORCE_FILE_IN_USE0x00000008заменить файл в месте назначения, даже если он используется.Теоретически при этом интерпретатор попытается переименовать в случайное мусорное имя использующийся файл, а затем скопирует файл из дистрибутива.
COPYFLG_NO_OVERWRITE0x00000010Не копировать файл, если он уже существует. Например, личные настройки в INI-файле некультурно заменять настройками по умолчанию при каждом обновлении программы.
COPYFLG_NO_VERSION_DIALOG0x00000020не копировать и не выводить вопросов, если файл в месте назначения уже существует и его версия новее, чем версия файла в дистрибутиве
COPYFLG_OVERWRITE_OLDER_ONLY0x00000040Не копировать, если версии совпадают. То есть заменять только старые версии файлов
COPYFLG_REPLACEONLY0x00000400Осуществлять операцию копирования только если файл уже существует. Полезно при выпуске обновлений к многочисленным пакетам.

Удаление файлов и директорий

Удаление объектов можно выполнить несколькими способами. Перечислим их:
1. Удаление файлов посредством указания дочерних секций копирования в параметре DelFiles. То есть в файле скрипта уже есть секция [DestinationDirs], указывающая место расположения файлов и дочерняя секция копирования, содержащая список файлов, скопированных в каталог назначения. Остаётся лишь указать эту же секцию в параметре DelFiles. При этом секции расположения файлов в дистрибутиве ([SourceDisksFiles], [SourceDisksFiles]) не используются. Этот метод чаще всего применяется в секции деинсталляции пакета. Директории этим способом удалить нельзя, только файлы. Пример этого способа:

[DefaultInstall]
CopyFiles=files

[files]
filename.ext

[DestinationDirs]
files= 11

[Uninstall]
DelFiles=files

[DefaultInstall]
DelDirs=dirs
Cleanup=1

[dirs]
«%24%\Program Files\Program Name»

[DefaultInstall]
RunPostSetupCommands=cmd.deldirs

[cmd.deldirs]
rundll32.exe advpack,DelNodeRunDLL32 «%24%\Program Files\Program Name»

Операции с системным реестром

Следующей по приоритетности задачей после копирования файлов из дистрибутива является задача изменения ключей и параметров системного реестра. Доступны следующие функции: добавление ключей реестра, добавление параметров реестра, запись значений ключей, поддержка всех типов ключей реестра, удаление ключей реестра, удаление параметров ключей реестра, замена значений параметров реестра. Из этих возможностей проистекают другие возможности, реализация которых лежит уже не на плечах интерпретатора INF-скриптов, а на плечах самой системы, а именно: Переименование объектов и смена атрибутов, Удаление файлов при следующей перезагрузке, Деинсталляция приложения, Регистрация и отмена регистрации библиотек, однократное выполнение задачи под каждым пользователем (Active Setup).

Запись и удаление ключей реестра

Запись и удаление ключей, параметров и значений в системном реестре MS Windows посредством INF-скрипта являются базовыми процедурами, владея которыми, можно достигать и других целей. Сначала кратко о структуре системного реестра и типах параметров.
В системе существует нереляционная древовидная системная база данных для хранения всей системной информации в виде вложенных ключей, параметров ключей и их значений. Сама структура таблиц довольно проста, если не сказать «убога», потому что содержит подобие файловой системы, где объектами являются ключи содержащие данные всего двух типов: параметры и значения параметров. По сути каждый ключ является потомком INI-файла, из которого убрали понятие секций. Следует учесть, что до сих пор осталось ограничение на размер ключа со всеми его параметрами и значениями в 64 килобайта для совместимости с INI-файлами программ, написанных для MS Windows 3.1, и это накладывает дополнительные ограничения на и без того бедную возможностями функциональность этой базы данных. Физически база данных располагается в нескольких файлах, которые служат корнями «кустов» древовидной базы реестра. В зависимости от версии операционной системы, файлы разнятся по расположению и именам. Основная структура соответствий файлов и корней реестра:

INFREGISTRY_KEYРасположение в WIN 95, 98Расположение в WIN NT 4, 5
HKLMHKEY_LOCAL_MASHINE%WinDir%\SYSTEM.DAT%SystemRoot%\System32\config\SOFTWARE
HKCUHKEY_CURRENT_USER%WinDir%\USER.DAT%USERPROFILE%\ntuser.dat
HKCRHKEY_CLASSES_ROOT%WinDir%\SYSTEM.DAT%SystemRoot%\System32\config\SOFTWARE
HKUHKEY_USERS
HKEY_USERS\.default%WinDir%\SYSTEM.DAT%SystemRoot%\System32\config\default
HKEY_LOCAL_MASHINE\SYSTEM%WinDir%\SYSTEM.DAT%SystemRoot%\System32\config\SYSTEM
HKEY_LOCAL_MASHINE\SYSTEM\ControlSet002отсутствует%SystemRoot%\System32\config\SYSTEM.ALT

Формат записи в реестр в строке дочерней секции, вызываемой из параметра AddReg выполняемой секции таков:

Типы параметров реестра

Этот параметр обычно имеет тип REG_SZ, но это допустимо изменять.
В строковый параметр типа REG_ADVANCED_SZ Вы можете записывать системные переменные, которые будут подменяться текущими значениями при обращениях к ним программ. Большинство программ не различает параметры REG_SZ и REG_ADVANCED_SZ. К примеру, если Вы укажете в параметре типа REG_ADVANCED_SZ переменную %USERPROFILE%, любая программа посчитает этот параметр как параметр типа REG_SZ, содержащий реальный путь к каталогу профиля текущего пользователя, например C:\Winnt\Profiles\Administrator.
Мультистроковый параметр типа REG_MULTI_SZ позволяет добавлять каждый раз по одной строке данных. Это применяется, например, в формировании заданий по замещению или удалению после перезагрузки файлов, использующихся системой на данный момент. Для того, чтобы записать значение параметра этого типа после внесения всех строк, нужно добавить ещё раз этот параметр, указав закрывающий тип 8.Ниже приведён пример INF-скрипта, добавляющего в реестр параметры всех типов:

[Version]
Signature=»$CHICAGO$»
SetupClass=BASE

[DefaultInstall]
AddReg=adr.types

[adr.types]
HKLM,»%Key%»,»Binary»,1,72,00,00,00
HKLM,»%Key%»,»DWORD»,0x10001,64
HKLM,»%Key%»,»REG_SZ»,,»string only»
HKLM,»%Key%». «This is value of default parameter»
HKLM,»%Key%»,»REG_EXPAND_SZ»,0x00020000,»Current user name: %USERNAME%»
HKLM,»%Key%»,»REG_MULTI_SZ»,0x00010000,»first string»
HKLM,»%Key%»,»REG_MULTI_SZ»,0x00000008,»second string»
HKLM,»%Key%»,»»,,»»
HKLM,»%Key%»,»»,,»»
HKLM,»%Key%»,»»,,»»
HKLM,»%path%»,»DWORD2″,65537,1 HKLM,»%path%»,»REG_SZ2″,FLG_ADDREG_TYPE_EXPAND_SZ,»string only» HKLM,»%path%»,,2,»this is default value» HKLM,»%path%»,»advanced»,,»this is test value» HKLM,»%path%»,»REG_MULTI_SZ»,0x00010000,»one string»

[strings]
Key=»Software\Company_Name\Program_Name»

Удаление файлов при следующей перезагрузке

Переименование объектов и смена атрибутов

Параметр RenFiles содержит имена секций, которые в свою очередь содержат имена файлов, предназначенных для переименования. Папка, где будет происходить переименование должна быть определена в секции [DestinationDirs]. Требования к названию секций копирования файлов: Имя секции не должно содержать зарезервированных слов, таких как RenFiles, CopyFiles и т.д.
Ниже приведен пример дочерней секции переименования файлов:

Создание точки отката реестра (AdvancedINF)

Работа с INI-файлами

Создание и удаление строк в INI-файле

Inf-скрипты предоставляют конечному пользователю возможность редактирования INI-файлов.
Для того, чтобы изменить строки в существующем INI-файле необходимо в выполняемой секции указать параметр:

Параметр UpdateInis может содержать несколько имен дочерних секций.

Числовое значениеОписание
0Значение по умолчанию. При установке этого флага скрипт ищет ключ (имя записи) old-entry, не обращая внимания на его значение Если такая запись находится, соответствующая строка заменяется значением new-entry. Если old-entry отсутствует, скрипт автоматически добавит в секцию значение new-entry. Если будет отсутствовать new-entry, то old-entry удалится.
1Скрипт выполняет проверку в INI-файле по ключу и значению записи old-entry. Обновление строки произойдет только в том случае, если и ключ и значение записи INI-файле совпадут с записью в old-entry
2Скрипт выполняет проверку в INI-файле строк, ключ которых совпадает с описанным в old-entry. Если такая запись в INI-файле присутствует, она не будет замещаться значением, указанным в new-entry
3Скрипт выполняет проверку в INI-файле строк, ключ и значение которых совпадает с описанным в old-entry. Если такая запись в INI-файле присутствует, она будет замещаться значением, указанным в new-entry

Создание и удаление пользовательских ярлыков с помощью INI-файлов

С помощью параметра UpdateInis в выполняемой секции можно создавать пользовательские ярлыки в меню ПУСК. Синтаксис секции будет выглядеть следующим образом:

[INI.Shortcut]
setup.ini,progman.groups,,»groupX=»»%GROUPNAME%«»»
setup.ini,groupX,,»«»PROGNAME»»,»»path»». «»workdir»»,»»DESCRIPTION»»«

Следует обратить внимание на расстановку запятых и кавычек. В данном случае, все переменные заключаются в двойные кавычки. Обязательные знаки в приведенном примере выделены жирным шрифтом.
Ниже приведен пример создания и удаления ярлыка в меню ПУСК к редактору реестра:

[Strings]
APPNAME=»Системные утилиты»
DescName=»Редактор реестра»
Description=»Запуск редактора реестра»

Создание и удаление пользовательских ярлыков с помощью параметра ProfileItems

Параметр ProfileItems используется в выполняемых секциях и предназначен для добавления ярлыков в меню ПУСК-Все программы.

Значением данного параметра может служить одна или несколько дочерних секций. Ниже приведен список возможных параметров дочерней секции ProfileItems:

[profile-items-section]
Name=NameItem[,Flag]
CmdLine=Path
WorkingDir=workdir
[SubDir=GROUPNAME]
[IconPath=PathIcon]
[IconIndex=IndexValue]
[HotKey=HotkeyValue]
[Infotip=DESCRIPTION]

Числовое значениеОписание
0x00000001Указывает программе установки создать или удалить ярлык для текущего пользователя. При отсутствии данного флага действия над ярлыками будут происходить для всех учетных записей.
0х00000002Указывает программе установки удалить ярлык. При отсутствии данного параметра ярлык будет создан.
0х00000004Указывает программе установки создать или удалить програмную группу. Если параметр не указан, программа установки выполняет операции только над ярлыками. Не над группами.

Разное

Диалоговые окна (AdvancedINF)

Вывод диалоговых окон в процессе выполнения скрипта возможен лишь с применением интерпретатора AdvancedINF. Диалоговые окна возможны двух типов: 1. С двумя кнопками (ОК, Отмена), произвольной строкой и заголовком; 2. С одной кнопкой ОК, произвольной строкой и заголовком. Первый тип вызывается параметром BeginPrompt в выполняемой секции и диалог отображается перед выполнением пакетных процедур установки, но после проверок CheckAdminRights (NTAdmin), RequiredEngine. Второй диалог отображается по завершении процедур при условии, что во время выполнения скрипта не произошло ошибок и вызывается параметром EndPrompt в выполняемой секции. Диалоги не зависят друг от друга, другими словами, их указание в выполняемой секции не зависит друг от друга. Если в начальном диалоге пользователь выбрал Отмену, дальнейшая обработка скрипта отменяется.

[DefaultInstall]
BeginPrompt=prmt.begin
EndPrompt=prmt.end

[prmt.begin]
Prompt=»Текст предустановочного диалога»
ButtonType=YESNO
Title=»Заголовок окна»

[prmt.end]
Prompt=»Текст послеустановочного диалога»
Title=»Заголовок окна»

Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это
. установка пакета.
Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

Значения параметров Prompt и Title в дочерних секциях принято заключать в кавычки, но необязательно. В их теле допустимо использовать переменные из секции [string], но нельзя использовать переменные директорий. Применение параметра ButtonType в дочерней секции параметра BeginPrompt не приносит никаких изменений и, скорее всего, является отладочным или нереализованным параметром, и, поэтому, необязательно.

Деинсталляция приложения

При создании корректного инсталляционного пакета приходится задумываться о его деинсталляции, удаления из системы. Обычно в системе существует стандартная утилита удаления установленных программ, находящаяся в панели управления. Для того, чтобы зарегистрировать в её списке своё приложение, необходимо добавить в реестр новый ключ с необходимыми параметрами, а также создать функцию удаления пакета из системы. Логично будет создать в INF-скрипте новую выполняемую секцию, выполняющую это действие и скопировать при инсталляции сам скрипт в систему. Место размещения ключа деинсталляции программы Program_Name в реестре: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Program_Name Ниже представлено описание параметров типового ключа удаления программы:

Поддерживается MS Windows 95, 98, NT и выше

НазваниеТип строкиINF-cтрока записи в реестр*Описание
DisplayNameREG_SZHKLM,»%Key%»,»DisplayName»,,»Program_Name»Имя программы, отображаемое в утилите деинсталляции
UninstallStringREG_SZHKLM,»%Key%»,»UninstallString»,,»rundll32.exe advpack,LaunchINFSectionEx C:\Windows\Inf\program.inf,Uninstall,,64,A»Строка, выполняемая при деинсталляции пакета
DsiplayIconREG_SZHKLM,»%Key%»,»DsiplayIcon»,,»C:\program.exe,0″Отображение ICO-пиктограммы, указывается путь к файлу с пиктограммой и её номер в списке существующих, начинащемся с нуля

Поддерживается MS Windows 2000 и выше:

НазваниеТип строкиINF-cтрока записи в реестрОписание
DisplayVersionREG_SZHKLM,»%Key%»,»DisplayVersion»,,»10.241.8.44″Версия программы
HelpLinkREG_SZHKLM,»%Key%»,»HelpLink»,,»http://company.com/support.php»URL технической поддержки программы
ModifyPathREG_SZHKLM,»%Key%»,»ModifyPath»,,»rundll32.exe params»Команда, выполняемая при нажатии кнопки «Заменить»
EstimatedSizeREG_DWORDHKLM,»%Key%»,»EstimatedSize»,0x10001,»1024″Размер установленной программы в Кбайтах
NoRemoveREG_DWORDHKLM,»%Key%»,»NoRemove»,0x10001,»0″Флаги блокировки удаления, обновления или восстановления установленной программы. Полезно для разного рода хотфиксов и апдейтов.
NoModifyREG_DWORDHKLM,»%Key%»,»NoModify»,0x10001,»0″
NoRepairREG_DWORDHKLM,»%Key%»,»NoRepair»,0x10001,»0″

[strings]
Key=»Software\Microsoft\Windows\CurrentVersion\Uninstall\Program_Name»

Кроме того, существуют дополнительные малозначимые ключи, в основном для формирования окна справки о программе, увидеть примеры которых можно, исследовав существующие ключи деинсталляции программ в реестре. Кроме того, для корректной деинсталляции Microsoft реализовала технологию точек отката реестра: «Создание точки отката реестра (AdvancedINF)». Остаётся добавить в файл скрипта новую выполняемую секцию Uninstall, добавить к инсталляционной секции задание на запись ключа деинсталляции и скопировать свой INF скрипт (setup.inf) в систему во время инсталляции программы:

[Version]
Signature=»$CHICAGO$»
AdvancedINF=2.0, «Error message»

[DefaultInstall.NT]
CopyFiles=cpf.inf
AddReg=adr.uninstall

[cpf.inf]
program.inf,setup.inf

[DestinationDirs]
cpf.inf = 17

[SourceDisksFiles]
setup.inf = 1

[SourceDisksNames]
1 = «Drive of program_name»,»»,0,

[adr.uninstall]
HKLM,»%Key%»,»DisplayName»,,»Program_Name»
HKLM,»%Key%»,»UninstallString»,,»rundll32.exe advpack,LaunchINFSectionEx %17%\program.inf,Uninstall,,64,A»
HKLM,»%Key%»,»DsiplayIcon»,,»C:\program.exe,0″
HKLM,»%Key%»,»DisplayVersion»,,»10.241.8.44″
HKLM,»%Key%»,»EstimatedSize»,0x10001,»1024″

[Uninstall]
DelFiles=cpf.inf
DelReg=dlr.uninstall

[dlr.uninstall]
HKLM,»%Key%»

[strings]
Key=»Software\Microsoft\Windows\CurrentVersion\Uninstall\Program_Name»

После выполнения подобного скрипта в утилите деинсталляции появится вот такой пункт:

Формат inf что это. Смотреть фото Формат inf что это. Смотреть картинку Формат inf что это. Картинка про Формат inf что это. Фото Формат inf что это

Другие точки входа в библиотеки интерпретаторов

Секция strings (Объявление строчных переменных)

Для уменьшения объёма файла INF-скрипта и для облегчения языковой локализации пакетов рекомендуется употреблять переменные, определение которых находится в отдельной секции. Имя секции [strings]. Оно встречается почти в каждом INF-файле с завидным постоянством и его использование считается правилом хорошего тона в написании INF-скриптов. В теле скрипта переменные обозначаются знаками процента (%) по краям, как и переменные директорий. Пример использования секции переменных:

[strings]
regpath=»Software\Firm_name\Program_name\Options»
message1=»Произвольное сообщение»

По традиции секция strings располагается ниже всех остальных секций, являясь завершающей.
Места, где запрещается употребление переменных: в именах любых функций, вместо названий параметров и вместо управляющих знаков ;=[],. Под раздел переменных, которые можно использовать в INF-скриптах не попадают никакие другие переменные, кроме тех, которые определены непосредственно в этом файле скрипта и переменных директорий, часть которых можно определить динамично. В значениях переменных нельзя использовать никакие другие переменные, включая переменные путей.

Регистрация и отмена регистрации библиотек (AdvpackINF)

Полный путь к файлу библиотеки необходим в случае, если библиотека находится не в системном каталоге Windows. Также, при запуске без ключей, лишь с указанием библиотеки, regsvr32 по умолчанию пытается зарегистрировать библиотеку. Чтобы запустить регистрацию библиотеки из скрипта, обратитесь к разделу «Последовательное выполнение списка команд (AdvancedINF)»
Интерпретатор AdvancedINF умеет самостоятельно выполнять регистрацию и отмену регистрации библиотек, используя параметры RegisterOCXs и UnregisterOCXs в выполняемой секции. Пример:

[DefaultInstall]
RegisterOCXs=rocx.section
UnregisterOCXs=uocx.section

[rocx.section]
filename.dll

[uocx.section]
filename2.dll

Добавление приложения в пользовательскую и общую автозагрузку при входе в систему

Также для смены ассоциации файла можно воспользоваться редактором реестра.

Действие по умолчанию: Открыть

Синтаксис *.REG файла:

Синтаксис *.INF файла:

Действие по умолчанию: Установить

Синтаксис *.REG файла:

Синтаксис *.INF файла:

Ниже секции статьи, которые автор не дописал.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *