!echo "$%MY_VAR%"
打印
$%MY_VAR%(... \ installer.nsi:46)
所以变量根本没有被替换。这是一个错误吗?我在这里有点难过。如果变量存在,我该如何测试?到目前为止,我以为我可以使用
!if "$%MY_VAR%" = ""
但如果根本没有替代品那就不行。合乎逻辑的结论是使用它:
!if "$%MY_VAR%" = "$%MY_VAR%"
我做错了吗?
答案 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
我认为你已经仔细检查了你的环境变量真的已保存