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 имеет самый младший байт (самый левый).
Пример
Код:
![Выделить весь код](images/misc/selectcode.png)
[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, будет взят из реестра.
Раздел, описывающий сообщение
Параметр реестра, из которого будет браться путь к каталогу, текст, выводимый при отсутствии данного параметра реестра или при вводе пользователем пути к каталогу, а также каталог по умолчанию. Формат содержимого данного раздела следующий:
"корневой раздел реестра", "остальной путь к параметру", "название параметра", "выводимое сообщение", "каталог по умолчанию".
Пример
Код:
![Выделить весь код](images/misc/selectcode.png)
[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.
Код:
![Выделить весь код](images/misc/selectcode.png)
[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.
Пример
Код:
![Выделить весь код](images/misc/selectcode.png)
[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.
Пример:
Код:
![Выделить весь код](images/misc/selectcode.png)
......
[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