如果ExecWait命令获取特定的返回码,则NSIS回滚安装程序

时间:2017-05-02 16:55:11

标签: nsis

我目前正在使用以下脚本与我的应用程序一起安装驱动程序:

!macro customInstall
  ExecWait '"$INSTDIR\resources\DPInst.exe" /sw'
!macroend

但是,如果DPInst返回>= 0x80010000,则表示一个或多个驱动程序安装失败,因此我需要回滚安装并退出。知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

ExecWait可以将进程退出代码存储在第二个参数中。你可以做多少回滚,最好只是在安装阶段尽早完成:

!include LogicLib.nsh
Section
SetOutPath "$instdir\resources"
File "whatever\DPInst.exe"
ExecWait '"$INSTDIR\resources\DPInst.exe" /sw' $0
${If} $0 U>= 0x80010000
  Delete "$INSTDIR\resources\DPInst.exe"
  RMDir $instdir\resources
  RMDir $instdir
  MessageBox mb_iconstop "Error blah blah"
  Abort
${EndIf}
SectionEnd