cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
grahamm
Level 3

Installing a 32 Bit IIS Application to 64 Bit IIS 7

Hi,

we've recently upgraded our install project from Installshield 2009 to 2010. As a result the install has started to fail on 64 bit machines during the installation of the application to IIS. The error logged is shown below:

InstallShield 12:59:33: Found element with property 'name' value of: DefaultAppPool
InstallShield 12:59:33: Application pool Enable32bitAppOnWin64 value is 'false'
InstallShield 12:59:33: SetAspversion: machine is 64-bit and IIS running in a bit mode other than the currently selected mode
InstallShield 12:59:33: Error with IISRT: -2172


Now I realise that this error is fairly self explanatory but the issue we're having is that this check was not performed pre-2010 and the application was allowed to install. We then supplied some instructions in our install manual for the users to configure the appropriate settings (we have to use the Classic .Net App Pool so changing the application pool to that and then setting the Enable32bitAppOnWin64 to true). So we're looking for a way of disabling this check from being performed during the install?

An alternative fix would be to set the installed application to use the Classic .Net App Pool and set the Enable32bitAppOnWin64 flag to true but I cannot see how to use an existing app pool, only how to add a new one. Is there a way to do this?

Thanks in advance,

Graham
Labels (1)
0 Kudos
(16) Replies
Marwan
Level 7

For the 'Application Pool' setting, you can enter an existing AppPool name.
0 Kudos
grahamm
Level 3

Thanks for the reply.

In that case, is there a way that I can force the Enable32bitAppOnWin64 setting to true for the existing Application pool without having to use custom actions?

Cheers,

Graham
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

Settings on existing application pools or other IIS items cannot be changed. However, if your application can run as either 32-bit or 64-bit, you could use a property in the value field for the AspNetVerBitness property on your application (in the ISIISProperty table). The property can be added to the Property Manage with a default value of x86. A set property custom action could be used to set the property to x64 if VersionNT64 is set.

This would then allow for the ASP.NET platform to be set according to what configuration the machine is likely to be in and would not require changing settings on existing IIS resources.
0 Kudos
sjeslis
Level 5

John, I'm having the same issue. Could you clarify your solution?

You're saying add a property named AspNetVerBitness but how does this link to the ISIISProperty table in MSI?

Are you saying using the MSI Direct Editor add "AspNetVerBitness" to the ISIISPROPERTY table (under the IISCommonWebSite item I assume?)
and point it to some "[property_name]" that gets set to x86 or x64?
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

Your information is correct. In the ISIISProperty table, a new record would be added with the ISIISItem_ column set to the item this property applies to (from the ISIISItem table). The FriendlyName for the property should be AspNetVerBitness. The MetaDataValue column would be a property reference in the form [PROPERTYNAME]. This should then allow for dynamically configuring this IIS property based on the value of an MSI property.
0 Kudos
sjeslis
Level 5

Setting this on IsAppPool item did nothing and still yielded this, noting that it found my x86 request:

InstallShield 16:56:44: IIS7 check for ASP.NET version bitness on application pool 'DefaultAppPool', install is requesting 'x86'
InstallShield 16:56:44: GetAdminSection for section 'system.applicationHost/applicationPools' and path 'MACHINE/WEBROOT/APPHOST' and commitpath 'MACHINE/WEBROOT/APPHOST'.
InstallShield 16:56:44: Found element with property 'name' value of: DefaultAppPool
InstallShield 16:56:44: Application pool Enable32bitAppOnWin64 value is 'false'
InstallShield 16:56:44: SetAspversion: machine is 64-bit and IIS running in a bit mode other than the currently selected mode
InstallShield 16:56:44: Error with IISRT: -2172
Action ended 16:56:44: InstallFinalize. Return value 3.
Action 16:56:44: Rollback. Rolling back action:

will try setting it on the website item.
0 Kudos
sjeslis
Level 5

Same moving that ISIISProperty property to IsIISCommonWebsite item in the table.
0 Kudos
sjeslis
Level 5

I pointed my web site being created to our own application pool which has the "Enable 32-bit applications" setting set vs. allowing it to default to DefaultAppPool.
0 Kudos
grahamm
Level 3

We also ended up creating our own custom ApplicationPool with the Enable32-bit application set to on and used this custom AppicationPool in our installed web application and this has resolved the issue.

Graham
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

It would be necessary to install a new application pool to apply this setting. InstallShield will not change any settings on existing IIS resources in an effort to ensure that nothing already running on a target machine breaks.
0 Kudos
rasky74
Level 6

Does this property set work for those of us still on 2009?
0 Kudos
nitsev
Level 6

I have a similar problem and I need som clarification.

I have tried creating the very simplest installer that has an app. pool with Enable 32-Bit application set to Yes.

I have a site and an application under the site that both use the app. pool and which ASP.NET version is set to 2.0.
On Windows 7 x64, the installer fails with the same error message as in the first post.

The error message says:
InstallShield 12:59:33: SetAspversion: machine is 64-bit and IIS running in a bit mode other than the currently selected mode

There is no machine-state for the Enabel32BitAppOnWin64 on Windows 7 (or Windows Server 2008) as was the case on Windows Server 2003 x64, but the property applies to the individual app. pools, so it's perfectly valid to have one app. pool running 64-bit apps and one running 32-bit apps.
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

Creating a new application pool for a website or application should allow for changing the 32-bit/64-bit application pool setting and allow the site or application to install correctly.

What is the ASP.NET Platform setting set to for the website/application that is using this application pool?
0 Kudos
philip4jc
Level 2

i have same problem in windows server 2008 64 bit, but it was solved, just change application pools enable 32 bit applications to be true in advance settings.

or using script

C:\Windows\System32\inetsrv>appcmd set apppool /apppool.name: "Classic .NET AppP
ool" /enable32bitapponwin64:true

C:\Windows\System32\inetsrv>appcmd set apppool /apppool.name: "DefaultAppPool" /
enable32bitapponwin64:true

or create two application for 32 bit and 64 bit operating systems
0 Kudos
deramor
Level 6

Aside from using scripting to do this, is there any combination of settings that would allow a 64-bit app pool to be installed using 64-bit ASP.Net which also has Enable32bitAppOnWin64 enabled? This seems to be a disallowed combination of settings (says the help) however I have 2 comments:

1. I can imagine the entire world would like to install their older 32 bit apps onto 64 bit computers with simply allowing their code to run in a new 64 bit app pool.

2. When I set the "Enable32bitAppOnWin64" setting to false, my website installs but does not work since it is 32-bit code. Manually setting this advanced setting makes everything work. You would however expect that configuring your computer to a so called "bad state" would have some negative consequences however there are none.

I suppose I could simply install a 32-bit app pool however Installshield 2010 uses these settings to construct the ASP.Net path information which will be malformed on a 64-bit PC. This malformed path will cause a fatal error and the installation will roll back. The error is on the regiis -ir command. So this is not an acceptable fix either.

If anyone has any information please post.
0 Kudos
RaviPatel
Level 3

deramor wrote:
Aside from using scripting to do this, is there any combination of settings that would allow a 64-bit app pool to be installed using 64-bit ASP.Net which also has Enable32bitAppOnWin64 enabled? This seems to be a disallowed combination of settings (says the help) however I have 2 comments:

1. I can imagine the entire world would like to install their older 32 bit apps onto 64 bit computers with simply allowing their code to run in a new 64 bit app pool.

2. When I set the "Enable32bitAppOnWin64" setting to false, my website installs but does not work since it is 32-bit code. Manually setting this advanced setting makes everything work. You would however expect that configuring your computer to a so called "bad state" would have some negative consequences however there are none.

I suppose I could simply install a 32-bit app pool however Installshield 2010 uses these settings to construct the ASP.Net path information which will be malformed on a 64-bit PC. This malformed path will cause a fatal error and the installation will roll back. The error is on the regiis -ir command. So this is not an acceptable fix either.

If anyone has any information please post.


I have created installer to create IIS Web Site and installer creates new application pool for new Web site. I have 'Set Enable 32-Bit applications' property to No (I believe this point to Enable32bitAppOnWin64). When installer runs it create application pool but it throws error and installer rollbacks while creating Web Site. Any reason for error even if I create new application pool and map it with Web Site?

Found element with property 'name' value of: DefaultAppPool
Application pool Enable32bitAppOnWin64 value is 'false'
SetAspversion: machine is 64-bit and IIS running in a bit mode other than the currently selected mode
Error with IISRT: -2172
0 Kudos