我有一个查找旧版本的安装程序,并且作为卸载过程的一部分,将其备份到文件夹中。
对于备份,我尝试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出错。
答案 0 :(得分:1)
在没有_?=的情况下运行卸载程序会导致卸载程序将自身复制到$ temp,然后从那里运行新实例(无需等待)。你应该尝试混合这个;将卸载程序自己复制到$ temp并使用_?= $ instdir运行它,这应该允许您等待进程而不锁定$ instdir ...