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