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

Можно ли использовать переменные среды в сценариях Inno Setup?

Мне нужно найти способ ссылки на переменные окружения INSIDE в файле Inno Setup script (.iss)...

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

4b9b3361

Ответ 1

В соответствии с эта страница в документации Inno Setup значение переменных среды можно получить с помощью следующего синтаксиса:

{%name|default}

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

Я не мог понять, как использовать синтаксис {%name|default}, поэтому я реализовал то же самое (мне нужно было указать значение по умолчанию, когда env var отсутствует):

#if GetEnv('EXTRA_FILE_LOCATION') != ""
#define EXTRA_LOCATION=GetEnv('EXTRA_FILE_LOCATION')
#else
#define EXTRA_LOCATION="."
#endif
Source: {#EXTRA_LOCATION}\ExtraFile.data; DestDir: {app};

Ответ 6

На время установки

Если вам нужно разрешить переменную на целевом компьютере во время установки, вы можете использовать {%NAME|DefaultValue} "константу".

[Files]
Source: "MyApp.dat"; Dest: "{%MYAPP_DATA_PATH|{app}}"

Если вам нужно разрешить переменную на целевой машине в коде Pascal Script, вы можете использовать GetEnv поддержки GetEnv.

Path := GetEnv('MYAPP_DATA_PATH');

На время компиляции

Если вам нужно разрешить переменную на исходном компьютере, при компиляции установщика вы можете использовать GetEnv препроцессора GetEnv:

[Files]
Source: "MyApp.dat"; Dest: "{#GetEnv('MYAPP_DATA_PATH')}"

Вы можете использовать тот же синтаксис даже в Pascal Script, хотя это будет иметь смысл только в особых случаях.

Path := '{#GetEnv('MYAPP_DATA_PATH')}';