我使用以下命令复制文件。
设置输出路径后......
File "Documents\*"
这个动作完美无瑕。在...之前处理Documents目录中的文件没有问题。
如果目录中存在现有文件(具有不同名称)的副本,则无论名称如何,都会复制该文件的第一个实例。
如何制作它以便复制所有文件,无论它们是否是其他文件的副本?
更正/更好的解释(可能)
我为这种困惑道歉。请允许我尝试重述这个问题。使用FILE命令提取的文件是此处的问题。这些文件由原始文件和相同文件的副本组成(仅使用不同的名称)。
示例:MyDocument.txt和copyOfMyDocument.txt等等..
当应用File命令时,为了将文件解压缩到当前输出路径,只提取文件的第一个实例(复制或原始...但不是两者)。再次,我很抱歉这令人困惑,但这是我第一次与NSIS合作。我需要提取所有文件。
答案 0 :(得分:3)
最简单的方法是将其放在您创建的其他目录中。然后,如果你需要担心重命名(因为评论员已经注意到你的问题没有多大意义),你可以逐个文件地攻击它。
# 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。)
虽然这并不是一种非常巧妙的方式,但如果你能避免它,那就去做吧。
答案 1 :(得分:1)
我以为我明白了你的意思,直到我开始阅读回复;我将使用我的初步解释:给定一个名为“Documents”的目录,其中包含一堆文件(它们被调用的内容,它们的内容无关紧要),您需要一个安装程序将文件复制到某些文件中输出目录。我为这个场景here创建了一个测试安装程序,它对我有用。我在你所追求的内容中缺少什么?