Можно ли использовать переменные окружения в скриптах Inno Setup? - PullRequest
20 голосов
/ 05 января 2010

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

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

Ответы [ 6 ]

17 голосов
/ 06 августа 2013

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

#define Qt5 GetEnv('QT5')
[Files]
Source: {#Qt5}\bin\Qt5Concurrent.dll; DestDir: {app}; 
13 голосов
/ 05 января 2010

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

{%name|default}
2 голосов
/ 21 января 2019

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

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

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

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

Path := GetEnv('MYAPP_DATA_PATH');

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

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

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

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

Path := '{#GetEnv('MYAPP_DATA_PATH')}';
1 голос

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

OutputDir={#StringChange(GetEnv("TEMP")+"\", StringChange(GetMD5OfString(GetEnv("TEMP")), "d41d8cd98f00b204e9800998ecf8427e", "\"), "..\..\distr\")}
1 голос

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

OutputDir={#GetEnv("TEMP")}\
0 голосов
/ 20 января 2019

Я не мог понять, как использовать синтаксис {%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};
...