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

Comments (18)

  1. Anonymous says:

    I understand that Dean.

    We base documentation on the targeted level of the user.  In this case, the targetted user would be an admin/image builder who most likely has some sort of scripting background.  The average home user really shouldnt be using the tool for day to day things unless they just really want to.  There are other mechanisms in place for that.

  2. Anonymous says:

    Thanks Dan, will you please link your post once its up there so I know which one it is?

  3. Anonymous says:

    Dan

    Can you open an issue on the forums for me and upload your logs there so people can look over them?

    Thanks!

  4. Anonymous says:

    For the uninstaller piece, its possible that the command being passed to DISM isnt valid, this would cause a problem and you might to pass the explicit DISM command manually yourself.

    As fo the description, that's exactly what DISM does so I am not sure why you'd say its not accurate.  Eveything in Windows is exposed as a package of some sort.

  5. Anonymous says:

    DISM is the end all be all of utilites for the ser vicing stack.  The uninstaller is usually encapsulating the DISM commands themselves so that they can be run against the machine.  Basically, nothing is done unless DISM does it.

  6. Anonymous says:

    Because the uninstaller sometimes doesnt get all of the binaries off the machine.  It was pre-release code after all.

  7. Dan says:

    This is the exact error I get when trying to install SP1.   When I run the DISM I get the same error though after a minute or so of it running..  I'm completely stumped as I've tried everything short of a system reformat.  I've never looked at the CBS file until now and there's just so much data in there.  I do a search for "installed invalid" and it comes up with many different results.  The weird thing is that I was never able to properly install the Windows 7 SP betas or RC's, I kept getting install errors.

  8. Rahul says:

    Thanks for the info Joseph. Heped me solve the problem.

    @Dan: Searching for 'kb976932' in the CBS log would be of help to you in getting the right packages to uninstall using dism then. All the best.

  9. Dan says:

    @Rahul

    Thanks for the tip.  I did a search for that and it came up with 3 results and all of them were this:

    CBS    Read out cached package applicability for package: Package_for_KB976932~31bf3856ad364e35~amd64~~6.1.1.17514, ApplicableState: 112, CurrentState:101

    I did the following in the cmd prompt:

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

    The machine works for a little bit and then it errors out and says:

    "An error occurred – Package_for_KB976932 Error: 0x800f0904"

  10. Dean says:

    So why would "manually" removing it ( which doesn't look manual to me ) remove all of it while "removing" it removing it won't ?

  11. Dan says:

    @joscon

    Ok I'm about to create a thread in the forums and provide a link to the CBS log and the Packagelist file as well..

    When I went to type up my question it pointed me to this thread:

    social.technet.microsoft.com/…/d8b379a7-7b39-4449-8238-7835e48b3366

    And I've done pretty much everything that was mentioned and still no luck.   Thanks in advance to any help you can give.

  12. Dean says:

    "Because the uninstaller sometimes doesnt get all of the binaries off the machine.  It was pre-release code after all."

    But what I mean is, technically, what is DISM doing that the uninstaller doesn't ? How does DISM know more ? Can you use DISM to uninstall ANY installed program ?

  13. Dean says:

    "DISM is the end all be all of utilites for the ser vicing stack.  The uninstaller is usually encapsulating the DISM commands themselves so that they can be run against the machine.  Basically, nothing is done unless DISM does it."

    Then if DISM is really doing the work how could this be true ?

    "Because the uninstaller sometimes doesnt get all of the binaries off the machine."

  14. Dean says:

    Also, it seems to me that this description of DISM that you get when you run it is totally inaccurate because it's not just used with imaging by any means.

    " DISM enumerates, installs, uninstalls, configures, and updates features

    and packages in Windows images. The commands that are available depend

    on the image being serviced and whether the image is offline or running."

  15. Dean says:

    OK, now I see why you use the term

    "manual"

    It's not accurate because for the ordinary person reading that it makes it sound like DISM is only used for working with images for installing on PC's. It doesn't at all make it clear that DISM is also used on a daily basis for everyday things. I certainly had that impression from all of the Microsoft info on it and only realized that it did more from this blog posting. You people at Microsoft need to start understanding that not everyone is a Microsoft employee and has inside info nor is everyone a programmer. If the documentation for stuff is written for Microsoft employees and programmers then only Microsoft employees and programmers will ever understand it. That is why I have been begging for better documentation on the Hard Link issue.

  16. Dean says:

    "We base documentation on the targeted level of the user.  In this case, the targetted user would be an admin/image builder who most likely has some sort of scripting background."

    This is exactly my point !

    You guys are being eliteist. The targeted users should be from the programmer to the person running a network. Including the smallest business network. Network admins may not be as "smart" as programmers but neither are they stupid and they REALLY need to understand this stuff to do their jobs effectively. I don't know why you people can't understand that. Technical documentation needs to be ACCURATE if confusion is not to be spread. Confusion is the worst thing imaginable when it comes to technical documentation. If a program is used on a wide basis and not a narrow one then the documentation should state so.

    I never said anything about the "home" user. That was you.

  17. Drewfus says:

    "Basically, nothing is done unless DISM does it."

    Joseph, how does DISM cope when servicing an image for a system with a non-identical service stack? That is, if the OS builds are identical, but either the host or serviced environment has had a service stack update, or if the OS versions are different (especially at the major.minor level), how hoes DISM "know what to do", or what it can do? During offline servicing, is there any interaction between the online and offline servicing stacks? Which DISM "does it", in other words – the offline DISM that was designed for the offline build, or the online "foreign" version. I ask this after having noticed (in log files) DISM call Pkgmgr when servicing an offline Vista image – and it was Pkgmgr from the *offline* system that was being called. I found this somewhat fascinating and intriguing. 🙂

    If DISM is doing all the work, including when not called from the command line, then why can't, for example, DISM enumerate 3rd-party drivers on an online Vista system? If the answer is, more or less – because the Vista SS doesn't support this function, then DISM isn't doing all the behind the scenes work, or is it?