Visual Studio 2005 SP1 failures can break existing applications

I have heard from a couple of customers who tried to install Visual Studio 2005 SP1, only to have it fail (possibly due to one of the known installation issues or some other reason that has not yet been documented).  After SP1 setup failed and rolled back, the customers who contacted me started running into failures while using Visual Studio 2005 or other products on the system that depend on the VC 8.0 runtime files.

For example, attempting to start Visual Studio 2005 might cause a dialog to appear with the title Application Error and text that reads:

The application failed to initialize properly (0xc0150004). Click on OK to terminate the application.

Even worse, if you attempt to repair or uninstall Visual Studio 2005 or the .NET Framework 2.0, you might see an error that reads,

Error 25007.Error occurred while initializing fusion. Setup could not load fusion with LoadLibraryShim(). Error: The handle is invalid.

We just ran into a similar issue internally, and Heath Stewart was able to debug it and determine the root cause.  He described the cause and a couple possible workarounds on his blog at https://blogs.msdn.com/heaths/archive/2007/02/05/visual-studio-2005-service-pack-1-rollback-breaks-some-applications.aspx.

Visual Studio 2005 SP1 includes an update to the VC 8.0 runtime files.  In some cases, when VS 2005 SP1 setup fails, the VC runtime policy files are left behind in the WinSxS component store, but the binaries that the policy files point to are rolled back.  This causes applications that depend on the VC runtime files to attempt to load non-existent versions of these binaries, and they fail to do so.

If you are running into problems running Visual Studio 2005 or other applications that depend on the VC runtime files after a failed install of VS 2005 SP1, I encourage you to check out Heath's blog post and follow the instructions listed there.

<update date="2/20/2007"> Adding more details to hopefully improve web searches for this issue </update>