0

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

对于备份,我尝试过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 给出错误。

4

1 回答 1

1

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

于 2012-08-13T15:53:57.587 回答