NSIS:如何使用参数来构建不同的安装程序

时间:2018-08-13 09:06:16

标签: installer nsis

我想根据我设置参数的方式来不同地构建脚本。

我这样称呼我的脚本:

makensis test.nsi -DFLAG=10makensis 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,而不返回值。有什么错误,或者有什么策略?

1 个答案:

答案 0 :(得分:1)

首先,您必须以makensis -DFLAG=8 test.nsi的身份执行它,因为参数的解析顺序与传递参数的顺序相同。来自文档:

  

参数按顺序处理。 makensis /Ddef script.nsimakensis script.nsi /Ddef不同。

第二,您不能将${If}!error混合使用,因为前者是运行时指令,而后者是编译时指令。

使用!if ${FLAG} = 8!ifdef FLAG

GetParameters返回传递给最终用户系统而不是编译器上的安装程序的参数。