当我在 Windows 2012 R2 计算机(RTM 内部版本 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 应用程序启动的 MSI 之间存在差异。
Windows 10 更新:
我发现当我更新引导程序的清单以支持 Windows 10 兼容性时,MSI 的 InstallUISequence 将正确设置 VersionNT=1000,但 InstallExecuteSequence 将具有 VersionNT=603。
如何使 InstallExecuteSequence 也设置 VersionNT=1000?
您的引导程序需要明确支持 Win8/2012R3。这个问题很快就会在 WiX 3.8 的 Burn 中得到修复,但您可以按照此处记录的方式显示任何引导程序:http://msdn.microsoft.com/en-us/library/aa374191%28v=vs.85%29.aspx 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 http://msdn.microsoft.com/en-us/library/windows/hardware/ff561910(v=vs.85).aspx。这是我在外部推动 Burn 的更改(我们在 Visual Studio 内部使用此更改)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)