Visual Studio 2003 Web Setup Project fails on Windows 2008 64-bit

I have a web setup project created in Visual Studio.NET 2003  that installs fine on Windows 2003 32-bit just fine, but fails on Windows 2008 Server Standard Edition 64-bit Service Pack 2.  The install is able to create the directory and copy the files, create the virtual directory, and assign "Default App Pool" as the virtual directory's application pool.

Here is what I did to the server before installing:

1) Within IIS, added all sub-items under "IIS 6 Management Capability Feature" and under Security I added "Windows Authentication"

2) Enabled 32-bit apps on 64-bit: cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

3) Allow CGI and ISAPI restrictions for .NET 1.1: run aspnet_regiis.exe -ir -enable under the .NET 1.1.4322 directory.

4) Added the following key to .NET 1.1 machine.config: <section name="system.webServer" type="System.Configuration.IgnoreSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

5) Created the following folders under \windows\\framework64: v1.1.4322\config and then copied machine.config from framework\v1.1.4322\config to the newly created config folder.  I wasn't able to see config settings in IIS Manager for the virtual directory without making this change.

After the install hung the first time, I commented out all the custom code in the installer class except for stub code in overridden install, commit, rollback, and uninstall methods.  Leaving calling the base methods.  For Example,

<Security.Permissions.SecurityPermission(Security.Permissions.SecurityAction.Demand)> _
Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)
End Sub

I also removed the security attribute decorating the methods, but that didn't work either.  When I removed my custom actions from the setup project then it was able to successfully run.

Here is a snippet from the msi log file where it runs into an error:

MSI (s) (88:DC) [10:15:23:591]: Hello, I'm your 32bit Elevated custom action server.
MSI (s) (88:54) [10:15:25:482]: QueryPathOfRegTypeLib returned 0 in remote context.      Path is 'C:\inetpub\wwwroot\TestApp\bin\Config.Info.tlb'
MSI (s) (88:54) [10:15:25:498]: Note: 1: 1402 2: UNKNOWN32\TypeLib\{AF3642A3-DE18-409D-8FDD-C85F0CC4D2C4}\100.0\0\win32 3: 2
MSI (s) (88:54) [10:15:25:498]: CMsiServices::ProcessTypeLibrary runs in remote context, not impersonated.
MSI (s) (88:54) [10:15:28:451]: CMsiServices::ProcessTypeLibrary runs in remote context, not impersonated.
MSI (s) (88:54) [10:15:29:154]: Executing op: ActionStart(Name=SelfRegModules,Description=Registering modules,Template=File: [1], Folder: [2])
MSI (s) (88:54) [10:15:29:169]: Executing op: ProgressTotal(Total=2,Type=1,ByteEquivalent=1300000)
MSI (s) (88:54) [10:15:29:169]: Executing op: SetTargetFolder(Folder=C:\inetpub\wwwroot\TestApp\bin\)
MSI (s) (88:54) [10:15:29:169]: Executing op: RegSelfReg(File=SocketCOM.dll,FileID=_A5A416DBAB7954249EA31CC466FF7F00)
MSI (s) (88:54) [10:15:29:732]: Executing op: RegSelfReg(File=Connex.dll,FileID=_EBDCC5C96C2A7E386DA656D879102C15)
MSI (s) (88:54) [10:15:29:841]: Executing op: ActionStart(Name=_0CC6F150_C899_47AB_96BE_38F99C97F441.commit,,)
MSI (s) (88:54) [10:15:29:841]: Executing op: CustomActionSchedule(Action=_0CC6F150_C899_47AB_96BE_38F99C97F441.commit,ActionType=1537,Source=BinaryData,Target=ManagedInstall,CustomActionData=/installtype=notransaction /action=commit /LogFile= /VDIR=TestApp /PORT=80 /INSTALLDIR=C:\inetpub\wwwroot\TestApp\ "C:\inetpub\wwwroot\TestApp\Config.Setup.Custom.dll" "C:\Users\ADMINI~1\AppData\Local\Temp\CFG84BF.tmp")
MSI (s) (88:54) [10:15:29:841]: Executing op: ActionStart(Name=_A59BE3B2_345C_4C7D_BE11_701820CF849F.rollback,,)
MSI (s) (88:54) [10:15:29:841]: Executing op: CustomActionSchedule(Action=_A59BE3B2_345C_4C7D_BE11_701820CF849F.rollback,ActionType=1281,Source=BinaryData,Target=ManagedInstall,CustomActionData=/installtype=notransaction /action=rollback /LogFile= /VDIR=TestApp /PORT=80 /INSTALLDIR=C:\inetpub\wwwroot\TestApp\ "C:\inetpub\wwwroot\TestApp\Config.Setup.Custom.dll" "C:\Users\ADMINI~1\AppData\Local\Temp\CFG84BF.tmp")
MSI (s) (88:54) [10:15:29:841]: Executing op: ActionStart(Name=_5987074A_D0D8_4CBE_8C27_4DE625C9F4F2.install,,)
MSI (s) (88:54) [10:15:29:841]: Executing op: CustomActionSchedule(Action=_5987074A_D0D8_4CBE_8C27_4DE625C9F4F2.install,ActionType=1025,Source=BinaryData,Target=ManagedInstall,CustomActionData=/installtype=notransaction /action=install /LogFile= /VDIR=TestApp /PORT=80 /INSTALLDIR=C:\inetpub\wwwroot\TestApp\ "C:\inetpub\wwwroot\TestApp\Config.Setup.Custom.dll" "C:\Users\ADMINI~1\AppData\Local\Temp\CFG84BF.tmp")
MSI (s) (88:14) [10:15:29:841]: Invoking remote custom action. DLL: C:\Windows\Installer\MSID6C0.tmp, Entrypoint: ManagedInstall
Action ended 10:15:34: InstallFinalize. Return value 3.

Sorry for being so long, but wanted to make sure you had all the facts.

Thanks for your help.
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

reiszjAuthor Commented:
I did verify that the issue isn't segregated to Windows 2008 64-bit as I get the same behavior with Windows 2008 32-bit.
Meir RivkinFull stack Software EngineerCommented:
u mentioned that when u remove the custom actions code, the installer completed successfully.
what the custom actions code contains?
can u point out the code which fails the installation?
reiszjAuthor Commented:
Sedgwick, the custom actions code only calls the base method.  For Example, for install here is the custom action code:

Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)
End Sub

Since, I was having problems I commented out all my code and left only invoking the base class method.

I also updated the msi to turn set NoImpersonate, but I still get the error message.

Newly released Acronis True Image 2019

In announcing the release of the 15th Anniversary Edition of Acronis True Image 2019, the company revealed that its artificial intelligence-based anti-ransomware technology – stopped more than 200,000 ransomware attacks on 150,000 customers last year.

reiszjAuthor Commented:
Sedgwick, I cannot point out the code that is failing since I believe the error is that the installer cannot invoke the dll:

MSI (s) (88:14) [10:15:29:841]: Invoking remote custom action. DLL: C:\Windows\Installer\MSID6C0.tmp, Entrypoint: ManagedInstall
Action ended 10:15:34: InstallFinalize. Return value 3.

I have even changed the Install method to only include a MsgBox() and it does not get to that point to open the dialog.

reiszjAuthor Commented:
I was not able to resolve the issue, but I did setup a new box with Windows 2008 Server SP2 and my setup  ran successfully.  I will need to check with my IT Department how they configured the server that is causing the setup to fail.
Why don't you switch to DEBUG mode and put a


statement? That will allow you to see which line is causing the problem.

If I recall correctly, there was no support for FX1.1 in 64 bit. So, as for the Item#5 in your original post, I wouldn't do that...

and also, Win2008 comes with an application called appcmd.exe that will allow you change almost anything regarding IIS/Apps/etc. It's under c:\windows\system32\inetsrv directory.
reiszjAuthor Commented:
The issue was with the msi created by Visual Studio .NET 2003.   I was able to workaround the problem  by using Aaron Stebner's CustomAction_NoImpersonate.js script to update the msi:

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.