在 Inno Setup 中记录 TWindowsVersion

Logging TWindowsVersion in Inno Setup

之前我使用的是:

{ Check Windows Version }
WindowsVersion := GetWindowsVersion;
Log(Format('Windows Version: %x', [WindowsVersion]));

现在我正在使用:

{ Check Windows Version }
GetWindowsVersionEx(WinVer);
WinVerPacked := PackVersionComponents(WinVer.Major, WinVer.Minor, WinVer.Build, 0);

其中 WinVer 的类型为 TWindowsVersion。我们现在如何处理 Log 条目?

  • 如果 Inno Setup 已经记录了它,为什么要记录它?

    2020-11-17 16:26:59.234   Windows version: 10.0.19041  (NT platform: Yes)
    
  • 无论如何,没有什么能阻止您继续使用 GetWindowsVersion 进行日志记录,即使您现在使用 GetWindowsVersionEx 进行版本检查。

  • PackVersionComponents return值其实和GetWindowsVersion差不多,所以可以直接登录:

    Log(Format('Windows Version: %x', [WinVerPacked]));
    

    它只会在输出中有更多的零:

    2020-11-17 16:26:59.337   Windows Version: A00004A610000
    

    尽管它与您之前的 GetWindowsVersion 记录一样对用户不友好:

    2020-11-17 16:26:59.337   Windows Version: A004A61
    
  • 确实是使用TWindowsVersion个组件更方便用户。

    Log(Format('Windows Version: %d.%d.%d', [WinVer.Major, WinVer.Minor, WinVer.Build]));
    

    这将使您获得 Inno Setup 在其 header 中记录的内容:

    2020-11-17 16:26:59.337   Windows Version: 10.0.19041
    
  • 不过,如果您记录 TWindowsVersion return 由 GetWindowsVersionEx 编辑的内容,您可以通过记录 GetWindowsVersionString 的输出让您的生活更轻松:

    Log(Format('Windows Version: %s', [GetWindowsVersionString]));
    

    这几乎是一样的:

    2020-11-17 16:26:59.337   Windows Version: 10.00.19041