【问题标题】:NSIS recursive file copy using CopyFiles rather than File command使用 CopyFiles 而不是 File 命令的 NSIS 递归文件复制
【发布时间】:2011-10-20 18:02:23
【问题描述】:

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

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

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

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

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

谢谢。

【问题讨论】:

  • CopyFiles 语法是:CopyFiles [flags]

标签: installation nsis


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

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

其他选择是:

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

【讨论】:

  • 我了解 CopyFiles 语法是什么。我了解 CopyFiles 要求文件已经存在于最终用户的系统上。 newTerrainTiled 有很多子目录,并且它们被编辑得足够多,以至于在安装脚本中创建 zip 存档或存储一堆 CreateDirectory/CopyFiles 命令是有问题的。我不知道如何将数据附加到生成的安装程序的末尾,也不知道如何提取它。我最想知道的是:有人写了一个宏或函数来执行递归 CopyFiles 吗?
  • 没关系,我是个白痴。正如你所说,CopyFiles 已经会进行递归复制——在我第一次阅读时不知何故错过了。
猜你喜欢
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多