Nsis 尝试在${ForEachIn}内使用文件时出错?
在NSIS脚本的.onInit函数中有以下代码块Nsis 尝试在${ForEachIn}内使用文件时出错?,nsis,Nsis,在NSIS脚本的.onInit函数中有以下代码块 ; Split the supplied artifacts array. nsArray::Split ARTIFACT_ARRAY "${ARTIFACTS}" ";" ${ForEachIn} ARTIFACT_ARRAY $R0 $R1 File ${IVY_ROOT}\"$R1" ${Next} ${ARTIFACTS}是在NSIS编译时从ANT传入的属性,基本上是一个逗号分隔的文件列表。当我试图编译脚本时,我得到
; Split the supplied artifacts array.
nsArray::Split ARTIFACT_ARRAY "${ARTIFACTS}" ";"
${ForEachIn} ARTIFACT_ARRAY $R0 $R1
File ${IVY_ROOT}\"$R1"
${Next}
${ARTIFACTS}是在NSIS编译时从ANT传入的属性,基本上是一个逗号分隔的文件列表。当我试图编译脚本时,我得到下面的错误
[exec] File: "C:\My_Workspaces\WEnDL\\deployments\ivy\"$R1"" -> no files found.
[exec] Usage: File [/nonfatal] [/a] ([/r] [/x filespec [...]] filespec [...] |
[exec] /oname=outfile one_file_only)
[exec] Error in script "C:\My_Workspaces\WEnDL\/deployments/selections.nsis" on line 394 -- aborting creation process
欢迎使用任何指针。您不能在
文件
说明中使用变量,因为变量仅在最终用户系统上计算。插件也是如此。您需要坚持使用${defines}和以开头的指令代码>在编译时解析时
最好的选择是让您的生成系统使用文件
指令生成.nsh(如果可能):
Section
SetOutPath $InstDir
!include "generatedfilelist.nsh"
SectionEnd
另一个选项是使用调用外部工具或批处理文件!系统
,让他们解析列表并生成.nsh
最后,在NSISV3中,可以通过宏递归和实现这一点!searchparse
+!searchreplace
但可用的递归深度有限,因此可能无法根据列表中的文件数工作。文件路径上的引号错误。