【问题标题】:NSIS difficulty moving foldersNSIS 难以移动文件夹
【发布时间】:2012-08-14 03:00:42
【问题描述】:

我有一个寻找旧版本的安装程序,并在卸载过程中将其备份到一个文件夹中。

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

【问题讨论】:

    标签: macros directory nsis


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-26
      相关资源
      最近更新 更多