How the .NET Framework can get reverted and cause problems for Update Rollup 2 for MCE 2005

I have previously written about component registration failure errors that have been seen in some instances after installing Update Rollup 2 for Media Center 2005. As I described here, the primary root cause we have seen for this type of error is that the version of mscoree.dll in %windir%\system32 gets reverted from the .NET Framework 1.1 SP1 version to the .NET Framework 1.0 SP3 version.

After investigating this issue a bit more, we have found some scenarios that will cause this file to be reverted like this. In particular, the following set of steps will cause this to repro:

  1. Install Media Center 2004
  2. Install the .NET Framework 1.1
  3. Install the .NET Framework 1.1 SP1
  4. Upgrade to Media Center 2005

What happens behind the scenes in this scenario is that the Media Center 2005 upgrade performs the equivalent of an OS reinstall but without reformatting the partition that the OS is installed to. The .NET Framework 1.0 SP3 is a part of the OS in Media Center 2005, and it is a design philosophy of OS setup that it will install any files that are a part of the OS regardless of whether or not there are later versions of those files already present on the file system. The reason for this is that computers could be in unknown states with higher versions of some files, but the bits that were shipped on the OS are known to work well together and be tested as a single unit.

After performing this upgrade, the file %windir%\system32\mscoree.dll is updated to the 1.0 SP3 version that is included as part of the OS in Media Center 2005. However, the .NET Framework 1.1 and 1.1 SP1 are still considered to be installed by Windows Installer and Windows Update. That means that if you visit Windows Update on a machine that has been upgraded in this manner, you will be offered Update Rollup 2, but not be offered the .NET Framework 1.1 or 1.1 SP1.

One of the commands run during Update Rollup 2 setup specifically calls the 1.1 version of ngen.exe, but that version of ngen.exe will not work correctly with the 1.0 SP3 version of mscoree.dll, so setup detects this error and stops running any further registration code. That leaves the machine in a state where some Media Center components are not registered. In order to get Media Center fully registered and recover from this scenario, you can run the following steps:

  1. Install the .NET Framework 1.1 SP1 or a later version of the .NET Framework such as the .NET Framework 2.0
  2. Click on the Start menu, choose Run and type cmd
  3. From the cmd prompt, run %windir%\ehome\medctrro.exe /o /p RunOnce to complete Media Center registration that was previously skipped