if-directive: | if <expr> |
elif-directive: | elif <expr> |
else-directive: | else |
endif-directive: | endif |
Директивы if, elif, else и endif представляют собой операторы ветвления, с помощью которых можно обеспечить выполнение каких-либо операций (набора команд) только при соблюдении определённых условий.
Сначала ISPP выполняет проверку условия, следующего за директивой if или elif. Если условие истинно, то выполняются все команды сценария, записанные до последующих директив elif, else или endif. Если условие ложно, то эти команды сценария компилятором Inno Setup будут пропущены.
Если в конструкции if используется директива else и результат проверки оказался ложным, то будут выполнены команды сценария, которые следуют за директивой else. В противном случае ничего не будет выполнено.
При создании сценария с операторами ветвления каждый блок команд, начинающийся директивой if, должен обязательно закрываться директивой endif. Внутри конструкции if ... endif может быть любое количество директив elif, и только одна директива else, которая должна быть последней перед директивой endif.
Директивы if, elif, else и endif могут быть вложенными и организовать многомерные конструкции ветвления кода сценария.
Методы использования условных директив нельзя смешивать между собой. Если директива if используется простым методом, то и связанные с ней директивы (elif, else или endif) также должны быть использованы этим методом, но не вложенным (или наоборот).
// Объявляем переменную Lang. #define Lang [Tasks] // Присваиваем переменной Lang значение считанное из файла // (см. выражение после оператора условия ==). // Сравниваем строку "English" со значением переменной Lang. #if "English" == Lang = ReadIni(SetupSetting("MessagesFile"), \ "LangOptions", "LanguageName") // Если результат условия является истинной, // то выполняем следующие команды. Description: "For all users"; Name: all // Если предыдущее условие ложно // (строка "English" не равна значению переменной Lang), // то выполняем проверку следующего условия. // Сравниваем строку "Russian" со значением переменной Lang. #elif "Russian" == Lang // Если результат условия является истинной, // то выполняем следующие команды. Description: "Для всех пользователей"; Name: all // Если ни одно из условий не выполняется, #else // то выдаем сообщение об ошибке. #error Unsupported language // Конец условия if. #endif