Препроцессор Inno Setup: Функции

ISPP содержит ряд встроенных функций, которые можно использовать для выполнения каких-либо операций во время компиляции и/или изменения сценария. Например, сначала при помощи функции ISPP GetVersionNumbersString получим версию исполняемого файла программы, а затем полученное значение подставим в директиву AppVerName в секции [Setup], используя директиву ISPP emit:

Пример:
; Объявляем переменную с именем MyAppVer и присваиваем ей значение,
; которое вернёт функция GetVersionNumbersString() (получение версии ЕХЕ-файла).
#define MyAppVer GetVersionNumbersString(AddBackslash(SourcePath) + "MyProg.exe")

; Раздел параметров инсталляции
[Setup]
; Используем значение переменной MyAppVer в определении директивы AppVerName.
AppVerName=MyProg version {#MyAppVer}

Встроенные функции также можно вызывать из директивы emit напрямую.

Пример:
; Объявляем переменную с именем MyAppEnterprise
#define MyAppEnterprise

[Setup]
; Устанавливаем имя приложения
AppName=MyProg{#Defined MyAppEnterprise?" Enterprise Edition":""}
; Получаем версию приложения
AppVersion={#GetVersionNumbersString(AddBackslash(SourcePath) + "MyProg.exe")}

Синтаксис прототипов функций

Прототипы функций представлены, как типом возвращаемых функцией данных, именем самой функции и, в круглых скобках, её формальными параметрами.

Ключевые слова int, str, any, и void используются для обозначения следующих типов данных соответственно: целочисленный (64-разрядный со знаком), строковый, любой и нулевой (так называемый пустой, void). Если в качестве возвращаемого результата функции указан нулевой тип данных, значит функция не возвращает никакого значения.

Вопросительный знак (?) в определении типов параметров функции обозначает, что этот параметр является необязательным.

Доступные функции