在 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 文件的最新程度): 95
、 98
、 ME
、 NT4
、 2000
、 XP
、 2003
、 Vista
、 2008
、 7
、 2008R2
、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/