在NSIS中有一种方法可以确定用户当前运行的Windows版本吗?
我想这样做的原因是因为我的安装程序在Windows XP计算机上看起来不同.我的安装程序使用MUI2,但我似乎没有像在Windows 7中那样使用相同的GUI按钮(我认为它称为XP风格),主安装程序窗口比Windows 7(大约500 x 400像素)大得多.在使用MUI2的安装程序中存在这些差异是否正常? 我认为MUI2在Windows XP版本中看起来一致吗?
为了克服安装程序窗口大小的差异,我的解决方案是检测用户是否使用Windows XP并相应地调整窗口大小.这可能吗?
我需要让窗口具有特定的大小,因为我有一个背景图像,图像是500px宽,所以如果安装程序窗口更大,我有一个空白的差距.我可以将背景图像更改为更宽,但对我自己来说最简单的解决方案是我上面解释的那个
如果安德斯的回答不够明确(花了几个小时才能做到正确),这里有一个更"初学者友好"的版本.
您需要添加!include WinVer.nsh到cd.nsi文件的顶部.
然后你可以使用这样的代码:
${If} ${IsWinXP}
MessageBox MB_OK|MB_ICONEXCLAMATION "We have Win XP"
${EndIf}
Run Code Online (Sandbox Code Playgroud)
这是我测试的唯一功能,但WinVer.nsh文件以带有其功能的迷你手册开头,其中包括:
AtLeastWin<version> 它检查安装程序是否至少在指定的Windows版本上运行.IsWin<version> 它会检查安装程序是否在Windows版本上完全按照指定运行.AtMostWin<version> 它会检查安装程序是否在指定的Windows版本上运行.<version>可以用下面的值替换(也许更多,这取决于你的WinVer.nsh文件的新旧程度): ,95, 98, ME, NT4, 2000, XP, 2003, Vista, , 2008 72008R2
WinVer.nsh文件中还有一些函数和一些用法示例,它们可能位于C:\ Program Files\NSIS\Include之类的地方,如:
AtLeastServicePack 它至少按照指定检查安装程序是否在Windows Service Pack版本上运行.IsServicePack 它会检查安装程序是否完全按照指定在Windows Service Pack版本上运行.AtMostServicePack 它会检查安装程序是否最多按指定在Windows服务版本包上运行.IsWin2003R2 (没有提供更多细节)IsStarterEdition (没有提供更多细节)OSHasMediaCenter (没有提供更多细节)OSHasTabletSupport (没有提供更多细节)| 归档时间: |
|
| 查看次数: |
6229 次 |
| 最近记录: |