Windows Live Essentials 安装遇 0×80040609 错误详解

简介:

 前两天在家中另一台计算机上安装最新的 Windows Live Essentials 2011 时,遇到了无法安装的问题,重试多次均是如此。按照 Windows 程序的老规矩,安装程序给出了错误代码:0×80040609

 

寻找方案无果

第一反应当然是点击“获取帮助”链接,但弹出的帮助网页上并没有提供有价值的帮助。

第二方案,上网搜索。果然这个问题在网上不少人遇到,而且有朋友 Leo Chen 写出了解决方法,那就是“打开 Windows 防火墙”,但实际上它在我的电脑上运行正常。看来,我遇到的问题原因并不在这里:

image

上图来自 Leo Chen 的文章。在我的计算机上,错误ID相同,但“源”是不同的 WLiveRemoteService。也就是说,可能会有多种错误原因产生同一个错误代码。我们不能什么时候都依葫芦画瓢,而是应该具体情况具体分析,找准问题的根本原因。

wbpluto喜欢在介绍错误解决方法时,能同时介绍自己分析并找出错误原因的步骤,并对其中的原理进行解释,让读者能够学到更多真本事,也就是“授之以渔”,而不是只会说“这个问题应该这样解决”

 

 

分析原因

首先想到,微软在 Windows 中的软件包,一般都使用的是 MSI 格式,虽然 Windows Live Essentials 2011 安装文件是 EXE 可执行程序,但由于其是多个应用程序的集合,应该也是由 MSI 打包而来的。如果能够找到其中的 MSI 安装包,单独安装并分析出错的组件,那应该就很好分析并解决了。

我使用能够查看 EXE 文件内部资源的 PE Explorer 软件打开安装包,发现,其中有一个文件夹名为 PACKAGE。比较可疑的名字,这里面的资源会不会是各个组件的 MSI 安装包呢?

 2

在PACKAGE 上单击右键,释放所有资源,直接单击确定,不用设置什么,让软件将程序中所有的资源都释放出来:

3

找到释放出来的文件夹,打开 PACKAGE 文件夹,其中的文件都是 RES 后缀名:

4-1-res

其实啊,他们都是 CAB 格式的存档文件,不信把它们全都重命名为 CAB 后缀看看吧。这个步骤使用命令更方便,在 PACKAGE 文件夹上按住SHIFT单击右键,打开命令提示符窗口,运行:

ren *.res *.cab

即可把所有文件一起重命名了。双击打开,果然是可以打开的,CAB 里面是 7z 压缩文件!我用 WinRAR 把 CAB 中的 7Z 们一股脑都解压缩出来:

4-2-7z

7z 文件的文件名已经泄漏天机,很明显这些文件就是各个 Live 软件组件的安装包,只不过被压缩成 7z 格式了。于是再把它们一股脑释放出来,晕,竟然又得到了 CAB 文件:

4-3-cab

我就不信这是个无底洞了,再释放,终于得到了想要的 MSI 安装包:

4-4-msi

微软把这些安装包都视为宝贝,竟然包裹了一层又一层,这是喜剧电影里才有的情节吧!微软真是太幽默啦!完整的包裹关系为:

MSI → CAB → 7z → CAB

算了,一笑而过吧。来看看手动使用 MSI 来安装出错的那个软件包会怎么样,因为 MSI 提供的原始出错信息肯定比打包后的 EXE 更接近真实的错误原因。根据 EXE 错误提示中的“源”属性,找到 WLRemoteService-i386.msi

55

运行之后,提示找不到 Windows Live Remote Service 的原始安装文件 WLRemoteService-i386.msi,让手动指定(此处未截图)。手动指定到此处的 WLRemoteService-i386.msi,结果还是说找不到。这让我想起之前《Visual Studio 2008 安装失败(“Web 创作组件”无法安装)的解决办法》一文中,也有类似的问题,是因为安装了相同组件的不同版本,导致另一个版本无法安装,系统不认可这个版本的 MSI 安装包。

于是想起来,之前安装过 Windows Live Essentials 2011 的 Beta 版本,应该是卸载的时候没有卸载干净,虽然控制面板“卸载程序”中找不到 Live 组件了,但在系统中还保留了 Windows Live Remote Service,于是最终导致了这样的问题。

 

动手解决

可是没有旧版本的安装包,也找不到卸载程序,怎么样将其卸载掉安装新版呢?

安装在系统中的 MSI 程序包都在注册表中有记录,只要找到并删除这个记录,也就相当于将其卸载,这样就可以顺利安装新版本了。于是打开注册表编辑器,搜索“Windows Live Remote Service”名称,果然,在 HKEY_CLASSES_ROOT\Installer 中找到了这个组件的记录。将 Installer 下的这个字符串项整个删除(使用 Windows Installer Cleanup 程序应该也同理),重新安装新版的WLRemoteService-i386.msi,果然就能够顺利安装了!

对比了一下 HKEY_CLASSES_ROOT\Installer 中前后两个版本的记录,他们的 PackageCode 代码是不同的。在安装和卸载 MSI 软件时,系统就是根据这个暗号来判断 MSI 文件是否是软件原始的安装包的:

6

6-2

最后重试重新运行完整的 EXE 安装包安装 Windows Live Essentials 2011,本以为会顺利完成,但再次出现了两个错误:

7

现在就一点都不用紧张了,应该是同样的原理,有其他的几个旧版本组件也没有正常卸载掉。按照相同的方法将他们清理掉,再次安装,就完全没有问题了

 

总结

至此,通过一步一步的分析深入,非常精确的确定了的原因和病灶,并顺利的接解决了此次问题,并且还发现了微软打包程序的小秘密,可以说收获还是不小的。在此wbpluto把其中的经验分享给大家,希望大家以后遇到问题也能够自己解决。



本文转自wbpluto 51CTO博客,原文链接:http://blog.51cto.com/wbpluto/476698,如需转载请自行联系原作者

相关文章
|
5天前
|
Linux 虚拟化 Docker
Windows12安装Docker
Windows12安装Docker
30 2
|
23天前
|
安全 Windows
安装MyEclipse遇到错误提示 Failed to find a Main Class in “C:Windows\Temp\“时的解决方案
安装MyEclipse遇到错误提示 Failed to find a Main Class in “C:Windows\Temp\“时的解决方案
24 1
|
1天前
|
5G Python
Windows11搭建Python环境(Anaconda安装与使用)
Windows11搭建Python环境(Anaconda安装与使用)
9 0
|
1天前
|
关系型数据库 MySQL Windows
windows安装MySQL5.7教程
windows安装MySQL5.7教程
8 0
|
2天前
|
人工智能 安全 机器人
AI电销机器人系统源码部署:freeswitch安装Windows
在Windows上安装FreeSWITCH:访问官网下载安装程序,运行并按提示安装;选择安装路径和组件;等待安装完成;配置FreeSWITCH,修改设置;启动服务;测试其功能;如遇问题,参考官方文档或进行调试故障排除。记得定期更新维护以保证稳定安全。
|
5天前
|
网络协议 安全 测试技术
Windows安装禅道系统结合Cpolar实现公网访问内网BUG管理服务
Windows安装禅道系统结合Cpolar实现公网访问内网BUG管理服务
|
1月前
|
Linux 数据安全/隐私保护 Docker
linux和windows中安装emqx消息服务器
linux和windows中安装emqx消息服务器
37 0
|
1月前
|
物联网 Windows
安装windows 10操作系统
安装windows 10操作系统
47 1
|
1月前
|
Windows
windows server 2019 安装NET Framework 3.5失败,提示:“安装一个或多个角色、角色服务或功能失败” 解决方案
windows server 2019 安装NET Framework 3.5失败,提示:“安装一个或多个角色、角色服务或功能失败” 解决方案
125 0
|
1月前
|
应用服务中间件 nginx Windows
windows下快速安装nginx 并配置开机自启动
windows下快速安装nginx 并配置开机自启动
windows下快速安装nginx 并配置开机自启动