【问题标题】:Copy a directory using NSIS .使用 NSIS 复制目录。
【发布时间】:2012-06-16 08:37:54
【问题描述】:

我似乎找不到任何关于如何使用 NSIS 复制目录的信息?,我知道有一个文件命令,但是有任何命令可以复制一个目录。

【问题讨论】:

    标签: windows installation nsis


    【解决方案1】:

    反斜杠后与整个内容匹配的星号是强制性的。语法如下。

    参见the manual 第 4.9.1.6 节

    SetOutPath "outputPath\myDirectory"
    File /nonfatal /a /r "myDirectory\*" 
    

    【讨论】:

    • 为什么你在反斜杠后面提到星号是强制性的,而你提供的代码示例中却没有?
    【解决方案2】:

    目录和文件的语法相同,只是您需要通过在末尾提供\ 来指定目录。如果指定的参数是目录,File 命令复制目录。例如,您可以这样做:

    SetOutPath "outputPath"
    File "myDirectory\" #note back slash at the end
    

    但这仅复制顶级目录。要递归地做到这一点,你有/r 开关

    SetOutPath "outputPath"
    File /nonfatal /a /r "myDirectory\" #note back slash at the end
    

    复制myDirectory 的内容(但不复制myDirectory 文件夹本身)。如果没有特定目录,/nonfatal 会忽略而不会出现错误。 /a 也复制文件属性。 /x 开关用于排除文件。

    否则,

    SetOutPath "outputPath\myDirectory"
    File /nonfatal /a /r "myDirectory\" #note back slash at the end
    

    myDirectory的所有内容包括myDirectory文件夹复制到outputPath

    【讨论】:

    • 谢谢!最后一个示例似乎不起作用...要创建文件夹,我必须使用 SetOutPath $INSTDIR\myDirectory 然后 File /a /r "myDirectory\"
    • @nawfal,非常感谢您在最后强调“\”。这让我发疯了!我在 NSIS 文档中没有看到任何引用它的内容。
    • 重要的是,它会产生副作用,就像在编译阶段打包安装程序可执行文件中的目录一样。
    【解决方案3】:

    File 指令从您的安装程序中提取文件,CopyFiles 复制最终用户系统上已经存在的文件和/或目录(如果您需要从安装程序所在的 DVD 复制文件,您可以使用 $EXEDIR也位于...)

    【讨论】:

      【解决方案4】:

      我找到了方法,抱歉给你添麻烦了。

      将文件解压到事先不存在的目录中

      CreateDirectory $Installdir\extracting
      
      SetOutPath $Installdir\extracting
      
      File Directory\*
      

      【讨论】:

      • SetOutPath 已经创建了传入的目录和子目录,所以不需要先调用 CreateDirectory。
      猜你喜欢
      • 1970-01-01
      • 2016-11-02
      • 2011-02-01
      • 2023-04-04
      • 2011-12-17
      • 2018-07-24
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多