繁体   English   中英

在Windows 2012 R2上运行时,如何让MSI返回正确的VersionNT值?

[英]How do I get MSI to return the correct VersionNT value when running on Windows 2012 R2?

当我在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?

您的引导程序需要显式支持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( RtlGetVersion = vs.85).aspx 这是我推动外部刻录的变化(我们在内部使用Visual Studio)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM