Inno Setup如何强制重启到底

时间:2014-12-03 16:33:06

标签: inno-setup restart

有没有人知道如何强制用户在完成安装后重新启动计算机? 使用AlwaysRestart = yes安装程序的指令,它所做的只是提示用户重新启动,在现在或之后进行选择,但它实际上不会自动重启或仅显示“立即重启”选项。 有可能吗?

感谢。

2 个答案:

答案 0 :(得分:3)

没有。这是不可能的。这个is hardcoded并没有任何事件可以让它改变(例如隐藏否,我将在以后重新启动计算机单选按钮)。

但这是正确的。未经用户许可,切勿关闭系统。他们可能会丢失数据。

答案 1 :(得分:0)

你可以这样做:

  [Tasks]
  Name: "RestartPC"; Description: "Restart the Computer"; GroupDescription: "Post Installation Options"; Flags: unchecked;

  [Code]
  function NeedRestart(): Boolean;
  begin
    if IsTaskSelected('RestartPC') then
      Result := False;
  end;

  procedure CurStepChanged(CurStep: TSetupStep);  
  var
  intResultCode: Integer;
  begin
    if CurStep = ssPostInstall then
      if IsTaskSelected('RestartPC') then
        NeedRestart;
    if CurStep = ssDone then
      begin
        if IsTaskSelected('RestartPC') then
          if SuppressibleMsgBox('A restart was selected, or Setup must restart your computer to complete the installation.' + #13#10 + #13#10 +
            'Would you like to restart now?',
            mbConfirmation, MB_YESNO, IDYES) = IDYES then
              Exec('shutdown.exe', '-r -t 0', '', SW_HIDE,
                ewNoWait, intResultCode);
      end;
  end;