我需要找到一种方法来引用环境变量INSIDE安装脚本文件(.iss)......
我发现有很多关于修改.iss的环境的参考资料,但没有提到如何实际使用它。这可能吗?
答案 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};