当我在Windows 2012 R2计算机(RTM build 9600)上运行MSI时,VersionNT属性设置为602(而不是603)。如果602实际上是正确的操作系统版本,那么如何在安装时以编程方式区分Windows 2012和Windows 2012 R2?
更新:看起来如果我直接在Windows 2012 R2或Windows 8.1上运行我的MSI,VersionNT将正确地设置为603.如果我的MSI由引导程序(win32应用程序)启动,VersionNT将不正确地设置为602.因此,直接运行的MSI与win32应用程序启动之间存在差异。
Windows 10更新:
我发现当我更新我的引导程序的清单以支持Windows 10兼容性时,MSI的InstallUISequence将正确设置VersionNT = 1000,但InstallExecuteSequence将具有VersionNT = 603。
如何使InstallExecuteSequence也设置VersionNT = 1000?
答案 0 :(得分:2)
您的引导程序需要显式支持Win8 / 2012R3。这将在Burn中很快在WiX 3.8中修复,但您可以在此处记录任何引导程序:http://msdn.microsoft.com/en-us/library/aa374191%28v=vs.85%29.aspx。
具体来说,您需要为Windows 8和Windows 8.1添加GUID:
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}
{1f676c76-80e1-4239-95bb-83d0f6d0da78}
如果您可以访问引导程序的源代码,那么更好的,面向未来的方法是调用RtlGetVersion
,如此处所述:http://msdn.microsoft.com/en-us/library/windows/hardware/ff561910(v=vs.85).aspx。这是我推动外部刻录的变化(我们在内部使用Visual Studio)。