installation - NSIS检测Windows版本

标签 installation nsis

在 NSIS 中,有没有办法确定用户当前正在运行的 Windows 版本?

我想这样做的原因是我的安装程序在 Windows XP 计算机上看起来不同。我的安装程序使用MUI2,但我似乎没有与Windows 7中相同的GUI按钮(我认为它称为XP样式),并且主安装程序窗口比Windows 7中的大得多(Windows 7的大小约为500 x 400像素)。 在使用 MUI2 的安装程序中出现这些差异是否正常? 我以为MUI2使Windows XP和更高版本的外观保持一致?

为了克服安装程序窗口大小的差异,我的解决方案是检测用户是否使用Windows XP并相应调整窗口大小。这可能吗?

我需要使窗口具有特定的大小,因为我有一个背景图像,并且该图像的宽度为500px,因此,如果安装程序窗口较大,则会出现空白。我可以将背景图片更改为更宽,但对我自己来说,最简单的解决方案是上面我解释过的解决方案

最佳答案

如果Anders' answer不够明确(花了我几个小时使它正确),这是一个更“入门的友好”版本。

您将需要在cd.nsi文件的顶部添加!include WinVer.nsh

然后,您可以使用如下代码:

${If} ${IsWinXP}
     MessageBox MB_OK|MB_ICONEXCLAMATION "We have Win XP"
${EndIf}

这是我测试过的唯一功能,但是WinVer.nsh文件以包含其功能的迷你手册开头,其中包括:
  • AtLeastWin<version>,它检查安装程序是否至少在指定的Windows版本上运行。
  • IsWin<version>,它检查安装程序是否完全按照指定的Windows版本运行。
  • AtMostWin<version>,该命令最多检查安装程序是否在指定的Windows版本上运行。
  • <version> 可以替换为以下值(也许更多,取决于您的 WinVer.nsh 文件的最新程度): 9598MENT42000XP2003Vista200872008R2

    WinVer.nsh文件中还有更多功能和一些用法示例,该文件可能位于C:\Program Files\NSIS\Include之类的位置,例如:
  • AtLeastServicePack 用于检查安装程序是否至少在指定的 Windows 服务包版本上运行。
  • IsServicePack,它检查安装程序是否在Windows Service Pack版本上完全按照指定的方式运行。
  • AtMostServicePack 用于检查安装程序是否最多在指定的 Windows 服务版本包上运行。
  • IsWin2003R2(没有提供更多细节)
  • IsStarterEdition(没有提供更多细节)
  • OSHasMediaCenter(没有提供更多细节)
  • OSHasTabletSupport(未提供更多详细信息)
  • 关于installation - NSIS检测Windows版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14409801/

    相关文章:

    maven - 安装具有 3rd-party non-mvn jar 依赖项的 3rd-party non-mvn jar

    c# - 使用 Visual Studio 创建链接安装

    WiX - 对多实例安装进行重大升级

    android - 在 Android 虚拟设备上安装 Android 应用程序时出错

    Android INSTALL_PACKAGES 权限和非 PlayStore 应用

    以静默模式安装 .NET Framework 4

    installation - 使快捷方式在 NSIS 中最小化

    installation - NSIS 脚本可以添加 2 个整数和 'OR' 一个 StrCmp

    nsis - 从 Chocolatey 获取 NSIS 安装程序提示

    hadoop - 单节点集群的MapR安装失败