关于 Windows XP SP3 可能无法卸载 IE 8 Beta 2 的进一步总结
过去的一周大家谈论的焦点之一就是新发布的 IE 8 Beta 2 浏览器。关于 IE 8 Beta 2,cnBeta、驱动之家等很多网站都转载了来自 MSDN IE Blog 八月的一则声明《Windows XP SP3 用户可能无法卸载 IE 8 Beta 2》。
由于 MSDN IE Blog 之前在五月份已经就这个问题发表过一则声明《Internet Explorer and Windows XP SP3》,所以这一次没有对这个问题产生的原因进行详细解释,而网上转载的文章大多也只是简单地文字翻译,没有对原因进行进一步阐述,因此很多用户纷纷提出了各种疑问:“为什么我的 Windows XP SP3 就可以卸载 IE 8 Beta 2” 等等。
要想彻底弄清楚这个问题,我们首先需要明确两个概念:
1. IE 做为 Windows 捆绑的浏览器,它分为系统内置的版本与独立安装的版本。例如对 Windows Vista/Server 2008 而言,IE 7 是内置的版本、IE 8 是独立的版本;对 Windows XP/Server 2003 而言,IE 6 是内置的版本、IE 7 与 IE 8 均是独立的版本。
2. 所有内置版本的 IE 都会随着 Windows Service Pack 版本的变化而变化,而独立版本的 IE 则不受 Service Pack 版本的影响。例如,IE 6 for Windows XP 做为内置版本的 IE,它会根据 Windows XP Service Pack 的版本变化细分为 IE 6 SP1、IE 6 SP2、IE 6 SP3 等诸多版本,而做为独立版本的 IE 7/8 for Windows XP,其版本则不会随着 Windows XP Service Pack 的变化而变化。
明确了这两个概念之后,下面我们再来看 MSDN IE Blog 五月份的说明:假如用户先安装了 IE 7/8、后安装了 SP3,那么你将无法卸载 IE 7/8 恢复 IE 6。这是由于 IE 7/8 在安装时会自动备份 IE 6 的文件以备日后恢复。在你安装 SP3 之前,安装程序备份的是 IE 6 SP2 的文件。那么,当你安装 SP3 之后,如果你再试图卸载 IE 7/8,理论上 Windows 会将之前备份的 IE 6 SP2 的文件恢复到系统中。但由于现在 Windows XP 已经变成了 SP3,不可以将 IE 6 SP2 恢复到 Windows XP SP3 系统中,因此 Windows 将自动阻止这一做法,控制面板-添加删除程序中的卸载 IE 7/8 选项将会失效。
(笔者注:在上述卸载选项失效的例子中,虽然我们无法通过控制面板-添加删除程序卸载 IE 7/8,但经过笔者测试,如果手动执行 Windows\ie7(ie8)\SPUNINST\SPUNINST.EXE 还是可以启动卸载程序的。虽然卸载程序会提示可能会对后安装的 SP3 产生影响,但依然可以完成卸载操作。笔者用这种方法在 Windows XP SP3 系统中还原了 IE 6 SP2,而且可以运行,但执行 SFC 时会提示 IE 的有关文件版本有问题。这个特殊现象应该解释为 IE 卸载程序的 BUG。)
反过来说,假如我们是先安装 SP3、后安装 IE 7/8 的,那么 IE 7/8 在安装时自动备份的将是 IE 6 SP3 的文件,日后卸载 IE 7/8 时,将 IE 6 SP3 恢复到 Windows XP SP3 系统中自然不会有何问题。因此,如果我们是先安装 SP3、后安装 IE 7/8 的,控制面板-添加删除程序中的卸载 IE 7/8 选项将不会失效。
在了解了 MSDN IE Blog 五月的声明后,我们再来看一下八月的这份针对 IE 8 Beta 2 的最新声明。假如我们之前按照先 IE 8 Beta 1 后 SP3 的顺序安装,那么 IE 8 Beta 1 卸载选项将失效,原因如前面所述。此时如果我们继续安装 IE 8 Beta 2,IE 8 Beta 2 也将“继承”IE 8 Beta 1 卸载选项失效的特性而无法卸载、同时会导致 SP3 也将无法卸载。
反过来说如果我们是先安装 SP3 后安装 IE 8 Beta 1 的话就不会遇到卸载选项失效的问题。因此,MSDN IE Blog 在八月的声明中建议那些先安装 IE 8 Beta 1 后安装 SP3 的用户,为了避免问题建议首先卸载 SP3、再卸载 IE 8 Beta 1,然后按照先 SP3 后 IE 8 Beta 2 的顺序重新安装。
以上所述都是从 IE 6 直接升级为 IE 8 产生的情况。但笔者之前在四月十日写过一篇博客《IE 8、IE 7 for Windows XP/Server 2003 的连环卸载》一文中曾经提到,由于 IE 7、IE 8 针对 Windows XP/Server 2003 而言都是独立版本的 IE,所以它们可以进行连环卸载,即首先从 IE 6 升级为 IE 7、然后再升级为 IE 8,然后执行二次连环卸载。那么,因为 Service Pack 的版本差异引起 IE 卸载选项失效的情况会不会影响到连环卸载呢?
笔者专门对这个问题进行了一次测试:在 Windows XP SP2 系统中首先安装 IE 7、然后安装 SP3,由前面的叙述可知,以这样的顺序安装 IE 7 的卸载选项将失效。但是,当笔者在 IE 7 的基础上继续安装 IE 8 时,IE 8 并不会“继承”IE 7 卸载选项失效的特性,我们可以随时卸载 IE 8 恢复 IE 7。这是由于 IE 7、IE 8 均是独立安装的 IE 版本,所以从 IE 7 升级 IE 8 时不会受到 Service Pack 影响。
看到这里大家可能会觉得非常混乱,笔者也觉得很混乱、一想这个问题很容易把头想大。为了简单起见,笔者总结一下从 IE 8 Beta 1 升级至 IE 8 Beta 2 的四种可能情况。假如你的系统是 Windows XP SP3 并且已安装了 IE 8 Beta 1、现在打算升级至 IE 8 Beta 2,可以按照这四种情况进行参考:
1.我没有安装过 IE 7、IE 8 Beta 1 是从 IE 6 升级而来、并且 SP3 的安装早于 IE 8 Beta 1:
这种情况不会遇到任何问题,可以直接安装 IE 8 Beta 2。
2.我没有安装过 IE 7、IE 8 Beta 1 是从 IE 6 升级而来、但是 SP3 的安装晚于 IE 8 Beta 1:
这种情况 IE 8 Beta 1 的卸载将失效,如果继续安装 IE 8 Beta 2,IE 8 Beta 2 卸载也将失效,而且会导致 SP3 也无法卸载。按照 MSDN IE Blog 八月份的建议,这种情况应该先卸载 SP3、再卸载 IE 8 Beta 1,然后按照先 SP3 后 IE 8 Beta 2 的顺序重新安装。
3.我安装过 IE 7、并且 SP3 的安装早于 IE 7、IE 8 Beta 1 是从 IE 7 升级而来:
4.我安装过 IE 7、但是 SP3 的安装晚于 IE 7、IE 8 Beta 1 是从 IE 7 升级而来:
这种情况 IE 7 的卸载将失效,但 IE 8 的卸载不受影响。如果继续安装 IE 8 Beta 2,日后可以卸载 IE 8 Beta 2 恢复 IE 7,但不能继续卸载 IE 7 恢复 IE 6。如果想恢复 IE 6,应该首先卸载 IE 8 Beta 1 恢复 IE 7,然后先卸载 SP3、再卸载 IE 7,最后再按照先 SP3 后 IE 7、再 IE 8 Beta 2 的顺序重新安装。
HOHO,写到这里笔者的头已经很大了,上述总结可能有不正确的地方(笔者已经针对几种情况分别进行过测试,如果还有错误的话就是笔者自己绕糊涂了,呵呵)。