我想根据我设置参数的方式来不同地构建脚本。
我这样称呼我的脚本:
makensis test.nsi -DFLAG=10
或makensis test.nsi -DFLAG=8
。
我试图将其用作此处的参数
${If} ${FLAG} == 10
...
${IfElse} ${FLAG} == 8
....
${Else}
!error "Set the Flag."
${IfEnd}
但是我仍然只收到错误消息。
我也尝试使用文档4.12中的GetParamters
。
include FileFunc.nsh
!insertmacro GetParameters
!insertmacro GetOptions
${GetParameters} $R0
ClearErrors
${GetOptions} $R0 -DFLAG= $0
!echo $R0
但是它仅返回$R0
,而不返回值。有什么错误,或者有什么策略?
答案 0 :(得分:1)
首先,您必须以makensis -DFLAG=8 test.nsi
的身份执行它,因为参数的解析顺序与传递参数的顺序相同。来自文档:
参数按顺序处理。
makensis /Ddef script.nsi
与makensis script.nsi /Ddef
不同。
第二,您不能将${If}
与!error
混合使用,因为前者是运行时指令,而后者是编译时指令。
使用!if ${FLAG} = 8
或!ifdef FLAG
。
GetParameters
返回传递给最终用户系统而不是编译器上的安装程序的参数。