Windows update was reporting that it was not running. In the end I had to reinitialise everything and delete all the existing update files. The Windows update troubleshooter had failed and I was down to the nuts and bolts.
Once I had done that, the first thing it did was to download, install and update the installer engine. Which was the initial problem.
Now I'm going through purgatory of having to do the updates in small chunks. There were nearly 400 of them and 1.7gigbytes. But because there are dependencies on older updates, I was getting backouts constantly, taking up to an hour or more to back out to the login screen.
Now I'm doing updates in blocks. Office updates work fine and install all in one go. Windows updates I'm having to do in small blocks. 20 - 40. Updates first. Security updates now. All the rest later.
Morale of the story? Keep your updates up to date and if you want another machine install a new one unless you have an extremely compelling reason to keep the old one.
Here is the cmd file I had to write to re-baseline my updates. It might be useful.
net stop wuauserv
net stop bits
net stop cryptsvc
pause
ren %systemroot%\System32\Catroot2 Catroot2.old
ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
pause
regsvr32 c:\windows\system32\vbscript.dll /s
regsvr32 c:\windows\system32\mshtml.dll /s
regsvr32 c:\windows\system32\msjava.dll /s
regsvr32 c:\windows\system32\jscript.dll /s
regsvr32 c:\windows\system32\msxml.dll /s
regsvr32 c:\windows\system32\actxprxy.dll /s
regsvr32 c:\windows\system32\shdocvw.dll /s
regsvr32 wuapi.dll /s
regsvr32 wuaueng1.dll /s
regsvr32 wuaueng.dll /s
regsvr32 wucltui.dll /s
regsvr32 wups2.dll /s
regsvr32 wups.dll /s
regsvr32 wuweb.dll /s
regsvr32 Softpub.dll /s
regsvr32 Mssip32.dll /s
regsvr32 Initpki.dll /s
regsvr32 softpub.dll /s
regsvr32 wintrust.dll /s
regsvr32 initpki.dll /s
regsvr32 dssenh.dll /s
regsvr32 rsaenh.dll /s
regsvr32 gpkcsp.dll /s
regsvr32 sccbase.dll /s
regsvr32 slbcsp.dll /s
regsvr32 cryptdlg.dll /s
regsvr32 Urlmon.dll /s
regsvr32 Shdocvw.dll /s
regsvr32 Msjava.dll /s
regsvr32 Actxprxy.dll /s
regsvr32 Oleaut32.dll /s
regsvr32 Mshtml.dll /s
regsvr32 msxml.dll /s
regsvr32 msxml2.dll /s
regsvr32 msxml3.dll /s
regsvr32 Browseui.dll /s
regsvr32 shell32.dll /s
regsvr32 wuapi.dll /s
regsvr32 wuaueng.dll /s
regsvr32 wuaueng1.dll /s
regsvr32 wucltui.dll /s
regsvr32 wups.dll /s
regsvr32 wuweb.dll /s
regsvr32 jscript.dll /s
regsvr32 atl.dll /s
regsvr32 Mssip32.dll /s
pause
net start wuauserv
net start bits
net start cryptsvc
It's easier than sending you to the page. I had to assemble it from the information on that page.