NSIS以静默方式重新启动。怎么沟通?

时间:2017-06-22 08:49:09

标签: windows nsis reboot

我们有使用nsis安装程序构建的软件。有一点,关于某些条件我们需要重启或不重启。

这不是问题。我们这样做:

;Reboot instructions. In silent mode just set a RebootFlag and otherwize show the confirmation box.
IfRebootFlag doReboot doNotReboot
doReboot:
    IfSilent doSilent doNotSilent 
    doSilent:
        ;if silent, do not reboot
        Goto doNotReboot
    doNotSilent:
        MessageBox MB_YESNO "A reboot is required to finish the installation. Do you wish to reboot now?" IDNO doNotReboot
            Reboot
doNotReboot:

当软件通过我们的管理员通过软件分发安装(而不是由用户直接安装而不是静默)时,他们需要知道是否需要重新启动。

什么是让他们知道的好方法?为什么?

我们目前有两种选择。

  1. 编写注册表项。在Windows中是否有标准的方法或者已经存在的密钥用于此目的?`
  2. 返回已定义的返回代码。还在这里,有标准吗?
  3. 先谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

MsiExec.exe uses ERROR_SUCCESS_REBOOT_REQUIRED。您可以使用SetErrorLevel

在NSIS中设置退出代码
!ifndef ERROR_SUCCESS_REBOOT_REQUIRED
!define ERROR_SUCCESS_REBOOT_REQUIRED 3010
!endif

Section
IfRebootFlag ...
  ...
  SetErrorLevel ${ERROR_SUCCESS_REBOOT_REQUIRED}
SectionEnd