Nsis 如何在不递归输入目录的情况下使用File/r

Nsis 如何在不递归输入目录的情况下使用File/r,nsis,Nsis,我有一个目录结构,如下所示: parent-dir XXX file.txt YYY file2.txt CCC XXX file3.txt 我目前使用File/r XXX递归地获取父目录\XXX,但由于/r还导致File递归地搜索输入目录,因此我也获取了所有父目录\CCC\XXX 我意识到我可以CreateDirectory XXX和SetOutputPath XXX使用File/r XXX\*然后SetOutputPath返回,但我不

我有一个目录结构,如下所示:

parent-dir
  XXX
    file.txt
    YYY
      file2.txt
  CCC
    XXX
      file3.txt
我目前使用
File/r XXX
递归地获取父目录\XXX,但由于/r还导致File递归地搜索输入目录,因此我也获取了所有父目录\CCC\XXX

我意识到我可以
CreateDirectory XXX
SetOutputPath XXX
使用
File/r XXX\*
然后
SetOutputPath
返回,但我不想每次使用
File/r


是否有一种安全的方法来使用
文件/r
,它不会捕获将来可能添加到父目录中的意外内容?

对于可能获取意外文件的
文件/r
问题,我制作了以下宏:

; SlurpSubDir : include a file pattern from a directory
!macro SlurpSubDir args parentSrcDir subDir pattern parentDstDir
    SetOutPath "${parentDstDir}\${subDir}"
    File ${args} "${parentSrcDir}\${subDir}\${pattern}"
    SetOutPath "${parentDstDir}"
!macroend
!define SlurpSubDir "!insertmacro SlurpSubDir"
我这样调用是为了从安装主文件所在的目录
${InstSrcFiles}
中获取整个
perl
子目录,不包括可能的
.svn
目录,这些文件将安装到
$INSTDIR

${SlurpSubDir} "/r /x .svn" "${InstSrcFiles}" "perl" "*.*" "$INSTDIR"