3

When I run my MSI on a Windows 2012 R2 machine (RTM build 9600) the VersionNT property is set to 602 (instead of 603). If 602 is actually the correct OS version, then how to I programmatically differentiate between Windows 2012 and Windows 2012 R2 at install time?

Update: It looks as though if I run my MSI directly on Windows 2012 R2 or Windows 8.1, VersionNT will be, correctly, set to 603. If my MSI is kicked off by a bootstrapper (a win32 app), VersionNT will be set, incorrectly, to 602. So, there's a discrepancy between an MSI being run directly vs. being launched by a win32 app.

Windows 10 Update:
I'm finding that when I update the manifest for my bootstrapper to support Windows 10 compatability, the InstallUISequence of the MSI will correctly set VersionNT=1000, but the InstallExecuteSequence will have VersionNT=603.

How do I make the InstallExecuteSequence also set VersionNT=1000?

5
  • I'll research. I don't see any updates on MSDN for operating system properties so it might not be able to tell other then the build version. Commented Sep 27, 2013 at 17:31
  • Out of curiosity, why do you need to distinguish? Commented Sep 28, 2013 at 2:04
  • I have to add a LaunchCondition that prevents users from installing a product on Windows 2012, but allows installation on Windows 2012 R2. My understanding is that Windows 2012 and Windows 2012 R2 are based on different underlying OS versions (6.2 vs 6.3), but at install time the VersionNT property is set to "602" for both. Commented Oct 1, 2013 at 14:52
  • 4
    Turning off the version lie requires a manifest that contains the SupportedOS element. The "bootstrapper" is probably missing it. Commented Oct 1, 2013 at 20:38
  • The SupportedOS element ended up fixing the problem. Thanks Hans :) Commented Nov 15, 2013 at 15:16

1 Answer 1

2

Your bootstrapper needs to be manifest to explicit support Win8/2012R3. This will be fixed in WiX 3.8 soon in Burn, but you can manifest any bootstrapper as documented here: http://msdn.microsoft.com/en-us/library/aa374191%28v=vs.85%29.aspx.

Specifically, you need to add the GUIDs for Windows 8 and Windows 8.1:

  • {4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}
  • {1f676c76-80e1-4239-95bb-83d0f6d0da78}

If you have access to the source code for the bootstrapper, the better, future-proof way is to call RtlGetVersion as documented here: http://msdn.microsoft.com/en-us/library/windows/hardware/ff561910(v=vs.85).aspx. This is the change I'm pushing to Burn externally (we use this internally for Visual Studio).

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.