Windows 7 has been widely acclaimed as the best Windows release in years, but Microsoft has still managed to also make it an evil sales tool for Office 2007 upgrades. Here's what sucks about pre-installed Windows 7 for Office 2003 users not planning to make a shift, and how to fix the dreaded MAPI32.DLL error.
Picture by tambako
My main reason for writing this post is that Microsoft has managed to conjure up a scenario for new Windows 7 users which makes Outlook all but unusable for Office 2003 users, and which can only be fixed with a bizarre combination of freeware tools, including a Linux boot CD. I spent an inordinate amount of time over the weekend trying to fix the problem on a friend's new Acer notebook, so I figure it's worth sharing.
My secondary reason is to ask why the world's richest software company is still asking users to manually rename obscure files just to get its own, charged-for software to work. The answer, as ever, is a combination of greed, technical incompetence and indifference to paying customers.
What's going on?
So here's the scenario in a nutshell: if you install Office 2003 on a machine which also has had a demo version of Office 2007 on it (which is pretty common on newly-sold PCs), then Outlook likely won't work. Instead, you'll get this error message the first time you try to start it:
Cannot start Microsoft Office Outlook. MAPI32.DLL is corrupt or the wrong version. This could have been caused by installing other messaging software. Please reinstall Outlook.
Reinstalling (or using the Office repair tool) doesn't work, and the problem will occur even if you uninstall the demonstration version.
Microsoft's official support advice for this problem is to rename one file, MAPI32.DLL, to MAPI32.OLD so that Outlook thinks it needs to repair it. This is neither sufficient or very helpful. Firstly, in many cases you have to rename other similarly-named files elsewhere on your system which the error message doesn't tell you about; simply renaming MAPI32.DLL in the Windows/System32 directory won't always help. (It certainly didn't for me, and other users have reported similar issues online.)
Secondly, Microsoft's security infrastructure means you can't simply rename the file. Because it's in a protected directory, you can't rename it even if you launch an administrator-level command window. On Vista, it's just about possible to change the permissions through an arduous process — but on the Windows 7 machine I used, every single permission-changing option that was relevant was permanently greyed-out. The whole point of the Microsoft security infrastructure is that users shouldn't have to (and therefore shouldn't) meddle with these files, but it's a bit pointless Redmond gloating about it when one of the company's flagship products demands that you rename a DLL file in a protected directory.
The MAPI32.DLL fix
If this happens to you, here's how I went about fixing it:
- Install Lifehacker favourite Everything on your PC. This is the easiest way to find all the errant files (Windows' own built-in search is hopeless at this task).
- Search for files called MAPI32.DLL. Try and rename them to MAPI32.OLD. If you can't, make a note (on paper) of the directory they are located in.
- Perform the same search for files called MSMAPI32.DLL. Again, try and rename them to MSMAPI32.OLD, and note down the location if they don't. (In theory, the first search should catch these, but I found it didn't always.)
- Burn yourself a Linux Live CD (one which lets you boot into Linux directly from the disc). I used Puppy Linux, but there are plenty of other options, and the disc will almost certainly be useful to you again somewhere down the track.
- Reboot your machine with the CD in the drive. If you haven't configured your machine to allow booting from CD, you may need to change your BIOS settings. This is usually done by holding down the F2 key when booting and working through a series of menus (look for the 'Boot' option, and make sure that your CD drive is listed above your hard drive).
- Once your live CD boots, navigate to the directories you noted before and rename the files. (This will vary depending on which one you've chosen, but you'll likely end up in an Explorer-like interface.) Because Linux doesn't care about the Windows protection 'rules', you shouldn't have any dramas.
- Shut down the PC, remove the CD, and then reboot.
- Cross your fingers and try running Outlook. With luck, it will repair itself and begin running normally.
Fixing the problem is one thing, but the question of why Microsoft wants to force people with perfectly valid software to go through ridiculous hoops on a brand-new system remains. The cynical reaction is to assume that Microsoft would rather you purchased an Office 2007 upgrade, so the company doesn't care if it wrecks your existing Outlook 2003 install. After all, you've already paid for a new copy of Windows 7 (and a new PC) in this case.
I don't generally find conspiracy theories that involve companies pissing off their customers simply to sell them something very convincing. With that said, there's no doubt greed is the reason users are getting burdened with a crap trialware version of Office 2007 in the first place.
Whatever the motivation, there's at least two things Microsoft should be doing to try and mitigate the situation. The first is not to write such poor code in the first place. If Microsoft can't handle DLL management in Windows, then no-one else has a chance, really.
The second thing Microsoft could do is write some half-decent support documents. A quick Google search demonstrates that lots of people have had problems trying to rename these files, but there's no mention whatsoever of that issue in the online document regarding this issue. Microsoft makes a fortune from Office, so it can hardly argue it can't afford to support it properly.