0x80004005 is E_FAIL, “unspecified failure,” the least informative code Windows Update produces: the operation failed and the component did not say why. It is most notorious on feature updates, where it can appear at download, install, or the first-boot phase, and on ordinary updates whose real cause hides one layer down.
net stop wuauserv, net stop cryptSvc, net stop bits, net stop msiserver. Rename C:\Windows\SoftwareDistribution to SoftwareDistribution.old and C:\Windows\System32\catroot2 to catroot2.old, then restart the four services with net start. This rebuilds the download cache and the update database from scratch.DISM /Online /Cleanup-Image /RestoreHealth, then sfc /scannow. Restart afterwards; a repaired store often lets the same update sail through on the next attempt.For feature updates, skip the fight and use the Installation Assistant or installation media for an in-place upgrade, which runs a more tolerant setup path and keeps files and apps. For a plain cumulative update failing with this code, install it manually from the Update Catalog to get a specific error instead of the generic one; that specific error has its own page and its own fix.
Why won’t Windows just tell me what failed? Because 0x80004005 is the fallback code components return when they did not map their failure to a specific one. The real detail exists, in the update history, the CBS log, and for feature updates the setup logs under C:\$WINDOWS.~BT\Sources\Panther, but the summary code stays generic.
Should I keep retrying the same feature update? Twice is reasonable after working the steps. Beyond that, retries repeat the same failure deterministically. Switch to the Installation Assistant or media-based upgrade, which changes the method rather than hoping for a different result.