使用CopyFiles而不是File命令进行NSIS递归文件复制

时间:2011-10-20 18:02:24

标签: installer nsis

对于NSIS安装程序,我一直在使用此命令:

SetOutPath $INSTDIR\data
File /r /x *.svn data\newTerrainTiled

将我的数据文件复制到可执行文件本身。我现在有一个更大的数据集,已经超出了安装程序可执行文件的最大大小。我试图将我的代码更改为:

SetOutPath $INSTDIR\data
CopyFiles /r $EXEDIR\data\newTerrainTiled

但显然CopyFiles没有递归标志。我意识到我可以逐个创建newTerrainTiled文件夹的子目录,然后使用带有通配符(*)字符的CopyFiles。我想知道当数据集变大时,是否有人已经提出了使用CopyFiles代替File的递归复制方法。

感谢。

1 个答案:

答案 0 :(得分:8)

  • File指令将文件从您正在编译的系统打包到安装程序中。
  • CopyFiles将文件和/或文件夹从a到b 复制到最终用户系统上!(也就是说,源和目标都在最终用户系统上,并且源文件实际上必须存在在你复制之前)

CopyFiles可以复制一个目录(包含所有文件和子文件夹),但在您的情况下,只有当数据目录与安装程序一起放在CD / DVD上时才会有用。

其他替代方案是:

  • 将数据文件放在外部存档(zip等)中,并使用其中一个NSIS插件进行提取。
  • 将数据附加到生成的安装程序的末尾并解压缩(“无限制”文件大小)