Inno setup Inno设置最后如何强制重新启动

Inno setup Inno设置最后如何强制重新启动,inno-setup,restart,Inno Setup,Restart,有人知道如何在完成安装后强制用户重新启动计算机吗? 使用AlwaysRestart=yes安装程序的指令,它所做的只是提示用户重新启动,在现在或以后进行选择,但它实际上不会自动重新启动,或者只显示“立即重新启动”选项。 可能吗 谢谢。不,那是不可能的。这样,就不会触发任何事件让其更改(例如,通过隐藏“否”,我将稍后重新启动计算机单选按钮) 但这是正确的。未经用户许可,不得关闭系统。如果您这样做,它们可能会丢失数据。您可以这样做: [Tasks] Name: "RestartPC"; De

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


谢谢。

不,那是不可能的。这样,就不会触发任何事件让其更改(例如,通过隐藏“否”,我将稍后重新启动计算机单选按钮)


但这是正确的。未经用户许可,不得关闭系统。如果您这样做,它们可能会丢失数据。

您可以这样做:

  [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;

我不想在没有用户许可的情况下重新启动。我只想在“完成”页面中向用户显示,单击“完成”后,安装程序将重新启动,就像许多其他安装程序一样。对不起,我不明白。如果将
AlwaysRestart
设置为
yes
,则最后一页上会出现两个单选按钮,其中选中了yes,restart the computer now,one,因此用户只需按Finish按钮即可重新启动系统。所以我看这里没有任何问题。但是,如果您询问如何显示消息对话框而不是那些单选按钮,即使这样也不可能。这样的消息框会显示,但只有在静默模式下运行安装程序时才会显示。我只想显示一个单选按钮,提醒用户需要重新启动。好的,我明白了。这就是我在回答中描述的情况,因为没有任何事件会触发以使其更改(例如,通过隐藏“否”,我将稍后重新启动计算机单选按钮)。然后,您需要设置某种类型的“永不重新启动”指令,以防止安装程序请求重新启动。当最后一页已经显示时,
ssDone
步骤。但即使不是这样,您仍然需要阻止安装程序要求重新启动,因为用户可能会取消您的对话框,并且当安装程序需要重新启动时,会出现带有这些单选按钮的最后一页(因此用户会被要求两次)。@TLama需要检查,但是,如果IsTaskSelected('RestartPC'),那么在安装过程中的某个早期点(在ssDone之前),是否可以使用
,以防止单选按钮出现?我想您的意思是从
PrepareToInstall
事件返回False。那么,该事件是由您另外请求重新启动的。Inno安装程序在需要时处理自己的重新启动请求,因此这不会阻止Inno安装程序在需要时请求重新启动。@TLama我实际上在同一
过程中考虑了更多关于
如果CurStep=ssPostInstall
CurStepChanged
代码更新以防止重新启动的双重提示。这似乎奏效了。通过隐藏任务、删除未检查标志并将消息框更改为不可抑制的MB_OK,只需警告计算机将重新启动,即可修改此选项以始终强制重新启动@特拉玛你觉得这样做有什么问题吗?