我在NSIS脚本的.onInit函数中有以下代码块。
schema2
$ {ARTIFACTS}是在NSIS编译时从ANT传入的属性,基本上是逗号分隔的文件列表。当我尝试编译脚本时,我得到以下错误。
; Split the supplied artifacts array.
nsArray::Split ARTIFACT_ARRAY "${ARTIFACTS}" ";"
${ForEachIn} ARTIFACT_ARRAY $R0 $R1
File ${IVY_ROOT}\"$R1"
${Next}
任何指示赞赏。
答案 0 :(得分:0)
您不能在File
指令中使用变量,因为变量仅在最终用户系统上进行评估。插件也是如此。在编译时解析时,您需要坚持使用$ {defines}和以!
开头的指令。
最好的选择是让构建系统在可能的情况下使用File
指令生成.nsh:
Section
SetOutPath $InstDir
!include "generatedfilelist.nsh"
SectionEnd
另一种选择是使用!system
调用外部工具或批处理文件,让他们解析列表并生成.nsh。
最后,在NSIS v3中,有可能通过宏递归和!searchparse
+ !searchreplace
来解决此问题,但可用的递归深度是有限的,因此它可能不起作用,具体取决于中的文件数量你的清单。