cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Poltron
Level 4

Enable32bitAppOnWin64 not set in IIS7

I thought I'd share a discovery that IS support was not able to provide help with.

We experienced a problem when installing on x64 machines where the installer would abort and rollback the install. Our app is x32, so we had to create a custom app pool and turn on the 'enable 32bit apps'.

In the log it's failing on the following lines:
InstallShield 15:38:40: Value returned for Enable32bitAppOnWin64: 0
InstallShield 15:38:40: SetAspversion: machine is 64-bit and IIS running in a bit mode other than the currently selected mode
InstallShield 15:38:40: Error with IISRT: -2172
Action ended 15:38:40: InstallFinalize. Return value 3.

Also worth mentioning,.. If you perform the install a second time, the installer completes successfully. So as a workaround, one could install twice, then navigate to the IIS manager and turn on the 'enable 32 bit mode' on the custom app pool and also set the application to use the custom app pool.

Here's what was happening:
If IIS6_COMPATIBILITY is turned on in a x64 platform (this is set in the control panel's add remove features) the first install aborts with a rollback. Even though we are installing to II7, it's acting like II6 which didn't support application pools that allowed 32bit applications, and so our property set "enable 32bit apps" is ignored. The installer is doing bitness validation (our app is x32, application pool is set to x64; abort and rollback).

We may be able to override this IIS6_COMPATIBILITY behavior by setting a property in the installer. (I don't have that property on hand, perhaps I'll update this post when I figure out a fix!)

UPDATE:
It turned out that the build engineer prior to myself added IISPREFERLEGACYOBJECTS=1 and that was the cause of this behavior. He originally did this to become compatible on x64 machines that used application pools, before Installshield had added support for app pools in basic msi.

We were able to get the installer to disregard the IIS6 compatibility the user enabled under the control panel > add remove windows features with the following:

Add a property to the project with a value of 0. IISPREFERLEGACYOBJECTS = 0 (or remove it entirely)
http://kb.flexerasoftware.com/selfservice/viewContent.do?externalID=Q113487

Very simple fix! We previously told our customer's to enable this setting so our application would run on iis7 before we added application pools to our project. Now that we have added application pools, this setting was making our upgrade deployments fail as discussed above. Adding this property with a value of 0 was the fix!
Labels (1)
0 Kudos
(1) Reply
BuilderBee
Level 3

Thanks for this post! I, too, was directed by InstallShield support to add the MSI property IISPREFERLEGACYOBJECTS=1 to my installation while using InstallShield 2010 Pro. When I upgraded to 2011 Pro, the IIS app pool creation failed and the install rolled back, leaving the IIS web app behind. I have 5 web appsin this package, so it was the 6th install that completed successfully. However, as you noted, the app pool's "Enable 32-bit Applications" property is set to False, contrary to what I set it to in IS. Removing the IISPREFERLEGACYOBJECTS property solved these problems.
0 Kudos