Препроцессор Inno Setup: #ifdef, #ifndef, #ifexist, #ifnexist

Синтаксис

ifdef-directive: ifdef <ident>
ifndef-directive: ifndef <ident>
ifexist-directive: ifexist <expr>
ifnexist-directive: ifnexist <expr>

Описание

Директивы ifdef, ifndef, ifexist и ifnexist можно использовать там, где необходимо применить директиву if, чтобы обеспечить выполнение участка кода только при соблюдении определённых условий. Состояние директивы ifdef является истинным, если указанный идентификатор был определён (найден), и наоборот – ложным, если идентификатор не определён или был удалён директивой undef. Все эти директивы позволяют только проверить наличие или отсутствие идентификаторов, установленных директивой define.

Директивы ifexist и ifnexist позволяют проверить наличие или отсутствие указанного файла, соответственно.

По аналогии с директивой if, каждый блок команд, начинающийся директивой ifdef, ifndef, ifexist или ifnexist, должен обязательно закрываться директивой endif.

Примеры

[Files]
// Проверяем наличие файла "myfile.ext".
// Если файл существует, то выполняем команды, определенные условием.
// Если файл НЕ существует, то управление передается директиве endif.
#ifexist "myfile.ext"
  Filename: "myfile.ext"; DestDir: {app}
// Конец условия ifexist.
#endif

// Проверяем наличие переменной "Enterpise".
// Если переменная существует, то выполняем команды, определенные условием.
// Если переменная НЕ существует, то управление передается директиве endif.
#ifdef Enterpise
  Filename: "extra.dll"; DestDir: {app}
// Конец условия ifdef.
#endif

См. также:

FileExists