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

dic*_*oce 20 inno-setup environment-variables

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

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

gor*_*ran 17

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

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


Nat*_*man 13

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

{%name|default}
Run Code Online (Sandbox Code Playgroud)

  • @Tim:如果你想在[code]中的字符串中使用变量,请使用ExpandConstant('{%OS}') (3认同)

Mar*_*ryl 11

如果要在install-timecompile-time解析变量,则语法不同。这就是为什么有两个现有答案显示完全不同的解决方案,适用于某些人而不适用于其他人。因为不同的读者在这里寻找不同的东西。


在安装时

如果需要解析目标机器上的变量,安装时可以使用{%NAME|DefaultValue}“常量”

[Files]
Source: "MyApp.dat"; Dest: "{%MYAPP_DATA_PATH|{app}}"
Run Code Online (Sandbox Code Playgroud)

如果需要在 Pascal Script 代码中解析目标机器上的变量,可以使用GetEnv支持函数

[Files]
Source: "MyApp.dat"; Dest: "{%MYAPP_DATA_PATH|{app}}"
Run Code Online (Sandbox Code Playgroud)

在编译时

如果您需要在源机器上解析变量,在编译安装程序时,您可以使用GetEnv预处理器功能

[Files]
Source: "MyApp.dat"; Dest: "{#GetEnv('MYAPP_DATA_PATH')}"
Run Code Online (Sandbox Code Playgroud)

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

Path := GetEnv('MYAPP_DATA_PATH');
Run Code Online (Sandbox Code Playgroud)