当我在Windows2012 R2计算机(RTMBuild9600)上运行MSI时,VersionNT属性被设置为602 (而不是603)。如果602实际上是正确的操作系统版本,那么我如何在安装时以编程方式区分Windows2012和Windows2012 R2?
更新:如果我直接在Windows2012 R2或Windows8.1上运行MSI,VersionNT将被正确地设置为603。如果我的MSI被引导程序( win32应用程序)启动,VersionNT将被错误地设置为602。因此,直接运行的MSI与由win32应用程序启动的MSI之间存在差异。
Windows 10更新:
我发现,当我更新引导程序的清单以支持Windows 10可兼容性时,MSI的InstallUISequence将正确地设置VersionNT=1000,但InstallExecuteSequence将具有VersionNT=603。
如何使InstallExecuteSequence也设置VersionNT=1000?
发布于 2014-01-18 03:09:13
您的引导程序需要显式地支持Win8 8/2012R3。这将修复在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内部使用此方法)。
https://stackoverflow.com/questions/19055285
复制相似问题