NSIS不备份所有文件

时间:2012-06-27 00:49:43

标签: backup nsis move

NSIS安装程序会创建一个相当大的文件夹结构。安装程序启动时,它会检查注册表以查看是否安装了当前版本...

然后询问您是否要备份当前文件夹。

它大部分时间都有效,但有时候在备份旧版本时,而不是复制整个目录,它只复制图标。

!insertmacro un.MoveFolder "$INSTDIR" "${BACKUP_FOLDER}" "*.*"

参考:http://nsis.sourceforge.net/MoveFileFolder

!insertmacro MoveFolder "$INSTDIR\[path\]source-folder[\]" "$INSTDIR\[path\]destination-folder[\]" "file-mask"

之后,它会转到删除部分......

难道没有时间去做吗?它在完成移动之前开始下一个过程?

还有什么可以进行,以便它不会复制整个文件夹?

在安装程序中,我看到了

Create folder c:\backup_folder
Moving files: c:\current_folder\*.* to c:\backup_folder\
Delete file: c:\current_folder\file1.........

最后,backup_folder只有图标(不是所有文件)

编辑:解决方案 - 请在此处查看我的帖子NSIS difficulty moving folders - $ INSTDIR确实是一个特殊文件夹,因此我必须将卸载程序移动到$ TEMP文件夹。

1 个答案:

答案 0 :(得分:1)

你有什么理由不能使用内置的CopyFiles命令吗?

要调试此操作,我建议您在DetailPrint功能的顶部附近添加.MoveFolder_Locate_moveFile。如果你看到所有的文件名都经过,则问题是该函数中的移动操作,如果没有,那么问题出现在这段代码使用的${Locate}宏中。

另一种方法是使用Process Monitor ...

观察文件系统操作