如何在Inno Setup中的安装后强制重启

詹斯

在我的设置中,我必须安装一个外部驱动程序。
在极少数情况下,安装失败,因此我必须删除旧驱动程序并重新启动,然后才能重试。

我将外部驱动程序安装在中ssPostInstall

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
  begin
    if Exec(ExpandConstant('{app}\external.exe'), '-install', '', SW_SHOW,
            ewWaitUntilTerminated, ResultCode) then
    begin
      { handle success if necessary; ResultCode contains the exit code }
    end
    else begin
      { handle failure if necessary; ResultCode contains the error code }
      bReboot := true;
    end;
  end;

function NeedRestart(): Boolean;
begin
  Result := bReboot;
end;

不幸的是,这是行不通的,因为NeedRestart之前已经调用过ssPostInstall

还有其他方法可以触发重启吗?
我不想定AlwaysRestart = yes

我可以弹出一个MsgBox通知用户,并告诉他们该怎么做。但是,如果可以在安装程序中自动进行处理,那就更好了。

马丁·普里克里(Martin Prikryl)

您可以尽快进行安装。例如,在external.exe安装后立即使用AfterInstall

[Files]
Source: "external.exe"; DestDir: "{app}"; AfterInstall: InstallDriver
[Code]
procedure InstallDriver;
begin
  if Exec(ExpandConstant('{app}\external.exe'), '-install', '', SW_SHOW,
          ewWaitUntilTerminated, ResultCode) then
  begin
    { handle success if necessary; ResultCode contains the exit code }
  end
    else
  begin
    { handle failure if necessary; ResultCode contains the error code }
    bReboot := true;
  end;
end;

另一个选择是使用ssInstallstep(甚至PrepareToInstallevent)并使用编程方式提取文件ExtractTemporaryFile


顺便说一句,如果external.exe仅是安装程序,则可能需要将其“安装”到{tmp}(使其自动删除)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Inno Setup安装JRE?

来自分类Dev

如何在inno setup中进行mysql的静默安装?

来自分类Dev

如何在Inno Setup中使用Pascal变量?

来自分类Dev

如何在Inno Setup中捕获OleObject异常?

来自分类Dev

如何在Inno Setup中使用特殊字符?

来自分类Dev

如何在Inno Setup中翻译MsgBox中包含的文本?

来自分类Dev

如何在Inno Setup中注释语句块?

来自分类Dev

如何在Inno Setup中分割字符串

来自分类Dev

Inno Setup到底如何强制重启

来自分类Dev

Inno Setup:/ verysilent安装后如何自动运行程序?

来自分类Dev

Inno Setup:在安装过程中重新启动不会在重启后开始

来自分类Dev

Inno Setup:如何在InitializeWizard中使用{app}?

来自分类Dev

如何在Inno Setup中最小化安装程序?

来自分类Dev

Inno Setup:如何在“运行”部分操作进度栏?

来自分类Dev

如何在Inno Setup中解析JSON字符串?

来自分类Dev

Inno Setup:如何在“注册”部分操作进度栏?

来自分类Dev

如何在Inno Setup中创建图像按钮?

来自分类Dev

在静默安装现有的Inno Setup程序包后如何强制不运行该程序

来自分类Dev

Inno Setup如何在浏览对话框上显示网络?

来自分类Dev

如何在Inno Setup中将LanguageID写入注册表?

来自分类Dev

在Inno Setup中安装部分后,如何移动任务部分?

来自分类Dev

如何在Inno Setup的[CustomMessages]部分中使用通配符?

来自分类Dev

如何在inno setup中进行mysql的静默安装?

来自分类Dev

如何在Inno Setup中删除安装页面中的底部面板

来自分类Dev

如何在Inno Setup中翻译MsgBox中包含的文本?

来自分类Dev

如何在Inno Setup中仅根据条件安装文件(外部配置文件)

来自分类Dev

如何在Inno Setup中延迟而不冻结

来自分类Dev

如何在 Inno Setup iss 文件中调用 GetNativeSystemInfo?

来自分类Dev

Inno setup - 如何在设置悬停中更改版本?

Related 相关文章

  1. 1

    如何从Inno Setup安装JRE?

  2. 2

    如何在inno setup中进行mysql的静默安装?

  3. 3

    如何在Inno Setup中使用Pascal变量?

  4. 4

    如何在Inno Setup中捕获OleObject异常?

  5. 5

    如何在Inno Setup中使用特殊字符?

  6. 6

    如何在Inno Setup中翻译MsgBox中包含的文本?

  7. 7

    如何在Inno Setup中注释语句块?

  8. 8

    如何在Inno Setup中分割字符串

  9. 9

    Inno Setup到底如何强制重启

  10. 10

    Inno Setup:/ verysilent安装后如何自动运行程序?

  11. 11

    Inno Setup:在安装过程中重新启动不会在重启后开始

  12. 12

    Inno Setup:如何在InitializeWizard中使用{app}?

  13. 13

    如何在Inno Setup中最小化安装程序?

  14. 14

    Inno Setup:如何在“运行”部分操作进度栏?

  15. 15

    如何在Inno Setup中解析JSON字符串?

  16. 16

    Inno Setup:如何在“注册”部分操作进度栏?

  17. 17

    如何在Inno Setup中创建图像按钮?

  18. 18

    在静默安装现有的Inno Setup程序包后如何强制不运行该程序

  19. 19

    Inno Setup如何在浏览对话框上显示网络?

  20. 20

    如何在Inno Setup中将LanguageID写入注册表?

  21. 21

    在Inno Setup中安装部分后,如何移动任务部分?

  22. 22

    如何在Inno Setup的[CustomMessages]部分中使用通配符?

  23. 23

    如何在inno setup中进行mysql的静默安装?

  24. 24

    如何在Inno Setup中删除安装页面中的底部面板

  25. 25

    如何在Inno Setup中翻译MsgBox中包含的文本?

  26. 26

    如何在Inno Setup中仅根据条件安装文件(外部配置文件)

  27. 27

    如何在Inno Setup中延迟而不冻结

  28. 28

    如何在 Inno Setup iss 文件中调用 GetNativeSystemInfo?

  29. 29

    Inno setup - 如何在设置悬停中更改版本?

热门标签

归档