Showing results for 
Show  only  | Search instead for 
Did you mean: 
Level 9

Conditioning install based on OS

We have an install that supports all OS's except for Win9x, WinNT and Windows 2000. We set this all up though Project Assistant - Installation Requirements and the condition looks like the following:
(Not Version9X) And (Not VersionNT=400) And (Not VersionNT=500)

Now we have decided that this app will NO longer support Vista and therefore in the Installation Requirements I unselected Windows Vista and the new condition looks like the following:
(Not Version9X) And (Not VersionNT=400) And (Not VersionNT=500) And (Not (VersionNT=600 And (MsiNTProductType=1)))

So the new entry: And (Not (VersionNT=600 And (MsiNTProductType=1))) basically states that to not install if VersionNT is 600 and it's MsiNTProductType is 1, which means it is Windows 2000 Professional and later.

The MsiNTProductType can be:
1 - Windows 2000 Professional and later
2 - Windows 2000 domain controller and later
3 - Windows 2000 Server and later

So it looks basically correct as Vista should be under (1) as a Windows professional version and not a domain controller or server. But the issue is if I then go back to Project Assistant - Installation Requirements I notice that Windows 2008 Server is no longer selected. This condition seems to have turned off Vista and Windows 2008 Server. So I just want to confirm that this condition will make it so that it does not install on Vista, but if ran on 2008 Server that it would still install. Not that any of our customers will, but I just want to verify.

So will this condition work as expected or do I have to manually change it to work as expected?

Labels (1)
0 Kudos
(1) Reply
Level 7


I think it's because Windows Vista and Windows Server 2008 use a similar codebase much like Windows 7 and Windows Server 2008 R2. This is kind of evident in InstallScript when looking at SYSINFO.WINNT variables. From the InstallShield help file:

SYSINFO.WINNT.bWinVista_Server2008 (SYSINFO.WINNT.bWinVista)
If either SYSINFO.WINNT.bWinVista_Server2008 or SYSINFO.WINNT.bWinVista is TRUE, the operating system is Windows Vista or Windows Server 2008.

To distinguish between Windows Server 2008 and Windows Vista, check whether SYSINFO.nOSProductType is equal to VER_NT_WORKSTATION; for Windows Vista, this is TRUE; for Windows Server 2008, it is FALSE.

If this member is TRUE, the operating system is Windows 7 or Windows Server 2008 R2.

0 Kudos