Подтвердить что ты не робот

InnoSetup: получение AppName в секции [Code]

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

Я ищу что-то вроде

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

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

4b9b3361

Ответ 1

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

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

#define AppName "Excellent Foo App"

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

AppName={#AppName}

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

MyString := {#AppName}

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

Ответ 2

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

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

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

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