手贱卸载了Office 2013改装2016,然后就呵呵了,安装失败,且没有报错信息。F**k 微软。
首先在文件资源管理器,也就是文件夹的导航里输入%Temp%,然后搜索SetupExe,根据文件名查看出错时的日志,例如SetupExe(2018081612405095C).log,明显能够看到时间。
##报错信息
文件末尾,你会看到
Catalyst execution finished: 08/16/2018 12:09:12. Return code: 1603.
这个错误代码1603,在谷歌百度上有铺天盖地的该问题解决方案,包括微软自己的网站也有各种方法,反正我试了不行。1603实际是一个通用的错误代码,我们需要在日志文件中找到底是哪里出错了。
各种翻日志,我找到了这一段
2018/08/16 12:04:04:963::[14144] MSI(ACTIONSTART): ‘操作 12:04:04: InstallFinalize。’
2018/08/16 12:04:04:963::[14144] MSI(INFO): ‘操作开始 12:04:04: InstallFinalize。’
2018/08/16 12:04:05:010::[14144] MSI(COMMONDATA): ‘消息类型: 0,参数: 0’
2018/08/16 12:04:05:010::[14144] MSI(COMMONDATA): ‘消息类型: 1,参数: Microsoft Office Professional Plus 2016’
2018/08/16 12:04:05:010::[14144] MSI(ACTIONSTART): ‘操作 12:04:05: CryptRegAction。’
2018/08/16 12:04:05:073::[14144] MSI(INFO): ‘CryptRegAction: Registering the Office Provider.’
2018/08/16 12:04:05:088::[14144] MSI(ACTIONSTART): ‘操作 12:04:05: MsoHtmEdSelfReg。’
2018/08/16 12:04:05:260::[14144] MSI(ACTIONSTART): ‘操作 12:04:05: CAPopulateSPPCache。’
2018/08/16 12:04:05:276::[14144] MSI(INFO): ‘CAPopulateSPPCache: OMSICA : Initializing CustomAction CAPopulateSPPCache’
2018/08/16 12:04:05:432::[14144] MSI(ACTIONSTART): ‘操作 12:04:05: CARegisterHeartbeat。’
2018/08/16 12:04:05:510::[14144] MSI(INFO): ‘CAQuietExec: ???’
2018/08/16 12:04:05:510::[14144] MSI(INFO): ‘CAQuietExec: Error 0x80070001: Command line returned an error.’
2018/08/16 12:04:05:510::[14144] MSI(INFO): ‘CAQuietExec: Error 0x80070001: CAQuietExec Failed’
2018/08/16 12:04:05:510::[14144] MSI(INFO): ‘CustomAction CARegisterHeartbeat returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)’
2018/08/16 12:04:05:510::[14144] MSI(INFO): ‘操作结束 12:04:05: InstallFinalize。返回值 3。’
没有经验的可以尝试所有“返回值3”,英文版估计是“Return Code 3”。为什么搜这个?因为返回值3就说明操作失败了。在我的记录里,上一段之后,直接就开始回滚了,说明一定是这里出了问题。回滚的日志开头如下
2018/08/16 12:04:05:510::[14144] MSI(COMMONDATA): ‘消息类型: 2,参数: 0’
2018/08/16 12:04:05:526::[14144] MSI(COMMONDATA): ‘消息类型: 2,参数: 0’
2018/08/16 12:04:05:526::[14144] MSI(COMMONDATA): ‘消息类型: 0,参数: 0’
2018/08/16 12:04:05:526::[14144] MSI(COMMONDATA): ‘消息类型: 1,参数: Microsoft Office Professional Plus 2016’
2018/08/16 12:04:05:526::[14144] MSI(ACTIONSTART): ‘操作 12:04:05: Rollback。正在回退操作:’
2018/08/16 12:04:05:526::[14144] Log level changed from: Standard to: Verbose
2018/08/16 12:04:05:526::[14144] MSI(COMMONDATA): ‘消息类型: 2,参数: 1’
2018/08/16 12:04:05:526::[14144] MSI(COMMONDATA): ‘消息类型: 2,参数: 0’
2018/08/16 12:04:05:620::[14144] MSI(COMMONDATA): ‘消息类型: 0,参数: 0’
2018/08/16 12:04:05:620::[14144] MSI(COMMONDATA): ‘消息类型: 1,参数: Microsoft Office Professional Plus 2016’
2018/08/16 12:04:05:620::[14144] MSI(ACTIONSTART): ‘操作 12:04:05: Rollback。正在回退操作:’
那么错误到底是啥呢?很明显是CARegisterHeartbeat错了
2018/08/16 12:04:05:432::[14144] MSI(ACTIONSTART): ‘操作 12:04:05: CARegisterHeartbeat。’
2018/08/16 12:04:05:510::[14144] MSI(INFO): ‘CAQuietExec: ???’
2018/08/16 12:04:05:510::[14144] MSI(INFO): ‘CAQuietExec: Error 0x80070001: Command line returned an error.’
2018/08/16 12:04:05:510::[14144] MSI(INFO): ‘CAQuietExec: Error 0x80070001: CAQuietExec Failed’
2018/08/16 12:04:05:510::[14144] MSI(INFO): ‘CustomAction CARegisterHeartbeat returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)’
如何解决?百度是不靠谱的,还是要在谷歌搜索。这里可以搜索CARegisterHeartbeat或者CAQuietExec。
##解决
在我的这个例子里,微软自己的卸载工具https://support.office.com/zh-cn/article/%E4%BB%8E-pc-%E5%8D%B8%E8%BD%BD-office-9dd49b83-264a-477a-8fcc-2fdf5dbf61d8?ui=zh-CN&rs=zh-CN&ad=CN 用了是不好使的,但是还有用,因为大部分的东西他都会帮忙弄好。所以首先要先用对应版本的小工具把Office残留的东西清理一下,清理完记得重启系统。
在某个帖子里发现这个Heartbeat与“计划任务”相关,在注册表里有表项。那么就查注册表。原贴:https://social.technet.microsoft.com/Forums/office/en-US/cda04233-4b97-4c0a-a873-2d61f848f903/office-2016-proplus-failed-installation?forum=Office2016setupdeploy。
打开task schedule,任务计划程序,从左边栏中找到Microsoft/Office,如果能正常删除,那就删除,然后重启重装应该就ok,不行往下看。(这里可以按帖子里的说法,在硬盘中把计划的任务Office文件夹删了,但是我的硬盘中就没有这个文件夹,所以就没管,在"%windir%/system32/tasks"里面找)
但是Win+R,regedit打开注册表之后,用帖子中给的"hklm/software/microsoft/windows nt/current version/Schedule/taskcache/tasks" 和"hklm/software/microsoft/windows nt/current version/Schedule/taskcache/tree"并不能正确找到注册表项,实际位置在:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree和HKEY_LOCAL_MACHINE\software/microsoft/windows nt/current version/Schedule/taskcache/tasks,就是需要在HKEY_LOCAL_MACHINE里面找这两个表项。
之后就按照原贴的说法
When I opened up the …taskcache/tree registry entry there was a subkey for “Microsoft/Office”, Inside that key, there was an ID entry that contained a GUID that pointed to a folder inside the …taskcache/tasks registry entry. So I looked for the GUID under the “…taskcache/tree/Microsoft/Office"registry entry and used that GUID to locate the correct entry in the “…taskcache/tasks” registry key. Then I delete the key that matches the GUID under the …taskcache/tasks” key and then deleted the “Microsoft/Office” entry under the …taskcache/tree" registry entry.
在tree的子键"Microsoft/Office"中挨个点击,查看该键的ID,就是"{}"的那个值,并且在tasks里面找对应的,把对应的见删了,之后在把"Microsoft/Office"都删了。
重启系统,安装Office,成功。
这个错误是微软自己的清理工具没清干净,或者是本机注册表乱了,因为在注册表里能够看到相关的键,但是在task schedule中并不能看到任何计划的任务。实际上就是老版本的Heartbeat已经在注册表里存在了,清理程序又没把它删掉,导致新的版本在装自己的heartbeat时出错了(微软这个东西做的也是够了)。
log做的还是比较详细的,每个人碰到的情况不一定一样,但是按照本文的方法一定能够找到解决方案。