1

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 移动文件夹困难- $INSTDIR 确实是一个特殊文件夹,因此我不得不将卸载程序移动到 $TEMP 文件夹。

4

1 回答 1

1

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

要对此进行调试,我建议您在函数DetailPrint顶部附近添加一个。.MoveFolder_Locate_moveFile如果您看到所有文件名都过去了,那么问题出在该函数中的移动操作,如果没有,则问题出在${Locate}此代码使用的宏中。

另一种选择是使用Process Monitor观察文件系统操作......

于 2012-06-27T03:30:11.493 回答