How are newer operating systems identified and how often are they updated?

Jul 14, 2010 at 4:17 AM

Are they seen as "0" (Not Valid)? In the case I had a beta for, say, Windows 7 Service Pack 1, would it be identified as 0? I'm guessing it will. In that case, how long before there's a version that supports newer Windows Versions?

Jul 14, 2010 at 12:00 PM
Edited Jul 14, 2010 at 12:02 PM

All Windows 7's are identified as win7 today (code in dotNetInstallerTools/OsUtils.cpp).

if ( osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 1 && osvi.wProductType == VER_NT_WORKSTATION)
 os = win7;

But when SP1 is available, it's likely to change to something like this.

else if ( osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0 && osvi.wProductType == VER_NT_WORKSTATION)
	os = winVista;
	if (osvi.wServicePackMajor == 1) 
	 os = winVistaSp1;
	else if (osvi.wServicePackMajor >= 2) 
	 os = winVistaSp2;

Which means that anything above SP2 for Vista becomes SP2.

Os identifiers are added (could be done by you, send us a patch) as soon as we know what an OS looks like - whoever runs it first.

Microsoft doesn't release service packs and operating systems every day, DNI generally ships more often. I recommend adding support for a specific new OS version to DNI and using a beta build as soon as possible. And don't tell your customers you support an OS until you have really tested your application on it :)

If an OS has never been seen (Windows 8), it will be 0 and DNI won't run, but in the case of an already supported OS (Windows 7), it will simply be win7 when service packs release.

Jul 14, 2010 at 4:45 PM

Perfect, thank you for the good explanation :)