Thoughts about setup and deployment issues, WiX, XNA, the .NET Framework and Visual Studio
All postings are provided AS IS
with no warranties, and confer no rights. Additionally, views expressed
herein are my own and not those of my employer, Microsoft.
I have been working on the .NET Framework setup since before v1.0 shipped, and in that time I've seen all sorts of bugs and setup failures. There is one particularly tricky set of bugs that all show the same symptom but that we haven't been able to track down a common root cause for. The error that is seen during setup is a failure to register System.EnterpriseServices.dll or a problem running RegSvcs.exe /bootstrapi, which then causes setup to stop and rollback.
Almost none of the cases I have seen where this error appears were actually caused by the file System.EnterpriseServices.dll itself. It is a bit misleading because the registration of this file is done by a custom action during setup, and that custom action is the first time that the version of the CLR we are trying to install is used to run managed code on the computer. So that means that if anything is wrong on the machine to cause that version of the CLR to not work properly, the error the user sees is that this DLL failed to register.
When we encounter an error like this, we typically try the following cleanup and troubleshooting steps in the order listed below.
In many cases, running the cleanup tool is sufficient, but every once in a while we run into a computer in a state that we can't diagnose and we have to try some more advanced debugging techniques like those listed in steps 2 and 3.
We use the following steps to configure the MsiBreak environment variable to cause .NET Framework setup to pause at the beginning of the custom action that registers System.EnterpriseServices.dll, attach a debugger and gather crash dump information:
Variations of the above steps can also be used to gather debugging information for any custom action that fails during an MSI-based setup as long as you are able to consistently reproduce the crash during setup. You just need to substitute the appropriate custom action name in step 5 (by looking at the verbose MSI log file or looking at the MSI in Orca to get the exact name). You also need to substitute the custom action name and command line parameters in steps 9 and 10 above. In the case of this example, the custom actions are executable files that are installed as a part of .NET Framework setup. If the custom action is a file streamed into the binary table of the MSI, I believe you will need to extract the file from the MSI and run it using rundll32.exe or something like that (but I haven't yet tried to do that to verify that it works like I think it will).
<update date="9/25/2006"> Added a note about running WinDBG with elevated privileges on Windows Vista </update>
I got an email from the .NET Framework setup technical support team today with some more information
My scenario was that I had used nLite to
1- put my 2 Windows XP MCE 2005 installation CDs into one
2- integrate my sata drivers into the cd (no more F6)
3- have an unattended setup
Everything went well until one of the updates wanted .net-1.1.
The dotnet 1.1 install would fail everytime with the error "Setup ended prematurely".
Dotnet 2,3, and 3.5 worked and isntalled fine.
I followed the instructions here and once i hit the break point, i used windbg and saw the 'crash' but to be honest I didn't quite understand it. So I decided to just run the command in cmd.exe ... maybe I could see what's happenng ... it worked fine. I clicked OK on the breakpoint dialog and got a message that the setup succeeded!!! I don't know HOW it helped, but I could even install the dotnet-1.1 SP1 with no trouble afterwards.
this wasn't the end of my problems (I ended up formatting the machine), but it ended my Dotnet 1.1 premature isntallation issue.
maybe the later issues were unrelated, but if you are having such symptoms, you have have a corrupt installation.
PingBack from http://www.hilpers.com/1046837-error-0x80070643-bei-wsus-installation