| 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)