Updated: May 17th, 2012
Well, this one took ages. And whenever something takes me ages, rather than write it down in my personal notes, I prefer to put it out online for everyone with the same problem to easily find and benefit from.
The problem I'm talking about today is trying to upgrade your Windows 7 installation to SP1 by applying Microsoft's update KB976932, called "Windows 7 Service Pack 1 for x64-based Systems" and getting nothing but a failure every time. The same problem may affect 32-bit systems as well, and I'm not sure what the update number for that would be, but the solution should work for either one.
The update starts just fine, chugs along for 10 minutes or so, then reboots the system and starts performing more operations, when suddenly one of them fails about 10% down the road, reboots, and reverts the whole process. You end up with this message (code 80070490) and a failure for which there are a lot of useless "solutions" on the web that just don't work.
Except for one. I can't take credit for it – all I did was spend a month weeding through the crap, retrying, and getting nowhere, until a genius by the name Ben-IS came up with exactly the right diagnosis and provided exactly the right solution. This solution, in my own interpretation, is below.
Step 1
We are going to use a utility called SFC (System File Checker or Windows Resource Checker), which is part of the Windows installation. It will help diagnose the problem.
Open up a command prompt (cmd) as administrator and run
This will run for a while and produce a file called CBS.log which you can find in %WINDIR%\Logs\CBS (usually C:\Windows\Logs\CBS). See this KB929833 for more info on SFC and CBS (Component Based Servicing).
Even though there are no integrity violations, we should have enough info in the log to diagnose the problem.
Step 2
Unfortunately, Windows overwrote my CBS.log, so I'll go by the one Ben-IS provided.
Open up CBS.log and look for something like Failed uninstalling driver updates or 0x80070490 – ERROR_NOT_FOUND.
If you have this line, which you should if you're reading this post, you should also see lines similar to these a few lines above:
One of these .inf files is the culprit, and we're going to find out which one in the next step
I also found this article after seeing the Doqe: Install failed in the CBS.log after a sfc /scannow run
I
Step 3
Now open up a different log file located at %WINDIR%\inf\setupapi.dev.log (normally c:\Windows\inf\setupapi.dev.log).
Look for a line that contains Failed to find driver update or FAILURE(0x00000490).
Note the exact path to the .inf file that failed. In my case, it was:
Step 4
This is the key to the whole operation. Open up the command prompt again (cmd) as administrator and run
For example, I ran
You should see the following dialog:
Choose Install this driver software anyway.
The end result should be something like this:
Repeat this step for any failures found in step 3.
Step 5
Apply the SP1 Windows Update again – it should now install successfully.
And voila – enjoy your SP1!
Microsoft has failed to fix this incredibly cryptic problem, leaving it up to the users to figure out why their SP1 updates are not installing. Thanks to people like Ben-IS, solutions no longer involve head-banging, postal rage, and f7u12.