NSIS:如何使用参数构建不同的安装程序
NSIS: How to use a paramter to build different installer
我想以不同方式构建我的脚本,具体取决于我如何设置参数。
我这样调用我的脚本:
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= [=11=]
!echo $R0
但它只是 returns $R0
而不是值。有什么错误或有更好的策略?
首先,您必须以 makensis -DFLAG=8 test.nsi
的形式执行它,因为参数的解析顺序与您传入的顺序相同。来自文档:
Parameters are processed in order. makensis /Ddef script.nsi
is not the same as makensis script.nsi /Ddef
.
其次,不能将${If}
与!error
混用,因为前者是运行时指令,后者是编译时指令。
使用!if ${FLAG} = 8
或!ifdef FLAG
。
GetParameters
returns 参数传递给最终用户系统上的安装程序,而不是编译器。
我想以不同方式构建我的脚本,具体取决于我如何设置参数。
我这样调用我的脚本:
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= [=11=]
!echo $R0
但它只是 returns $R0
而不是值。有什么错误或有更好的策略?
首先,您必须以 makensis -DFLAG=8 test.nsi
的形式执行它,因为参数的解析顺序与您传入的顺序相同。来自文档:
Parameters are processed in order.
makensis /Ddef script.nsi
is not the same asmakensis script.nsi /Ddef
.
其次,不能将${If}
与!error
混用,因为前者是运行时指令,后者是编译时指令。
使用!if ${FLAG} = 8
或!ifdef FLAG
。
GetParameters
returns 参数传递给最终用户系统上的安装程序,而不是编译器。