NSIS难以移动文件夹

时间:2012-08-13 15:27:57

标签: macros directory nsis

我有一个查找旧版本的安装程序,并且作为卸载过程的一部分,将其备份到文件夹中。

对于备份,我尝试Rename(有时会失败),CreateDirectory然后CopyFiles然后删除它们(耗时,大量文件和目录),并且更喜欢使用Move Folder,其中每个函数都替换为其非版本(例如.MoveFolder_Locate_moveFile - > un.MoveFolder_Locate_moveFile)。

StrCpy $switch_overwrite 1
!insertmacro un.MoveFolder "$INSTDIR" "$BACKUP_FOLDER" "*.*"

工作正常......

然而我正在推出卸载程序:

ExecWait '$R0'

我一把它变成

ExecWait '$R0 _?=$INSTDIR'

MoveFile出错。

1 个答案:

答案 0 :(得分:1)

在没有_?=的情况下运行卸载程序会导致卸载程序将自身复制到$ temp,然后从那里运行新实例(无需等待)。你应该尝试混合这个;将卸载程序自己复制到$ temp并使用_?= $ instdir运行它,这应该允许您等待进程而不锁定$ instdir ...