可以在Inno Setup脚本中使用环境变量吗?

时间:2010-01-04 21:08:49

标签: environment-variables inno-setup

我需要找到一种方法来引用环境变量INSIDE安装脚本文件(.iss)......

我发现有很多关于修改.iss的环境的参考资料,但没有提到如何实际使用它。这可能吗?

6 个答案:

答案 0 :(得分:17)

我在尝试指定[Files]部分中文件的源位置时遇到了同样的问题。我使用GetEnv函数来定义一个新的常量。

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

答案 1 :(得分:13)

根据Inno Setup文档中的this page,可以使用以下语法检索环境变量的值:

{%name|default}

答案 2 :(得分:2)

在安装时

如果在安装时需要在目标计算机上解析变量,则可以使用{%NAME|DefaultValue} "constant"

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

如果需要使用Pascal脚本代码在目标计算机上解析变量,则可以使用GetEnv support function

Path := GetEnv('MYAPP_DATA_PATH');

在编译时

如果需要在源计算机上解析变量,则在编译安装程序时,可以使用GetEnv preprocessor function

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

即使在Pascal Script中也可以使用相同的语法,尽管只有在非常特殊的情况下才有意义。

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

答案 3 :(得分:1)

它可以更容易:

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

答案 4 :(得分:1)

如果变量TEMP不存在,那么将使用默认值 - ..\..\distr\))))

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

答案 5 :(得分:0)

我不知道如何使用{%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};