"Error 25007.Error occurred while initializing fusion. Setup could not load fusion with LoadLibraryShim(). Error: 0x80131700"

We would receive the above error while removing KB976576 https://support.microsoft.com/kb/976576

The exact repro steps are mentioned below:

Install .Net framework 3.5 sp1 è.Net framework 4.0 and KB976576.Now try to remove KB976576.

From the log it shows that the below Custom Action fails here:

MSI (s) (18:3C) [16:17:23:391]: Executing op: ActionStart(Name=CA_InstallAssemblyDef.3643236F_FC70_11D3_A536_0090278A1BB8,,)
MSI (s) (18:3C) [16:17:23:391]: Executing op: CustomActionSchedule(Action=CA_InstallAssemblyDef.3643236F_FC70_11D3_A536_0090278A1BB8,ActionType=1025,Source=BinaryData,Target=InstallAssembly,CustomActionData=c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.dll;5242880)
MSI (s) (18:98) [16:17:23:406]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI63.tmp, Entrypoint: InstallAssembly
01/21/11 16:17:23 DDSet_Status: LANGID: 1033
01/21/11 16:17:23 DDSet_Entry: InstallAssembly started
01/21/11 16:17:23 DDSet_Status: CustomActionData: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.dll;5242880
01/21/11 16:17:23 DDSet_Status: No ProductCode was passed in the CustomActionData. Using the current ProductCode.
01/21/11 16:17:23 DDSet_Status: ProductCode for assembly install/uninstall has been set to {C09FB3CD-3D0C-3F2D-899A-6A1D67F2073F}
01/21/11 16:17:23 DDSet_Status: Loading mscoree.dll
01/21/11 16:17:23 DDSet_Status: Loading fusion.dll using LoadLibraryShim()
01/21/11 16:17:23 DDSet_Error: Error occurred while initializing fusion. Setup could not load fusion with LoadLibraryShim(). Error: 0x80131700

I was able to diagnose the issue and identify the problem. Please note that some binaries in .NET 3.5 SP1 are, by necessity, shared with .NET 4.0. These binaries, which ship in KB976576, are installed by both that patch and by the .NET 4.0 Setup. So, you can get the contents of the patch in one of two ways:
• Install .NET 4
• Install .NET 3.5 SP1 + KB976576

While it is possible for .NET 3.5 SP1 to exist without this patch, hence the ability to uninstall the patch, it is not possible for .NET 4 to be functional when the patch is not present. Therefore, uninstallation of the patch to .NET 3.5 SP1 while .NET 4 is installed is not supported as it would break .NET 4 as part of the uninstall. Although we would have benefitted from better messaging during the attempted uninstallation.

If you want to uninstall the patch, you must:
• Uninstall .NET 4
• Uninstall the Patch
• Reinstall .NET 4
Keep in mind, however, that reinstalling .NET 4 will put back the contents of the patch. All you will accomplish is removing the KB entry in the ARP. Also note that we don’t need to install the patch if we install .NET 4.0 because it already has the patch in it.