我使用以下命令来复制文件.
设置输出路径后……
File "Documents\*"
这个动作完美无瑕.在…之前处理文档目录中的文件没有问题.
如果目录中存在现有文件(具有不同名称)的副本,则无论名称如何,都会复制文件的第一个实例.
更正/更好的解释(也许)
我为这种困惑道歉.请允许我尝试重述这个问题.使用FILE命令提取的文件是此处的问题.这些文件由原始文件和相同文件的副本组成(仅使用不同的名称).
示例:MyDocument.txt和copyOfMyDocument.txt等等.
应用“文件”命令时,为了将文件解压缩到当前输出路径,仅提取文件的第一个实例(复制或原始…但不是两者).再次,我很抱歉这令人困惑,但这是我第一次与NSIS合作.我需要提取所有文件.
解决方法
最简单的方法是将它放在您创建的不同目录中.然后,如果你需要担心重命名(因为评论员已经注意到你的问题没有多大意义),你可以逐个文件地攻击它.
# Extract the files to a directory which can't exist beforehand CreateDirectory $PLUGINSDIR\extracting SetOutPath $PLUGINSDIR\extracting File Documents\* # Now go through file by file FindFirst $0 $1 $OUTDIR\* ${While} $1 != "" ${If} ${FileExists} $DOCUMENTS\$1 # This still isn't infallible,of course. Rename $DOCUMENTS\$1 $DOCUMENTS\$1.local-backup ${EndIf} Rename $OUTDIR\$1 $DOCUMENTS\$1 FindNext $0 $1 ${Loop} FindClose $0 SetOutPath $INSTDIR # Or somewhere else RMDir $PLUGINSDIR\extracting
(注意那是使用LogicLib.)
这不会成为一种非常巧妙的方式,如果你能避免它,那就行了.