Macros NSIS难以移动文件夹

Macros NSIS难以移动文件夹,macros,directory,nsis,Macros,Directory,Nsis,我有一个查找旧版本的安装程序,作为卸载过程的一部分,将其备份到一个文件夹中 对于备份,我尝试了重命名(有时会失败),创建目录,然后复制文件,然后删除它们(耗时、大量文件和目录),并且更喜欢使用,其中每个函数都被其un版本替换(如.MoveFolder\u Locate\u moveFile->un.MoveFolder\u Locate\u moveFile) 它工作得很好 但我在启动卸载程序时使用了: ExecWait '$R0' 只要我把它改成 ExecWait '$R0 _?=$INST

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

对于备份,我尝试了
重命名
(有时会失败),
创建目录
,然后
复制文件
,然后删除它们(耗时、大量文件和目录),并且更喜欢使用,其中每个函数都被其un版本替换(如
.MoveFolder\u Locate\u moveFile
->
un.MoveFolder\u Locate\u moveFile

它工作得很好

但我在启动卸载程序时使用了:

ExecWait '$R0'
只要我把它改成

ExecWait '$R0 _?=$INSTDIR'

MoveFile给出了一个错误。

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

ExecWait '$R0 _?=$INSTDIR'