Препроцессор Inno Setup: #insert

Синтаксис

insert-directive: insert <expr>

Описание

Изменяет точку вставку указанного выражения (expr). По умолчанию каждая обработанная строка сценария добавляется в конец данных вывода препроцессора, формируя таким образом определённую последовательность команд, которые будут переданы компилятору. С помощью insert можно установить точку, в которую будет вставлена следующая обработанная строка вывода препроцессора. insert принимает выражение, которое должно вычисляться как индекс (начиная с нуля) строки. Если этот индекс равен 0, следующая обработанная строка вставляется в начало вывода препроцессора. Если этот индекс равен 1, следующая обработанная строка помещается на вторую позицию вывода препроцессора и т.д.

Использование директивы отмечается специальным счётчиком, значение которого автоматически увеличивается на единицу после каждой операции вставки в данные вывода препроцессора. Таким образом, каждая новая строка будет добавлена после строк, вставленных предыдущей командой.

Не рекомендуется использовать директиву совместно с функциями компоновки сценариев (например, SetSetupSetting), которые самостоятельно позволяют вставить строку. Они смещают часть кода, но не обновляют значение счетчика вставки. Это может привести к другой точке возврата в коде сценария, нарушив его алгоритм.

Чтобы получить необходимое значение (выражение) для директивы insert, можно использовать функцию Find.

Примеры

// Вставка строки, идущей после секции [Icons].
#insert FindSectionEnd("Icons")

// Вставка на 2-ю позицию после объявления секции [Setup].
#insert FindSection("Setup") + 1

// Вставка строк, которые содержат подстроку "somefile.ext"
// (поиск необходимых строк выполняет функция Find).
#insert Find(0, "somefile.ext", FIND_CONTAINS)

См. также:

append