As the guy behing WorkingHardInIT blog pointed out here, there are people experiencing issues when installing Service Pack 1 on Windows 2008 R2 (or Windows 7) related to missing or corrupted files in the WinSXS\Manifests or Servicing\Packages folders. The related error code is 0x00f0818, but from personal experience I can say may also apply when Windows Update produces error code 0x800b0100.
The missing or corrupted files can be viewed by the System-Update-Readiness-Tool which will generate logfiles at %SystemRoot%\Logs\CBS. For example, a failing SP1 installation might produce the following CheckSUR.log (excerpt):
Checking Package Manifests and Catalogs
(f) CBS MUM Corrupt 0x800F0900 servicing\Packages\Package_1_for_KB2416471~31bf3856ad364e35~amd64~~126.96.36.199.mum Line 1:
(f) CBS Catalog Corrupt 0x800B0100 servicing\Packages\Package_1_for_KB2416471~31bf3856ad364e35~amd64~~188.8.131.52.cat
Checking Component Store
(f) CSI Manifest All Zeros 0×00000000 winsxs\Manifests\amd64_wpf-presentationhostdll_31bf3856ad364e35_6.1.7600.16542_none_cc28a17e399280f3.manifest amd64_wpf-presentationhostdll_31bf3856ad364e35_6.1.7600.16542_none_cc28a17e399280f3
The blog mentioned gives a nice writeup on how to solve this issue by (temporarily) fixing ACLs and then replacing the files mentioned in CheckSUR.log by copying them off a second – identical – installation. But this may get clumsy when the section “Unavailable repair files” mentions a lot of Manifests and Packages, and prone to error with these long filenames.
Fortunately, we can automate this process a bit as I’ll describe below. Before doing this, follow the steps contained in the mentioned blog to set up permissions correctly (don’t forget to reverse changes afterwards). Note that in this procedure I’m going to use a drive letter X: for storing the repair files.
First, copy the CheckSUR.log to a file named files.txt. Edit files.txt and remove the line “Unavailable repair files:” and everything before that. Save the file.
Then, open an command prompt on the system we’re going to copy these files off and enter the following:
for /f %f in (files.txt) do @copy %SystemRoot%\%f X:\%f /y
Next, on the system with issues, open an elevated command prompt and enter the following to make backup copies of the corrupt files:
for /f %f in (files) do @move %SystemRoot%\%f %SystemRoot%\%f.bak /y
Finally, enter the following command to replace the missing or corrupt files:
for /f %f in (files) do @copy X:\%f %SystemRoot%\%f /y
Of course, this procedure can be adjusted to your liking; you could for example copy the repair files directly off another system using the system share.