首页 > 解决方案 > Inno Setup 不会在 PrepareToInstall 部分重新启动

问题描述

我试图在启用 MSSQLServer 所必需的 .NET 3.5 后提示用户重新启动计算机。例子:

function PrepareToInstall(var NeedsRestart: Boolean): String;
begin
  Log('PrepareToInstall() called');
  GetWindowsVersionEx(Version);
  if (Version.Major = 10) then begin
   NeedsRestart :=True;
  end
end;

我错过了什么吗?

标签: inno-setuprebootpascalscript

解决方案


NeedsRestart仅当PrepareToInstall事件函数实际中止安装(通过返回非空字符串)时才考虑参数。你可能不想做的事情。换句话说,您正在滥用PrepareToInstall事件功能(无论如何都是错误的)。

改用NeedRestart事件函数

[Code]

function NeedRestart(): Boolean;
var
  Version: TWindowsVersion;
begin
  GetWindowsVersionEx(Version);
  Result := (Version.Major >= 10);
end;

推荐阅读