You receive 0x800f0904 - CBS_E_MORE_THAN_ONE_ACTIVE_EDITION when installing SP1 for Win7/R2

During the installation of Service Pack 1 for Windows 7/2008 R2 you might encounter the following error:

0x800f0904 - CBS_E_MORE_THAN_ONE_ACTIVE_EDITION

This can be due to the release candidate failing to uninstall properly. The \Windows\Logs\CBS.log will show the following:

2011-02-23 17:25:59, Info CBS Appl: detectParent: package: Package_for_KB976932~31bf3856ad364e35~amd64~~6.1.1.17105, parent found: Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~6.1.7600.16385, state: Superseded

2011-02-23 17:25:59, Info CBS Appl: detectParent: package: Package_for_KB976932~31bf3856ad364e35~amd64~~6.1.1.17105, parent found: Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~6.1.7601.17105, state: Installed Invalid

2011-02-23 17:25:59, Info CBS Appl: detectParent: package: Package_for_KB976932~31bf3856ad364e35~amd64~~6.1.1.17105, parent found: Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~6.1.7601.17514, state: Installed

Manually removing the release candidate using DISM will allow for the service pack to properly install. The commands to do this are (reboots may be required):

Dism /online /remove-package /packagename:Package_for_KB976932~31bf3856ad364e35~amd64~~6.1.1.17105

Dism /online /remove-package /packagename:Package_for_KB976932~31bf3856ad364e35~amd64~~6.1.1.17514

NOTE: The DISM command you will need to use is dependent on the version of the service pack release you previously had installed. In the example above, this information can be determined by the parent Windows Foundation Packages in the CBS.log

--Joseph