NSIS:如果存在环境变量,如何在编译时检查

时间:2014-03-03 14:15:00

标签: nsis

!echo "$%MY_VAR%"

打印

  

$%MY_VAR%(... \ installer.nsi:46)

所以变量根本没有被替换。这是一个错误吗?我在这里有点难过。如果变量存在,我该如何测试?到目前为止,我以为我可以使用

!if "$%MY_VAR%" = ""

但如果根本没有替代品那就不行。合乎逻辑的结论是使用它:

!if "$%MY_VAR%" = "$%MY_VAR%"

我做错了吗?

2 个答案:

答案 0 :(得分:3)

!if x = y实际上是一个数字测试,您需要使用==来测试字符串。

您需要欺骗编译器才能使其正常工作:

; NSIS 2+
!define DOLLAR $
!if "$%foo%" == "${DOLLAR}%foo%"
!echo "%foo% not set"
!endif

; NSIS 3+
!if "$%foo%" == "${U+24}%foo%"
!echo "%foo% not set"
!endif

答案 1 :(得分:0)

我刚做了一个快速测试(NSIS 3.0a0和Unicode NSIS 2.46.5,两者都在Windows 7 x64上),我可以毫无疑问地取代$%ENV_VAR%。这就是我测试它的方式:

!if "$%MY_VAR%" != ""
    !echo "MY_VAR is set"
!else
    !warning "MY_VAR not set"
!endif

我认为你已经仔细检查了你的环境变量真的已保存