InnoSetup: Получение AppName в разделе [Code]

Я создаю использование установщика InnoSetup и запись некоторых пользовательских обработчиков в a [Code] раздел. В одном из обработчиков я хотел бы иметь возможность получить значение AppName (или, потенциально, значение других параметров) определенный в [Setup] раздел. Существует ли способ для меня сделать это? Я посмотрел, хотя документация, но я не нашел ничего, что позволило бы мне делать это. Наши файлы InnoSetup на самом деле сгенерированы нашим процессом сборки, который сшивает вместе фрагменты, которые распространены между всеми нашими программами и которые являются конкретной программой, таким образом, это было бы неудобно для определения констант в коде для каждой программы. Там какой-либо удобный способ состоит в том, чтобы сделать это?

Я ищу что-то как

MyString := ExpandConstant('{AppName}');

Кроме {AppName} не определенная константа. Есть ли некоторый способ запросить для параметров, определенных в [Setup] раздел?

19
задан Brian Campbell 18 December 2009 в 04:11
поделиться

2 ответа

Это константа времени сборки, а не значение времени установки. Таким образом, вы можете использовать надстройку Inno Setup Preprocessor для определения таких констант. (Вы можете легко установить его с помощью пакета QuickStart .)

Определите константу:

#define AppName "Excellent Foo App"

Используйте константу в [Setup] :

AppName={#AppName}

И в коде Pascal, Я' m не совсем уверен в синтаксисе, но что-то вроде:

MyString := {#AppName}

Обновление: Я понял, что один из моих скриптов использует {# emit SetupSetting ("AppId")} , что проще. Решение Брайана также обнаружило этот метод, и оно лучше.

15
ответ дан 30 November 2019 в 03:38
поделиться

Вдохновленный ответом Крейга, я просматривал документацию по препроцессору Inno Setup (в ISTool, недоступен в Интернете, насколько я обнаружил) и наткнулся на SetupSetting в препроцессоре.

Ее можно использовать так:

MyString := '{#SetupSetting("AppName")}';

И до тех пор, пока секция [Setup] появляется перед местом, где она используется (ISPP кажется только одним проходом ) и включает определение для AppName , это даст желаемые результаты, без необходимости определять дополнительный макрос для каждого параметра, который мы хотим извлечь.

21
ответ дан 30 November 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: