【问题标题】:Renaming destination file without using Rename in NSIS script在 NSIS 脚本中重命名目标文件而不使用重命名
【发布时间】:2012-07-12 06:17:26
【问题描述】:

如果我使用以下方法复制文件

SetOutPath "$FOO_DIR"
File "..\..\Bar.Dat"

...

SetOutPath "$OTHER_FOO_DIR"
File "..\..\Bar.Dat"

请注意,文件 Bar.Dat 应该稍后在安装期间复制到其他位置。如何为这个特定的复制操作重命名它?如果我对其进行 Rename 操作,以后的操作将找不到它。我一直在寻找将目标文件名传递给文件操作的选项,但找不到。

【问题讨论】:

    标签: nsis


    【解决方案1】:

    实际上尝试了上述但 nsis 编译器抱怨。 稍微重新安排一下就可以了:

    File /oname="DestinationNameOfFile.Dat" "..\..\Bar.Dat"
    

    *源文件名是 /oname 的第二个参数

    【讨论】:

    • 您使用的是哪个版本的 NSIS?我描述的方式在 2.46 中有效。
    • 哦,是的!忘了检查那个。我正在使用 2.46。
    • 我在使用带引号时出错。从目标文件名中删除引号修复了它。 2.46 版
    • 如果输出名称包含空格,则引用整个参数,包括/oname,即:File "/oname=nome with spaces.txt" "Original name.txt"
    【解决方案2】:

    当然,我在发布此问题后立即找到了答案。 *啪啪*

    File 实际上确实采用了目标名称的标志。

     File "..\..\Bar.Dat" /oname="DestinationNameOfFile.Dat"
    

    【讨论】:

    • 引用整个参数,包括/oname,即File "/oname=DestinationNameOfFile.Dat" "..\..\Bar.Dat"