Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314

Профиль | Отправить PM | Цитировать


Команды inf скрипта (advpack) не указанные в руководстве по inf-файлам.

Попутно сбору инфы для руководства нарыл инфы про inf файлы.
Думаю, если не будет полезно при написании аддонов, то хотябы
будем знать какие команды зарезервированны интерпретатором,
дабы не называть так секции
=====
пока помещу в раздел Хитрости при написании inf файлов, если vek доработает руководство, уберу из приложений.

читать дальше »
UpdateCfgSys

Позволяет отредактировать содержимое файла config.sys и указывает на раздел, который может содержать следующие ключевые слова: DevRename, DevDelete, DevAddDev, Stacks, Buffers, Files, LastDrive


UpdateAutoBat

Позволяет отредактировать содержимое файла autoexec.bat и указывает на раздел, который может содержать следующие ключевые слова: CmdAdd (формат: "программа","ключи программы"), CmdDelete (формат: "программа"), UnSet (формат: "имя переменной окружения"), PreFixPath (формат: "числовое значение, числовое значение"), RemOldParh (формат: "числовое значение, числовое значение"), TmpDir (формат: "числовое значение, дальней путь").

SmartReboot

Указывает, будет ли выполняться перезагрузка компьютера после установки сценария. Данное ключевое слово может принимать следующие значения.

— N — никогда не выполнять перезагрузку.
— AS — после установки сценария выполнить перезагрузку, не спрашивая согласия пользователя.
— IS — если система определила, что нужно выполнить перезагрузку, тогда компьютер будет перезагружен. При этом вопрос о перезагрузке задан не будет.
— A — после установки сценария спросить пользователя о перезагрузке компьютера.
— I — если перезагрузка необходима, тогда спросить у пользователя.

BitReg

Указывает на разделы inf-файла (через запятую), содержащие описание параметров реестра, в значении которых будут отредактированы отдельные биты.
Разделы inf-файла, используемые для редактирования битов значения параметров реестра, могут содержать в себе строки следующего формата (одна строка редактирует значение одного параметра реестра):

"Корневой раздел", "ветвь реестра", "параметр", "флаг операции", " маска операции", "номер байта параметра"

Корневой раздел

Содержит идентификатор корневого раздела реестра, в котором расположен редактируемый параметр. Идентификатор может принимать следующие значения: HKCU (корневой раздел HKEY_CURRENT_USER), HKLM (корневой раздел HKEY_LOCAL_MACHINE), HKU (корневой раздел HKEY_USERS), HKCR (корневой раздел HKEY_CLASSES_ROOT), HKCC (корневой раздел HKEY_CURRENT_CONFIG),HKR (ветвь реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass[{GUID-класса устройства}][номер устройства]).

Флаг

Определяет тип редактирования параметра. Флаг представляет собой битовую маску, некоторые состояния которой представлены ниже.

— 0х00000000 — сбросить биты параметра.
— 0х00000001 — установить биты параметра.
— 0х00040000 — выполнить редактирование в 32-разрядном реестре.

Маска операции

Определяет биты одного байта значения параметра (одной строкой раздела inf-файла можно изменять биты только в пределах одного байта значения параметра), которые должны быть модифицированы. То есть, маска состоит из 8 нулей или единиц. Если установлена единица, тогда соответствующий бит значения параметра (на месте которого указана единица) будет сброшен или установлен в зависимости от флага операции. Маска операции является битовой маской.

Номер байта значения параметр

Определяет байт значения параметра, к которому будет применяться маска операции. Следует помнить, что начало нумерации байтов зависит от типа параметра. Для параметров типа REG_DWORD самый старший (то есть, самый правый) байт имеет номер 0, а для параметров типа REG_BINARY номер 0 имеет самый младший байт (самый левый).

Пример
Код: Выделить весь код
[version]
Signature="$CHICAGO$"

[DefaultInstall]
AddReg=AttrOn
BitReg=Rec_Bit



[AttrOn]
;присваиваем параметру CallForAttributes значение 0, чтобы
;система обращала внимание на значение параметра Attributes
HKCR,"CLSID{645FF040-5081-101B-9F08-00AA002F954E}ShellFolder",CallForAttributes,0x00010001,0
;если параметр Attributes не существует, создаем его
HKCR,"CLSID{645FF040-5081-101B-9F08-00AA002F954E}ShellFolder",Attributes,0x00010003,0

[Rec_Bit]
;сбрасываем биты первого байта параметра
HKCR,"CLSID{645FF040-5081-101B-9F08-00AA002F954E}ShellFolder",Attributes,0,0xff,0
;сбрасываем биты второго байта параметра
HKCR,"CLSID{645FF040-5081-101B-9F08-00AA002F954E}ShellFolder",Attributes,0,0xff,1
;устанавливаем биты первого байта параметра
HKCR,"CLSID{645FF040-5081-101B-9F08-00AA002F954E}ShellFolder",Attributes,1,0x70,0
;устанавливаем бит второго байта параметра, чтобы
;добавить корзине прозрачность
HKCR,"CLSID{645FF040-5081-101B-9F08-00AA002F954E}ShellFolder",Attributes,1,0x80,1

Вот небольшая статья про CustomDestination. Несмотря на то что описание уже есть в руководстве по inf
файлам, здесь немного другой взгляд на комманду.

CustomDestination

Указывает на разделы inf-файла (через запятую), содержащие определение произвольных LDID-номеров на основе данных, введенных пользователем в появляющемся диалоге. Формат строк данных разделов следующий:

"новый LDID-номер"= "раздел, описывающий сообщение", "флаг".

Новый LDID-номер

Число от 40000 до 50000, используемое в дальнейшем в качестве LDID на введенный путь к папке.

Флаг

Определяет способ построения пользовательского LDID и может принимать следующие значения:

— 1 — выводить диалоговое окно, в котором пользователь должен ввести путь к каталогу, к которому в дальнейшем будет вести создаваемый LDID.
— 2 — каталог, к которому будет вести создаваемый LDID, определяется значением параметра реестра.
— 34 — выводить пользователю диалоговое окно с произвольным текстом. При этом сам каталог, на который будет указывать пользовательский LDID, будет взят из реестра.

Раздел, описывающий сообщение

Параметр реестра, из которого будет браться путь к каталогу, текст, выводимый при отсутствии данного параметра реестра или при вводе пользователем пути к каталогу, а также каталог по умолчанию. Формат содержимого данного раздела следующий:

"корневой раздел реестра", "остальной путь к параметру", "название параметра", "выводимое сообщение", "каталог по умолчанию".

Пример
Код: Выделить весь код
[version]
Signature = $CHICAGO$
AdvancedINF=2.5, "Эта строка будет выводится, если на компьютере не найдено библиотеки advpack.dll "

[DestinationDirs]
CopyTo = 49555

[CopyTo]
1.jpg

[DefaultInstall]
CustomDestination=CD
CopyFiles = CopyTo

[CD]
49555 = CDD, 1

[CDD]
;Выводим диалог запроса каталога для установки. Название каталога по
;умолчанию будет считываться из параметра реестра ProgramFilesDir,
;содержащего в себе путь к каталогу %programfiles%. Если по каким-то
;причинам в реестре отсутсвует данный параметр, тогда по умолчанию будет
;использоваться каталог C:\Program files
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion", "ProgramFiles\Dir","Укажите каталог","C:Program Files"
UpdateIniFields аналог UpdateInis

Указывает на разделы inf-файла (через запятую), содержащие в себе описание действий над содержимым значений полей ini-файлов, которые должны быть выполнены в процессе установки.
В отличии от UpdateInis оперирует с частью строки, а не со строкой в целом.
Формат строк этих разделов следующий:

"название раздела в ini-файле", "название ключевого слова ini-файла без знака =", "старое значение данного ключевого слова", "добавляемое значение нового ключевого слова", "флаг операции"

Флаг операции

Может содержать следующие значения.

— 00 — новое значение будет дописано через пробел к текущему значению редактируемого ключевого слова (используется по умолчанию).
— 01 — новое значение будет дописано через запятую к текущему значению редактируемого ключевого слова.
— в случае единицы впереди * интерпретируется как подстановочный символ, в случае нуля как буквальный символ


Ini2Reg

Указывает на разделы inf-файла (через запятую), содержащие в себе описание добавляемых в реестр строк ini-файла. Формат строк этих разделов следующий:

"название ini-файла", "раздел в ini-файле", "ключевое слово ini-файла", "корневой раздел реестра", "остальной путь к ветви реестра", "флаг"

Корневой раздел

Содержит идентификатор корневого раздела реестра, в котором расположен редактируемый параметр. Идентификатор может принимать следующие значения: HKCU (корневой раздел HKEY_CURRENT_USER), HKLM (корневой раздел HKEY_LOCAL_MACHINE), HKU (корневой раздел HKEY_USERS), HKCR (корневой раздел HKEY_CLASSES_ROOT), HKCC (корневой раздел HKEY_CURRENT_CONFIG),HKR (ветвь реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass[{GUID-класса устройства}][номер устройства]).

Флаг

Может содержать следующие значения.

— 0 — после переноса данных в реестр, соответствующие им ключевые слова не будут удаляться из ini-файла. При этом если в реестре уже существует создаваемая ветвь, тогда она переписана не будет. Значение по умолчанию.
— 1 — после переноса данных в реестр, соответствующие им ключевые слова будут удалены из ini-файла. При этом если в реестре уже существует создаваемая ветвь, тогда она переписана не будет.
— 2 — после переноса данных в реестр, соответствующие им ключевые слова не будут удаляться из ini-файла. При этом если в реестре уже существует создаваемая ветвь, ее содержимое будет переписано.
— 3 — после переноса данных в реестр, соответствующие им ключевые слова будут удаляться из ini-файла. При этом если в реестре уже существует создаваемая ветвь, ее содержимое будет переписано.

BackupPath


Определяет папку, в которой будет создан .dat-файл, содержащий в себе значения заархивированных параметров реестра. Значение этого ключевого слова заносится в параметр строкового типа BackupPath ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Advanced INF Setup\"имя архива".

BackupReg

Указывает раздел inf-файла, описывающий все ветви реестра и параметры, значения которых будут занесены в архив. Формат строк раздела следующий:

"корневой раздел реестра", "остальной путь к архивируемой ветви", "параметр, значение которого нужно заархивировать".

PreRollBack

Указывает раздел inf-файла, являющийся начальным при восстановлении настроек реестра (то есть, при запуске inf-файла при помощи команды rundll32.exe ADVPACK.dll, LaunchINFSectionEx "имя информационного файла", "начальный раздел",,64).

ComponentName


Определяет имя создаваемого архива. Данное имя будет использоваться как в качестве имени создаваемого .dat-файла, так и в качестве имени раздела ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Advanced INF Setup, содержащего настройки восстановления параметров реестра из данного архива.

Общий пример для команд ComponentName, ComponentVersion, PreRollBack, BackupReg.
Код: Выделить весь код
[version]
Signature = $CHICAGO$
AdvancedINF=2.5, "Эта строка будет выводится, если на компьютере не найдено библиотеки advpack.dll "

[DestinationDirs]
INFCopy = 17
DelINF = 17

[INFCopy]
;будем считать, что наш устанавливаемый сценарий называется Interfeice.inf
Interfeice.inf

[DelINF]
;на всякий случай удаляем создаваемый перед восстановлением сценарий
Interfeice2.inf

[DefaultInstall]
ComponentName = "Interfeice"
ComponentVersion = "1.0"
BackupPath = %10%Para
BackupReg = BR_Interfeice
PreRollBack = PRB_Interfeice
;копируем сценарий в папку INF, после чего удалить его из текущей папки
CopyFiles = INFCopy
Cleanup

[PRB_Interfeice]
BeginPrompt = Hello
DelFiles = DelINF
UpdateInis=MyIniEdit
RunPostSetupCommands = SaveRestore

[SaveRestore]
;вызываем созданный нами inf-файла для архивирования текущих настроек оболочки
;Теперь вы всегда сможете обратно восстановить настройки интерфейса при помощи команды
;rundll32.exe ADVPACK.dll, LaunchINFSectionEx interfeice2.inf, DefaultInstall,,64
"rundll32.exe ADVPACK.dll, LaunchINFSectionEx interfeice2.inf, DefaultInstall,,32"

[MyIniEdit]
;Создаем inf-файл, с помощью которого мы заархивируем текущие настройки интерфейса оболочки перед их восстановлением.
%17%\Interfeice2.inf, Hello2,, "Prompt = Все-таки предыдущие настройки интерфейса оболочки были лучше? :-) Восстановить их обратно?", 0
%17%\Interfeice2.inf, Hello2,, "Titlie = Восстановление настроек интерфейса", 0
%17%\Interfeice2.inf, PRB_Interfeice2,, "BeginPrompt = Hello2", 0
%17%\Interfeice2.inf, BR_Interfeice,, "HKCU, Control Panel\Appearance", 0
%17%\Interfeice2.inf, BR_Interfeice,, "HKCU, Control Panel\Colors", 0
%17%\Interfeice2.inf, BR_Interfeice,, "HKCU, Control Panel\Current", 0
%17%\Interfeice2.inf, BR_Interfeice,, "HKCU, Control Panel\Cursors", 0
%17%\Interfeice2.inf, BR_Interfeice,, "HKCU, Control Panel\Custom Colors", 0
%17%\Interfeice2.inf, BR_Interfeice,, "HKCU, Control Panel\Desktop", 0
%17%\Interfeice2.inf, DefaultInstall,, "ComponentName = Interfeice2", 0
%17%\Interfeice2.inf, DefaultInstall,, "ComponentVersion = 1", 0
%17%\Interfeice2.inf, DefaultInstall,, "BackupPath = %10%\Para", 0
%17%\Interfeice2.inf, DefaultInstall,, "BackupReg = BR_Interfeice", 0
%17%\Interfeice2.inf, DefaultInstall,, "PreRollBack = PRB_Interfeice2", 0
;на всякий случай создаем inf-файл, с помощью которого заархивируем текущие настройки интерфейса оболочки
%17%\Interfeice2.inf, version,, Signature = $CHICAGO$, 0
%17%\Interfeice2.inf, version,, "AdvancedINF=2.5, Error", 0

[Hello]
Titlie = "Восстановление настроек интерфейса"
Prompt = "Вы уверены, что хотите восстановить прежние настройки интерфейса оболочки? Может нынешние все-таки не так уж и плохи? Так что, восстановить?"

[BR_Interfeice]
HKCU, "Control Panel\Desktop"
HKCU, "Control Panel\Custom Colors"
HKCU, "Control Panel\Cursors"
HKCU, "Control Panel\Current"
HKCU, "Control Panel\Colors"
HKCU, "Control Panel\Appearance"
[.Security]

С помощью inf-файлов можно не только копировать файлы, но и назначать права доступа к копируемым файлам. Для этого и предназначен раздел вида "имя раздела, описывающего копируемые файлы».Security" В этом разделе содержится строка DACL, присваиваемая всем файлам, определенным в соответствующем разделе, указанном в ключевом слове CopyFile.

Пример
Код: Выделить весь код
[version]
Signature = $CHICAGO$

[DestinationDirs]
CP = 53, Рабочий стол

[CP]
qwerty.inf

[CP.Security]
"D:P(A;CI;GR;;;AU)(A;CI;GA;;;BA)(A;CI;GA;;;SY)(A;CI;GR;;;NS)(A;CI;GR;;;LS)(A;CI;CCDCLCSWRPSDRC;;;NO)"

[DefaultInstall]
CopyFiles= CP
PerUserRemove

Если существует секция PerUserInstall, то должна быть и обратная PerUserRemove (подглядел в инстале Win 98)
Данная секция обратна секции PerUserInstall и скорее всего отвечает за выведение из списка Active Setup.

Пример:

Код: Выделить весь код
......
[Uninstall]
;BeginPrompt=BeginPromptSection
;EndPrompt=EndPromptSection
Delfiles=PLAYER.Files.Sys
DelReg=UninstallKey.Reg,DelUninstallKey,PLAYER.Add.Reg,PLAYER.Add.Reg.User
UpdateInis=PLAYER.Update.Ini,Update.Ini.User.Remove,PLAYER.Update.Ini.User,Update.Ini.User.Remove
PerUserInstall=Player.Stub.Remove


[Player.Stub.Remove]
DisplayName=%PackageName%
ComponentID=VDOPlayer
GUID={58A00AC3-777B-11CF-827D-0020AFF5FF72}
IsInstalled=0
Version=2,0,2,0
Locale=EN
StubPath=rundll32.exe advpack.dll,LaunchINFSection %17%\vdolive.inf,PerUserRemove

[PerUserRemove]
DelReg=PLAYER.Add.Reg.User
UpdateInis=Update.Ini.User.Remove,PLAYER.Update.Ini.User


10.04.08 добавил описание секции [.Security] использующую DACL
19.04.08добавил описание секции PerUserRemove
22.04.08 обновил описание UpdateIniFields

-------

Ю-ху!


Последний раз редактировалось volk1234, 22-04-2008 в 01:57.

Это сообщение посчитали полезным следующие участники:
Показать/скрыть список поблагодаривших

Отправлено: 02:55, 09-04-2008 | #107