I came across a very tricky to find installation problem on my laptop when attempting to install the .Net Framework 3.5. In the end, after going down many wrong roads that looked very right, it turned out to be a Registry Key deep in the registry that had permissions incorrectly assigned to the ASP.NET user and only the ASP.NET user.
The .Net Framework 3.5 installation would crash, resulting in an error log file containing the following:
------------------------------------------
[02/17/08,09:06:00] Microsoft .NET Framework 3.0a: [2] Error: Installation failed for component Microsoft .NET Framework 3.0a. MSI returned error code 1603
[02/17/08,09:07:07] WapUI: [2] DepCheck indicates Microsoft .NET Framework 3.0a is not installed.
------------------------------------------
Running the .Net Framework 3.0 installation would also crash, resulting in the following error:
------------------------------------------
[02/17/08,09:58:38] Windows Communication Foundation: [2] Error: Installation failed for component Windows Communication Foundation. MSI returned error code 1603
[02/17/08,09:59:06] WapUI: [2] DepCheck indicates Windows Communication Foundation is not installed.
[02/17/08,09:59:06] WapUI: [2] DepCheck indicates Microsoft .NET Framework 3.0 was not attempted to be installed.
------------------------------------------
To find the problem, after many failled attempts and uninstalling/reinstalling many different things, I found instructions on how to create a Windows Installer verbose logfile, then traced through it to find the exact place the installation was failing.
First thing need was to set the Windows Installer into verbose mode, by executing the following two commands from the command prompt to get the proper registry entries in place:
------------------------------------------
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /v Debug /t REG_DWORD /d 7 /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /v Logging /t REG_SZ /d voicewarmupx! /f
------------------------------------------
Open your temp folder (Start->Run->%temp%)
Rerun the install and see it fail again. You'll see the log file appear in your temp folder. It's suppose to be named msi*.log, but mine was not, which is why I'd just keep any eye out for whatever log files appear in the folder while you have it open.
Run these two commands to put the Windows Installer back the way it was:
------------------------------------------
reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /v Debug /f
reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /v Logging /f
------------------------------------------
Search through the log file for "return value 3". This is the code issuing a rollback and the exit of the install. Just above this should the the actual problem that caused the rollback.
What I saw was the attempted write to registry key "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security\ServiceModel 3.0.0.0" failing.
Checking the registry for this key I found that I could not create any values under it. Right clicking the key and checking it's permissions I saw that the ASP.NET user, alone, had permissions to the key. Clicking advanced I checked the Inherit from parent option, watched the proper permissions flood in, and my framework installs completed successfully.
--Clay