2010-01-04 3 views
19

Мне нужно найти способ ссылки на переменные окружения ВНУТРИ файла сценария Inno Setup (.iss) ...Можно ли использовать переменные среды в скриптах Inno Setup?

Я нашел много ссылок на ИЗМЕНЕНИЕ среды из .iss, но никто не знает, как на самом деле его использовать. Это возможно?

ответ

13

Согласно this page в документации по установке Inno, значение переменных окружения можно получить, используя следующий синтаксис:

{%name|default} 
+1

Я не могу по какой-либо причине используйте переменные env. Может ли кто-нибудь отправить пример? Я добавил {% OS} к имени выходного файла, и все, что я возвращаю, - это исходное имя файла с добавленной строкой «{% OS}» - не значение, которое я хочу из среды. – Tim

+3

@Tim: Если вы хотите использовать переменную в строке внутри вашего [кода], используйте ExpandConstant ('{% OS}') – panschk

14

Я столкнулся с той же проблемой при попытке определить местоположение источника файлов в [Файлы]. Я использовал функцию GetEnv для определения новой константы.

#define Qt5 GetEnv('QT5') 
[Files] 
Source: {#Qt5}\bin\Qt5Concurrent.dll; DestDir: {app}; 
+0

, это правильный способ использования в define. но там {% name | default} не работает. – pHiL

+0

Это здорово, спасибо! Теперь я ищу способ выразить значение по умолчанию, но это хорошее начало. – CJBrew

+0

Попробуйте '' #define Qt5 GetEnv ('QT5') #if Qt5 == "" #define Qt5 "бла" #endif '' –

-1

Это может быть еще проще:

OutputDir={#GetEnv("TEMP")}\ 
+0

Это препроцессора макрос. Это разрешено во время компиляции! –

-1

Если переменная TEMP не существует, то значение по умолчанию будет использоваться - ..\..\distr\))))

OutputDir={#StringChange(GetEnv("TEMP")+"\", StringChange(GetMD5OfString(GetEnv("TEMP")), "d41d8cd98f00b204e9800998ecf8427e", "\"), "..\..\distr\")} 
+0

Это макрос препроцессора. Это разрешено во время компиляции! –

Смежные вопросы