所以这是一个非常基本的问题,但我似乎无法找到我做错的事情。
因此,我正在摆弄NSIS中的定义并且它没有像我期望的那样工作,因此我将问题缩小到最小的部分,我仍然无法按照我的预期使其工作。
脚本如下所示:
!ifndef b
!define b ""
!endif
!if $b=="b"
!define a "b"
!else
!define a "c"
!endif
Section
MessageBox MB_OK "a: ${a} b: ${b}"
SectionEnd
我使用标记/Db=b
运行它。
输出仍然是:
a: "c" b: "b"
我在这里错过了一些微不足道的事情!
答案 0 :(得分:2)
b是定义,而不是变量:
!ifndef b
!define b ""
!endif
!if "${b}" == "b" # <-- Modify this line.
!define a "b"
!else
!define a "c"
!endif
Section
MessageBox MB_OK "a: ${a} b: ${b}"
SectionEnd
此外,我建议您在使用if
时引用所有内容,因为如果define(或变量值)为空,它会发出错误。