One root cause of component registration failures in MCE 2005 Update Rollup 2 identified

Now that I've posted steps to diagnose and manually fix component registration failure errors that are sometimes seen after installing Update Rollup 2 for Media Center 2005, I have heard from a few customers who have run into this problem and worked with them to identify at least one possible underlying cause.

In the cases I have investigated so far, the NGEN commands that are run during Update Rollup 2 registration to fail with an "interface not found" return code. When running the same NGEN command separately, these machines showed an error message stating The procedure entry point GetRequestedRuntimeVersion could not be located in the dynamic link library mscoree.dll

The underlying problem on these machines was that the version of %windir%\system32\mscoree.dll was reverted back to the .NET Framework 1.0 SP3 version (1.0.3705.6018). Ordinarily, mscoree.dll should be the .NET Framework 1.1 SP1 version (1.1.4322.2032) or higher on machines with Update Rollup 2 installed because the .NET Framework 1.1 SP1 is a prerequisite for installing Update Rollup 2.

The following steps have allowed the customers I have worked with so far to fix this issue:

  1. Download and reinstall the .NET Framework 1.1 SP1
  2. Go to the Start menu, choose Run and type cmd
  3. From the cmd prompt, run %windir%\ehome\medctrro.exe /o /p RunOnce to re-run Update Rollup 2 registration code

I am still not clear about how mscoree.dll is being reverted in this scenario, so my next step is to figure out what exactly could cause that. This is an interesting convergence of my previous experience working on the .NET Framework setup team and my current experience on the Media Center setup team. Based on my experience on the .NET setup team, I can't think of any valid ways this file would be reverted like this. One possibility I can think of is performing a system restore - I know that performing a system restore will revert the file versions, but I don't know if it would leave behind the registry value that would trick Update Rollup 2 setup into thinking that 1.1 SP1 is installed when actually it isn't. For reference, the registry value that Update Rollup 2 setup looks at to detect the presence of .NET Framework 1.1 SP1 is HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322@SP >= 1.

I think there may also be some potential conflicts with some older beta versions of the .NET Framework 2.0. I have not yet found a machine that demonstrates problems that I've traced back to .NET 2.0, but I do know that installing .NET 2.0 will update the version of %windir%\system32\mscoree.dll, and uninstalling .NET 2.0 will not revert it back because of how Windows Installer handles shared files and reference counting. I am going to try to create some repro scenarios to look at this further.

I'll post further updates when I figure out more about the root cause of these issues....