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). Если в качестве возвращаемого результата функции указан нулевой тип данных, значит функция не возвращает никакого значения.
Вопросительный знак (?) в определении типов параметров функции обозначает, что этот параметр является необязательным.