鉴于最近Office 2007 SP2已经正式发布,今天开始对手中的几台计算机进行更新。
其中一台计算机,运行Vista Ultimate X64系统。在应用Office 2007 SP2的过程中,提示“检测失败”,大概是说由于检测到数据库不完整,不能继续进行。
既然直接安装不行,那么就尝试把SP2集成到Office 2007的安装程序中,进行一下修复安装。
将SP2集成到安装程序的过程很顺利,但是执行Office 2007的安装程序,在提示载入必要文件后的几秒钟,安装程序即挂起,停止响应。
同时,Windows事件管理器中记录到如下事件:
无法找到来自源 Microsoft Office 12 的事件 ID 5000 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。
如果该事件产生于另一台计算机,则必须在该事件中保存显示信息。
以下是包含在事件中的信息:
Office12Setup
{10120000-0F00-0000-0000--0000000FF1CE}
12.0.4518.1014
X
MsiAPICallFailure
Office64.WW/Office64WW.xml
X
X消息资源存在,但在字符串/消息表中找不到该消息
这种提示真是让人一头雾水。在线查询微软知识库,也没有找到解释。只好从错误中比较特别的关键字入手。
搜索“MsiAPICallFailure”,只得到几个结果,而且都是没有解决的问题。
猜测字面意思,是说调用MSI的API失败。会不会是Windows Installer的问题呢?
到微软网站下载Windows Installer 4.5,进行安装后重启,再次执行Office 2007安装程序,问题仍然没有解决。
这时我觉得,是不是应该先把现有的Office卸载掉再重新安装?这样总应该可以了吧。
于是运行Office的卸载程序,居然提示我不能对程序进行卸载。
这时隐约想起最开始提示的数据库不完整这个错误,似乎明白这句话的所指。
微软发布过一款小工具,叫做Windows Installer清理工具(Windows Installer Clean Up),专门用于清理本机上安装的MSI程序数据库。
使用这个小工具,移除了所有有关Microsoft Office的项目。之后再次运行集成了SP2的Office 2007安装程序,就一切正常了。
用正常的方式安装一次后,Office 2007成功升级到SP2,至此问题解决。