Формат файла модуля
Справка PE Builder v3
Содержание
Формат файла модуля
- Введение
- Создание модуля
- Раздел PEBuilder
- Раздел WinntDirectories
- Раздел SourceDisksFiles
- Раздел SourceDisksFolders
- Раздел Software.AddReg
- Раздел Software.DelReg
- Раздел SetupReg.AddReg
- Раздел Default.AddReg
- Раздел Default.DelReg
- Раздел AddLine
- Раздел DelLine
- Раздел SetValue
- Раздел Append
- Раздел Execute
- Переменные
Введение
Этот документ поможет Вам создать или изменить модули для PE Builder. Основным .inf файлом PE Builder является файл pebuilder.inf. Пожалуйста, не изменяйте этот файл! Если Вам требуется что-либо изменить, используйте файл модуля. Все модули находятся в каталоге plugin. Любой .inf файл в каталоге plugin (не имеет значения в какой папке) имеющий раздел "PEBuilder" считается модулем для PE Builder. Используйте кнопку Подключить/Откл... в окне Модулей для подключения или отключения модулей.
Создание модуля
Кодировка .inf файла модуля должна быть ASCII, а не Unicode. Строки, начинающиеся с ";" (точка с запятой) игнорируются (используются для комментариев).
Любой файл модуля должен начинаться со следующих строк, представленных ниже:
; PE Builder v3 plug-in INF file ; Created by Bart Lagerweij ; http://www.nu2.nu/pebuilder/ ; ; Short description of what the plugin does... [Version] Signature= "$Windows NT$" [PEBuilder] Name="NiceNameOfPlugin" Enable=0 Help="pluginhelp.htm" |
Обратите внимание, что необходимо включить в файл раздел [Version] со строкой Signature= "$Windows NT$". В противном случае .inf файл не будет распознан функцией установки.
Используйте приведенные ниже сведения для добавления разделов для ваших модулей.
Раздел PEBuilder
При создании модуля Ваш .inf файл должен содержать раздел [PEBuilder]!
Name | название модуля |
Enable |
статус модуля 0 - Отключен 1 - Подключен |
Help | имя файла помощи для модуля. Это может быть текстовый, html, doc, pdf или любой другой тип файла. PE Builder использует функцию ShellExecute() для открытия документа согласно ассоциации файла по умолчанию. |
Config | имя файла конфигурации |
Раздел WinntDirectories
Раздел WinntDirectories имеет следующий формат:
directoryID=dirname[, attribute]
где...
directoryID |
идентификатор (номер) каталога В .inf файле модуля можно использовать символы 'a'-'z' для динамического присвоения номера... |
dirname | имя каталога. Если в имени каталога есть пробелы, то следует заключить его в "двойные кавычки". |
attribute |
числовое значение для включения/выключения некоторых опций значение: 1 - Всегда создавать эту папку (даже когда она пуста) 2 - Создавать папку в корневом каталоге (в \ а не в \i386). Для их комбинации надо просто сложить значения... Значение по умолчанию - 0. |
Пример:
[WinntDirectories] ; Всегда создавать папку в корневом каталоге с именем "Bart" a="Bart",3 ; Создать папки в корневом каталоге "Project\Bart\Source" b="Project\Bart\Source",3 ; Создать папки в каталоге i386 с названием "extra\files" c="extra\files",1
Список некоторых (наиболее часто используемых) идентификаторов каталогов:
ID | Каталог | Примечание |
30000 | [корневой] | Корневой каталог назначения PE Builder |
1 | \ | Корневой каталог системы (на установочном CD это каталог \i386, на жестком диске это каталог \minint) |
2 | system32 | |
3 | system32\config | |
4 | system32\drivers | |
5 | system | |
17 | system32\drivers\etc | |
20 | inf | |
21 | Help | |
22 | Fonts | |
24 | msagent\intl | |
52 | msagent | |
124 | WinSxS | |
125 | WinSxS\Manifests | |
252 | WinSxS\Policies |
PE Builder использует идентификаторы каталогов, начинающиеся с 30000. Идентификатор 30000 используется для обозначения корневого каталога назначения, 30001 и выше динамически используются PE Builder.
Раздел SourceDisksFiles
SourceDisksFiles[.build]
Этот раздел используется для копирования файлов. При добавлении номера сборки операционной системы после названия раздела, этот раздел будет использоваться только в том случае, если источник соответствует указанной сборке.
Сборка | Версия |
---|---|
2600 | Windows XP |
3790 | Server 2003 |
Раздел SourceDisksFiles имеет следующий формат:
filename=directoryID[, filenameRenamed][, attribute]
где...
filename | имя файла для копирования |
directoryID | номер (идентификатор) целевого каталога. Смотри раздел WinntDirectories для перечня стандартных идентификаторов каталогов Windows. |
filenameRenamed | целевое имя файла, если требуется переименование. |
attribute |
числовое значение для включения/выключения некоторых опций значение: 1 - используется для функции pluginCheck(). Проверяет, существует ли указанный файл в той же папке, где находится .inf файл перед подключением или продолжением работы. 2 - не производить распаковку файла. 4 - копировать файл только в том случае, если он существует. Игнорировать если файл отсутствует. 8 - изменить имя файла в верхний регистр. При создании ISO-образа PE Builder изменяет регистр имен файлов на верхний, что требуется для загрузки с CD. Значение по умолчанию - 0. |
Раздел SourceDisksFolders
SourceDisksFolders[.build]
Этот раздел используется для копирования папок с файлами. При добавлении номера сборки операционной системы после названия раздела, этот раздел будет использоваться только в том случае, если источник соответствует указанной сборке.
Раздел SourceDisksFolders имеет следующий формат:
sourcepath=directoryID
где...
sourcepath | путь/папка в источнике для копирования. Это точная копия, не производится декомпрессии или извлечения файлов! |
directoryID | номер (идентификатор) целевого каталога. Смотри раздел WinntDirectories для перечня стандартных идентификаторов каталогов Windows. |
Пример:
[WinntDirectories] a="Programs\openoffice",2 [SourceDisksFolders] ; когда папка openoffice является каталогом модуля openoffice=a [SourceDisksFolders] ; когда папка openoffice находится в c:\ c:\openoffice=a
Раздел Software.AddReg
Software.AddReg[.build]
Добавление ключей реестра в HKEY_LOCAL_MACHINE\SOFTWARE.
Раздел имеет следующий формат:
regType, regKey, regValue, regData
где...
regType |
определяет тип информации, которая будет храниться как значения данных. Этот параметр может иметь одно из следующих значений: 0x0, (REG_NONE) создать только ключ, значения нет 0x1, (REG_SZ) строка 0x2, (REG_EXPAND_SZ) строка (с указанием переменных среды) 0x3, (REG_BINARY) двоичные данные 0x4, (REG_DWORD) 32-битный номер 0x7, (REG_MULTI_SZ) несколько строк * Примечание: |
regKey | определяет название ключа как строку |
regValue | определяет название значения как строку |
regData | значения |
Пример:
0x1, "Microsoft\Windows NT\CurrentVersion\Fonts", "Tahoma (TrueType)","TAHOMA.TTF" 0x2, "Control Panel\desktop", "WallPaper", "%systemroot%\system32\nu2.bmp" 0x3, "ControlSet001\Control\TimeZoneInformation", "DaylightStart",\ 00,00,04,00,00,01,00,02,00,00,00,00,00,00,00,00 0x4, "ControlSet001\Control\GraphicsDrivers\DCI", "Timeout", 0x7 0x7, "ControlSet001\Services\VgaSave\Device0", "InstalledDisplayDrivers", "vga", "framebuf", "vga256", "vga64k"
Раздел SetupReg.AddReg
SetupReg.AddReg[.build]
Добавление ключей реестра в ветку реестра "SetupReg.hiv" .
Синтаксис соответствует разделу Software.AddReg
Раздел Default.AddReg
Default.AddReg[.build]
Добавление ключей реестра в HKEY_CURRENT_USER.
Синтаксис соответствует разделу Software.AddReg
Раздел Software.DelReg
Software.DelReg[.build]
Удаление ключей реестра из ветки реестра "Software".
Раздел имеет следующий формат:
regKey[, regValue]
где...
regKey | определяет название ключа для удаления (включая все значения) как строку. |
regValue | определяет название значения для удаления как строку. |
Раздел Default.DelReg
Default.DelReg[.build]
Удаление ключей реестра из ветки реестра "Default".
Синтаксис соответствует разделу Software.DelReg
Раздел AddLine
AddLine[.build]
Добавление строк в раздел.
Строки в разделе AddLine имеют следующий формат:
Filename,Section,StringToAdd
где...
Filename | имя файла, в который необходимо добавить строки. |
Section | название раздела. |
LineToAdd | строка для добавления. |
Пример:
"netmscli.inf", "MSClient.DelReg", "HKLM, Software\Microsoft\Rpc\SecurityService, 9"
Раздел DelLine
DelLine[.build]
Удаление строк из файла.
Строки в разделе DelLine имеют следующий формат:
Filename,Section,StringToDel
где...
Filename | имя файла, из которого необходимо удалить строки. |
Section | название раздела. |
StringToDel | строка для удаления. Не требуется точного совпадения, любые строка, начинающиеся с "StringToDel" ,будут удалены. |
Пример:
"netmscli.inf", "MSClient.Browser.AddReg", "HKR, Parameters, MaintainServerList,"
Раздел SetValue
SetValue[.build]
Записывает значения в файл.
Строки в разделе SetValue имеют следующий формат:
Filename,Section,Key,Value
где...
Filename | имя файла, в который будет производиться запись значений. |
Section | название раздела. |
Key | Ключ, в который будет записываться значение. |
Value | данные. |
Пример:
"netmscli.inf", "Alerter_Service_Inst", "StartType", "3"
Используйте Filename,Section,Key для удаления ключа
Используйте Filename,Section для удаления всего раздела
Раздел Append
Append[.build]
Добавляет файл к другому файлу.
Строки в разделе Append имеют следующий формат:
Filename,FilenameToAppend
где...
Filename | имя файла, в который произойдет добавление данных. |
FilenameToAppend | имя файла, который содержит данные для добавления. |
Пример:
nu2menu.xml, penero_nu2menu.xml
Раздел Execute
Семантика оформления секции [Execute]:
<исполняемый файл> , <параметры комстроки через пробел>
Отрабатывает в BartPE Builder 3.xx
Важные замечания:
- встроенные переменные BartPE(которые обрамляются в символы "@") не работают
- системные переменные окружения работают в параметрах командной строки
- абсолютное указание пути для исполняемого файла не сработает
- работают модификаторы относительных путей "." и ".." и все их комбинации
- при исполнении начальная текущая папка это папка самого BartPE Builder
Примеры вариантов использования:
[Execute]
FILES\my_script1.cmd,my_param1_1 my_param1_2 my_param1_3
FILES\my_script2.cmd,my_param2_1 my_param2_2 my_param2_3
Рабочие варианты
(примеры на базе моего плага "Z Base - optimize project"):
FILES\1_del_files.cmd
.\FILES\1_del_files.cmd
..\Z_OPTIMIZE_PROJECT\FILES\1_del_files.cmd
Примеры ошибочного использования:
C:\BARTPE\PLUGIN\Z_BASE\Z_OPTIMIZE_PROJECT\FILES\1_del_files.cmd
%SystemDrive%:\BARTPE\PLUGIN\Z_BASE\Z_OPTIMIZE_PROJECT\FILES\1_del_files.cmd
Порядок обработки метода Execute:
сразу после копирования файлов по I386\drvindex.inf и получения загрузочного сектора диска. Притом INF-файлы обрабатываются в заданной структорой плагинов очередности и по каждому из них последовательно отрабатываются сразу четыре секции в следующем порядке:
- [DelLine]
- [AddLine]
- [SetValue]
- [Execute]
То есть для двух расположенных в одной папке(чтобы задать порядок отработки) 1.inf и 2.inf, любая из этих четырех секций из файла 1.inf выполниться раньше любой из аналогичных секций из файла 2.inf. Это позволяет изменить содержимое либо самого 2.inf (за исключением модификации включен/выключен - это считывается вообще в самом начале построения проекта) либо модифицировать запускаемые в файле 2.inf через секцию [Execute] обработки.
Пример использования находится в моем конструкторе: связка
PLUGIN\1_BASE\Z_CUSTOM\owner_info.inf
("1 Base - Customize - names, owner and other info")
и PLUGIN\1_BASE\Z_CUSTOM\z_version.inf
("1 Base - Customize - version info")
через скрипт
PLUGIN\1_BASE\Z_CUSTOM\version.cmd
используется для автоматической установки даты сборки в нескольких местах сразу.
Полезняшка:
чтобы получить в тело скрипта имя рабочей папки проекта(она может быть совершенно различна и описывается в корневом файле проекта input.inf) рекомендую использовать такой CMD-скрипт:
=====начало кода=====
@ECHO OFF
SETLOCAL
IF NOT EXIST "%CD%\input.inf" (ECHO Не найден файл настройки PEBUILDER-а&EXIT 0)
FOR /F "USEBACKQ TOKENS=1* EOL=; DELIMS== " %%a IN (`TYPE "%CD%\input.inf"`) DO IF /I "%%a"=="FULLOUTDIR" SET "OUTDIR=%%b"
IF "%OUTDIR%"=="" (ECHO Не указана директория для сборки проекта&EXIT 0)
REM Отбрасывание хвостовых пробелов в переменной %OUTDIR%
REM (лидирующие не могут возникнуть в силу обработки FOR с двумя разделителями)
:MM1
SET "LAST_CHAR=%OUTDIR:~-1%"
IF "%LAST_CHAR%"==" " (SET "OUTDIR=%OUTDIR:~0,-1%") & GOTO MM1
REM <а здесь пойдет основное тело скрипта>
ENDLOCAL
EXIT 0
=====конец кода=====
Переменные
В большинстве строк файла модуля могут использоваться специальные переменные PE-Builder:
Синтаксис: @variable@
где...
переменная | является... |
---|---|
Program | Именем программы-сборщика (по умолчанию PE-Builder) |
Version | Версия программы-сборщика |
IsoFile | Полный путь и имя файла ISO-образа |
OutDir | Полный путь к каталогу назначения |
SourcePath | Полный путь к каталогу источника |
PluginDir | Полный путь к каталогу текущего модуля |
PluginFile | Полный путь и имя файла текущего файла модуля |
Language | Язык, выбранный в настоящее время |
Verbose | Информационный режим (0 - выключен, 1 - включен) |
Build |
Номер сборки Windows (2600 соответствует XP, 3790 соответствует Server 2003) |
Пример:
[SourceDisksFiles]
program.exe=2,,3
lang\@language@.lng=2,,3
Где lang\@language@.lng будет являться lang\german.lng (если выбран немецкий язык).
PE Builder Copyright (c) 2002-2006 Bart Lagerweij. All rights reserved.
Права на программу PE Builder принадлежат (c) 2002-2006 Bart Lagerweij. Все права защищены.
Раздел Execute Copyright (c) 2010 yurkesha
- Версия для печати
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Сейчас на сайте
Пользователей онлайн: 0.
Популярное сегодня
Страницы
Пользователи
- Minja_2024
- MakPol
- mmmeee
- baydat
- Av
- AllaDimm
- eldridge.aahil
- rudmaks
- eakolodkin
- rensx
Популярное содержимое
- Reciever и SSL сертификаты
- Полное удаление драйверов принтера в windows 7
- Автоматическая установка расширений для Chromium и Edge
- Средства среды предустановки Windows 10
- KMS для Windows
- Логофф сессий отключенных пользователей на терминальном сервере
- Windows Server 2019 core и RDP-клиент
- Поддержка папок для сканирования
Комментарии