Microsoft Office Installer woes #fix #installer
For the last couple of months my copy of Microsoft Office 2003 had become corrupted, naturally the OEM vendor’s solution was to use the disk provided and just overwrite the whole installation. This machine is my primary machine and although I don’t use Office very often, preferring Google Docs, I do use it.
The issue I was facing was much more than just that Office didn’t work, during an upgrade the Windows Installer Component (msiexec.exe) failed and crashed my computer. I wasn’t really very bothered as I was using Google Docs, however Microsoft being Microsoft and other obscure reasons certain COM/.NET library files check in with Windows Installer Component which caused an orphaned install windows to popup when I started up anything using these components, most specifically the Internet Explorer component. Which made starting up may programs very troublesome.
I am human, and humans are very capable of getting used to intolerable situations, so I just stopped using these programs, which was rather less intolerable than I expected. And as the zWindows Installer Component itself wasn’t broken I could install and uninstall anything I wanted without tripping this bug. As a bonus I had been using a Gentoo Live CD for security, so I hadn’t been using Windows very often anyway.
So how did I solve it? I have had some experience with SysInternals’ tools Process Explorer and Process Monitor, so I knew that both tools would prove very useful in solving this problem. The first thing I did was start Process Explorer and examine one of the applications which was tripping this issue – googletalk.exe. This was rather more difficult as it seemed, there was a handle which referred to c:\WINDOWS\Installer\3bc18.msi (md5 5b05f6f98ad79a58eb5766a4a305e656), although it did not occur to me it was handy to be able to see an overview of the handles and dlls that were being used by the application. I started up Process Monitor, and selected googletalk.exe as the task to monitor and saw that one of the first applications it opened was 3bc18.msi.
I went to the directory, started it and discovered that it was the Office Setup application (Microsoft Office Professional Edition 2003), but it failed with an obscure message stating it couldn’t run. I decided to rename the file and see what would happen, so I executed 3bc18.msi, and it failed with the message that is couldn’t find pro11.msi, which is the Office Setup application. This turned out to be a red herring, as more than likely 3bc18.msi and pro11.msi are the same program.
I continued examining the installer with Process Monitor, remembering that the obscure message said something about missing resources, so I assumed that it couldn’t find some file. So when I filtered everything except the disk operations in Process Monitor and discovered a missing component, a patch, I knew I was close to the solution. I didn’t know at that point that msiexec.exe stores information about patches in the registry entry for that installer, in that way it can run the patches again when you need to reinstall, uninstall or repair components or the entire application. Unlike the Windows Installer I assume that I can just ignore the missing patch, but I didn’t know where the installer was getting this list of patches. I adjusted my Process Monitor filters to monitor registry operations and worked my way back. I discovered that the registry data was present for the package OUTLFLTR.MSP (HKEY_CLASSES_ROOT\Installer\Patches\47D5B7190DD12874B9CCDFE6E20DF957), I followed this trail up to the registry entry for Microsoft Office Professional Edition 2003 (HKEY_CLASSES_ROOT\Installer\Products\9040110900063D11C8EF10054038389C). This entry contains a folder \Patches which contains String Value entries with all the patches which have been installed. And a Multi-String Value also named Patches which contains a list of the patch ids. All I needed to do was find the entry 47D5B7190DD12874B9CCDFE6E20DF957 and remove it from the list, but not before making a backup of the entry.
I went back to execute 3bc18.msi and my Office was up and running again.
I have lots of fun solving issues like this, but for the number of hours I put in it would probably have been cheaper to buy a new copy.
Image source: Microsoft