Что такое inf драйвер

Общие рекомендации для INF-файлов

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

Документация по классу устройства.

Например, если устройство является принтером, см. раздел Установка и настройка драйверов принтера.

Средства WDK для INF-файлов.

Дополнительные сведения см. в разделе средства для INF-файлов. Эти средства включены в подкаталог \Tools WDK.

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

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

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

INF-файлы, поставляемые с Windows 7 и операционными системами более ранних версий, должны иметь имя файла xxxxxxxx. inf, где «xxxxxxxx» не превышает восьми символов. Имя INF-файла, поставляемого отдельно от операционной системы, не может содержать более восьми символов.

начиная с Windows 8, имена INF-файлов не ограничиваются восемью символами, независимо от того, поставляются ли они с операционной системой.

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

Источник

Алгоритм установки драйвера в Windows

Именно поэтому операционная система пытаемся всеми доступными ей методами обеспечить функционирование устройства в своей среде, для этого производится попытка установки для вновь подключаемого устройства соответствующего драйвера, дабы тем самым предоставить функции нового устройства для доступа программам пользовательского режима и коду режима ядра, ведь без этого самого пресловутого драйвера оборудование в системе работать попросту не сможет.
Я не случайно упомянул в определении логические устройства, поскольку существует отдельная категория драйверов, которые не занимаются обслуживанием аппаратного обеспечения, а интегрируются для расширения реализации (расширения, дополнения) функциональных особенностей различных модулей системы. Но кого сейчас удивишь установкой драйверов? Этот процесс настолько уже хорошо знаком всем пользователям ПК по многолетней практике, что некоторые, я уверен, могут делать это с закрытыми глазами 🙂 Но задумывались ли мы о деталях этого процесса, размышляли ли когда-нибудь над алгоритмом установки драйвера? Задавались ли вопросом, какие именно действия выполняет операционная система в момент подключения нового устройства и инсталляции драйверов?

Согласитесь, что с точки зрения пользователя процесс установки драйвера в Windows, в большинстве случаев, выглядит достаточно прозаично. В системном трее появляется привычный анимированный значок мастера установки, и система через некоторое время может выдать отчет об успешном, либо неудачном завершении процедуры инсталляции в системе драйвера нового устройства. Более того, зачастую мастер установки кроме этой самой иконки в трее вовсе не выдает никаких визуальных подтверждений о попытках инсталляции нового устройства, при этом «тихо» добавляя новое оборудование в список устройств и (в случае неудачи) маркируя его специальным значком в диспетчере устройств, предлагая пользователю в ручном режиме продолжить конфигурирование оборудования. Все эти внешние процессы, хорошо уже знакомые как Вам так и мне, в той или ином виде присутствуют во всех версиях операционных систем Windows практически с момента появления этой операционной системы, незначительно отличаясь между собой лишь в деталях. Они стали настолько знакомыми и привычными, что я даже никогда и не задумывался, а что же происходит «по ту сторону экрана», в недрах операционной системы, что скрывается под этой мнимой простотой? Как Вы увидите далее, установка драйвера Windows для физического либо логического устройства скрывает под собой довольно сложные и чрезвычайно интересные процессы. Алгоритм установки драйвера в Windows можно разбить на перечисленные ниже ключевые глобальные задачи:

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

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

Источник

Исправлено: INF-файл, который вы выбрали, не поддерживает этот метод установки —

Некоторые люди сталкиваются с выбранный inf-файл не поддерживает этот метод установки ошибка при попытке установить один или несколько драйверов на ПК с Windows. Это сообщение об ошибке появляется перед началом установки. Как правило, ошибка возникает, когда пользователь пытается щелкнуть правой кнопкой мыши на файле inf и выбирает Установить из контекстного меню.

Что такое inf драйвер. Смотреть фото Что такое inf драйвер. Смотреть картинку Что такое inf драйвер. Картинка про Что такое inf драйвер. Фото Что такое inf драйверВыбранный вами INF-файл не поддерживает этот метод установки.

Что вызывает файл Inf, который вы выбрали, не поддерживает этот метод установки ошибки

Мы исследовали эту конкретную ошибку, пытаясь воспроизвести проблему и просматривая различные пользовательские отчеты. Основываясь на наших исследованиях, есть несколько сценариев, которые приведут к появлению этой проблемы:

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

Способ 1: установка INF-файла из диспетчера устройств

Вот краткое руководство по установке драйвера INF из диспетчера устройств:

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

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

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

Замечания: Имейте в виду, что вам придется заменить последнюю часть () на имя вашего файла, чтобы это работало.

Если этот метод не работает или выдает другое сообщение об ошибке, перейдите к последнему методу ниже.

Способ 3: проверьте, совместим ли драйвер с архитектурой вашего ПК

Вот краткое руководство по проверке архитектуры ОС вашего ПК:

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

Если этот сценарий верен, у вас есть два варианта:

Источник

Как установить драйверы INF (Windows 10/7/8 / XP / Vista)

How Install Inf Drivers

Способ 1: обновить драйвер через диспетчер устройств

1) На клавиатуре нажмите кнопку Windows ключ и р (Одновременно нажмите клавишу с логотипом Windows и клавишу R), чтобы открыть окно «Выполнить».

Что такое inf драйвер. Смотреть фото Что такое inf драйвер. Смотреть картинку Что такое inf драйвер. Картинка про Что такое inf драйвер. Фото Что такое inf драйвер

3) Разверните категории и найдите устройство, для которого хотите обновить драйвер, затем щелкните правой кнопкой мыши имя устройства. Появится контекстное меню. Выбрать Обновление программного обеспечения драйвера из меню.

Что такое inf драйвер. Смотреть фото Что такое inf драйвер. Смотреть картинку Что такое inf драйвер. Картинка про Что такое inf драйвер. Фото Что такое inf драйвер

Что такое inf драйвер. Смотреть фото Что такое inf драйвер. Смотреть картинку Что такое inf драйвер. Картинка про Что такое inf драйвер. Фото Что такое inf драйвер

Что такое inf драйвер. Смотреть фото Что такое inf драйвер. Смотреть картинку Что такое inf драйвер. Картинка про Что такое inf драйвер. Фото Что такое inf драйвер

6) Нажмите Установить с диска…

Что такое inf драйвер. Смотреть фото Что такое inf драйвер. Смотреть картинку Что такое inf драйвер. Картинка про Что такое inf драйвер. Фото Что такое inf драйвер

7) Щелкните значок Просматривать… кнопка. Затем найдите папку, в которой вы сохранили загруженный драйвер.

Что такое inf драйвер. Смотреть фото Что такое inf драйвер. Смотреть картинку Что такое inf драйвер. Картинка про Что такое inf драйвер. Фото Что такое inf драйвер

Что такое inf драйвер. Смотреть фото Что такое inf драйвер. Смотреть картинку Что такое inf драйвер. Картинка про Что такое inf драйвер. Фото Что такое inf драйвер

9) Перезагрузите компьютер, чтобы изменения вступили в силу.

Способ 2: обновите драйвер с помощью Driver Easy

Мы рекомендуем обновить драйвер с помощью Driver Easy.

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

Вы можете автоматически обновлять драйверы с помощью БЕСПЛАТНОЙ или Pro версии Driver Easy. Но с версией Pro требуется всего 2 клика (и вы получаете полную поддержку и 30-дневную гарантию возврата денег):

1) Скачать и установите Driver Easy.

Что такое inf драйвер. Смотреть фото Что такое inf драйвер. Смотреть картинку Что такое inf драйвер. Картинка про Что такое inf драйвер. Фото Что такое inf драйвер

3) Щелкните значок Обновить рядом с устройствами, чтобы автоматически загрузить правильную версию их драйверов, затем вы можете вручную установить драйверы (вы можете сделать это в БЕСПЛАТНОЙ версии).

Что такое inf драйвер. Смотреть фото Что такое inf драйвер. Смотреть картинку Что такое 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 не будет опубликован. Обязательные поля помечены *