Использование секции [Execute] в BartPE

Данная информация уже включена в расширенную справку.

Семантика оформления секции [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-файлы обрабатываются в заданной структорой плагинов очередности и по каждому из них последовательно отрабатываются сразу четыре секции в следующем порядке:

  1. 1 - [DelLine]
  2. 2 - [AddLine]
  3. 3 - [SetValue]
  4. 4 - [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
=====конец кода=====