我需要找到一种方法来引用 Inno Setup 脚本文件 (.iss) 内的环境变量...
我发现很多关于从 .iss 修改环境的参考资料,但没有关于如何实际使用它的参考资料。这可能吗?
我需要找到一种方法来引用 Inno Setup 脚本文件 (.iss) 内的环境变量...
我发现很多关于从 .iss 修改环境的参考资料,但没有关于如何实际使用它的参考资料。这可能吗?
尝试在 [Files] 部分中指定文件的源位置时遇到了同样的问题。我使用 GetEnv 函数定义了一个新常量。
#define Qt5 GetEnv('QT5')
[Files]
Source: {#Qt5}\bin\Qt5Concurrent.dll; DestDir: {app};
根据Inno Setup 文档中的此页面,可以使用以下语法检索环境变量的值:
{%name|default}
如果您想在install-time或compile-time解析变量,语法是不同的。这就是为什么有两个现有答案显示了完全不同的解决方案,它们适用于某些人而不适用于其他人。因为不同的读者在这里寻找不同的东西。
如果需要解析目标机器上的变量,安装时可以使用{%NAME|DefaultValue}
“constant”。
[Files]
Source: "MyApp.dat"; Dest: "{%MYAPP_DATA_PATH|{app}}"
如果需要在 Pascal Script 代码中解析目标机器上的变量,可以使用GetEnv
support function。
Path := GetEnv('MYAPP_DATA_PATH');
如果您需要在源机器上解析变量,在编译安装程序时,您可以使用GetEnv
预处理器功能:
[Files]
Source: "MyApp.dat"; Dest: "{#GetEnv('MYAPP_DATA_PATH')}"
即使在 Pascal 脚本中,您也可以使用相同的语法,尽管它仅在非常特殊的情况下才有意义。
Path := '{#GetEnv('MYAPP_DATA_PATH')}';
它可以更容易:
OutputDir={#GetEnv("TEMP")}\
如果变量TEMP
不存在,则将使用默认值 - ..\..\distr\
))))
OutputDir={#StringChange(GetEnv("TEMP")+"\", StringChange(GetMD5OfString(GetEnv("TEMP")), "d41d8cd98f00b204e9800998ecf8427e", "\"), "..\..\distr\")}
我不知道如何使用{%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};