Windows XP SP3 已经发布了一年半,笔者却一直未见 MSDN 发布整合有 SP3 的 Windows XP
Media Center Edition 2005(以下简称 MCE 2005)安装源镜像。Windows XP 的家庭版、专业版
都已经先后发布了 with SP3 的最新镜像。
起初,笔者还以为 MSDN 已经懒得再为 MCE 2005 进行更新,毕竟使用这个系统的人不是很多。
但最近笔者发现,将 SP3 整合至 MCE 2005 安装源存在着严重的版本冲突问题。因此,MSDN
并不是懒得对 MCE 2005 进行更新,而是做不出像样的 MCE 2005 with SP3 镜像来。
笔者接到了一位网友发来的反馈邮件,在那篇文章中介绍过的 Windows XP with SP3 四合一光盘,
其它版本的安装使用都很正常,惟独 MCE 2005 会出现下述问题:
我们知道,将 SP3 整合至 Windows XP 安装源的常规方法是 SP3 安装程序的 -S(-INTEGRATE)
参数。如果我们照此方法将 SP3 整合至 MCE 2005 安装源,虽然整合过程可以顺利完成、不会
出现任何错误,但是当我们使用这个整合过的 MCE 2005 with SP3 镜像安装系统时,在安装程序
运行到“预计剩余时间 30 分钟-22 分钟”这个阶段,也就是安装 Windows 系统组件的这个阶段时,
必然会报错:
“需要 Windows XP CD 2 上的文件 ehiEPG.DLL,请输入文件的所在位置并点击确定”。
可是,即使我们找遍整个 MCE 2005 with SP3 安装源,也找不到这个文件,安装无法继续。
此时,假如我们选择“取消”,跳过 ehiEPG.DLL 文件的复制,安装程序就会将“剩余 30 分钟-
22 分钟”这个阶段步骤全部甩掉,跳过它并进入下面的“安装开始菜单”、“注册组件”等安装步骤。
接下来,安装程序虽然也可以运行完毕、安装出来的也是一个显示为 MCE 2005 的系统,但是
由于整个“剩余 30 分钟-22 分钟”的阶段都被跳过了,所以 MCE 的专有组件将一个也安装不上,
甚至连 IE、OE 等系统组件也残缺不全,我们得到的只是一个什么组件也没有的、“天生残疾”的
MCE 2005 系统。
笔者接到邮件之后做了一下测试,证明属实。当日笔者制作好的、已经放入包装盒中收藏的四合一
光盘果然也存在这一问题。
★ 问题分析
安装程序找不到 ehiEPG.DLL 文件的问题到底是怎么回事呢?其实,SP3 并不是没有为我们准备
ehiEPG.DLL。假如我们用 WinZip 将 335MB 的 SP3 安装程序打开,可以看到它确实提供了 82 个
路径为 i386\root\cmpnents\mediactr\i386 的 MCE 文件,其中就包括 ehiEPG.DLL。可是,当我们
以 -S(-INTEGRATE)参数整合 SP3 时,SP3 却并没有将这 82 个文件添加至 MCE 2005 安装源,
而是只更新了 Windows XP 的基本系统文件。这就是为什么安装程序找不到 ehiEPG.DLL 的原因。
那么,SP3 为什么会偷工减料、没有将这 82 个 MCE 文件添加至 MCE 2005 安装源呢?起初笔者
对这一现象也百思不得其解。网上搜索了一下,许多 Windows 爱好者对此问题发表了各种看法,
有人认为 SP3 误将 MCE 2005 当作了专业版,有人认为应该将 Windows Media Player 11 整合入
MCE 2005 安装源。笔者认为这些观点都没有说到点上,难以令人完全信服。经过一番研究,笔者
在 MCE 2005 相关文件的版本号上发现了问题,版本冲突是这一问题的症结所在。
Windows XP Media Center Edition 先后发布过 2002、2004、2005 三个官方发行版本。MCE 2005
虽然在所有 MCE 中版本最高,但它却是基于 SP2 开发的,2005 年还没有 SP3。直到 2008 年,
SP3 才姗姗来迟。
Windows XP 的系统版本号一直是 5.1.2600.XXXX。无论版本号的后缀怎么变,主版本号一直是
2600。例如 SP3 正式版的版本号就是 5.1.2600.5512。可是,当年 MCE 2005 的开发人员却偏
将 MCE 那些专有组件的文件版本号设成了 5.1.2700.XXXX,这样就造成了一个很可笑的现象:
2008 年发布的 SP3,其版本号反而比 2005 年发布的 MCE 2005 还低!
还会继续提升至 5.1.2715。为了叙述方便,下面暂以 MCE 2005 的原始版本号 5.1.2700 说明。)
因此,当我们将 SP3 整合至 MCE 2005 安装源时,安装程序发现 MCE 2005 原有的那些 MCE
文件已经是版本号更高的 5.1.2700.XXXX 了,试问它怎么可能再把自己提供的那 82 个版本号为
5.1.2600.5512 的文件添加进去、让低版本文件替换高版本文件呢?
有人可能会说,既然 MCE 2005 那些文件当年已经被设为 2700 了,SP3 为什么还把自己提供的
那 82 个 MCE 文件设为 5.1.2600.5512 呢?设置一个不比 2700 低的版本号不就没有问题了么?
这可能就是传说中甲鱼的臀部 -不知哪个人的“规定”了:SP3 安装程序压缩包提供的所有文件,
版本号必须都是 5.1.2600.5512!
由于 SP3 提供的这 82 个 MCE 文件版本号已经被固定为 5.1.2600.5512,所以这 82 个文件也
根本不可能是针对 MCE 2005 的更新。事实上,它们只不过是针对 MCE 2004 的更新文件而已,
MCE 2004 系统的原文件版本号不是 5.1.2700。总而言之一句话:SP3 只提供了 82 个适用于
MCE 2004 系统的更新文件、不包含任何适用于 MCE 2005 系统的更新文件。
★ 问题结论
经过上述分析,我们可以得出下列结论:
当我们以 -S(-INTEGRATE)参数将 SP3 整合至 MCE 2005 安装源时,
1. 由于版本冲突的原因,SP3 不会把它自己提供的那 82 个版本号为 5.1.2600.5512 的 MCE 文件
添加至 MCE 2005 安装源,不会替换版本号 5.1.2700 的 MCE 2005 原文件;
2. 由于 SP3 实际只包含针对 MCE 2004 的更新,所以在整合 MCE 2005 时它会把安装源误当作
MCE 2004,并按照 MCE 2004 的规格修改 MCE 2005 相应的 .INF 安装信息文件;
3. ehiEPG.DLL 实际是一个 MCE 2004 独有的文件、MCE 2005 不再有这个文件。将 SP3 整合至
MCE 2005 安装源之后,由于 ehiEPG.DLL 并没有随那 82 个文件被添加至安装源,而 SP3 又将
MCE 2005 的相关 .INF 文件修改为了 MCE 2004 的版本,所以就会在安装 Windows 时出现需要
ehiEPG.DLL、但又找不到 ehiEPG.DLL 的现象。
因此,笔者针对这个问题的最终结论是:
假如我们使用的是 MCE 2004,可以直接以常规方法整合 SP3 得到 MCE 2004 with SP3 安装源,
不会有任何问题。
假如我们使用的是 MCE 2005,目前至少按照微软官方提供的方法无法得到理想的 MCE 2005 with
SP3 安装源。如果我们需要 MCE 2005 with SP3 系统,最好还是首先安装原版的 MCE 2005 系统
(只包含 SP2),然后再单独安装 SP3。这样安装的系统除了步骤麻烦外,没有任何问题。
★ 变通解决
首先安装原版 MCE 2005 系统(只包含 SP2)、再单独安装 SP3 的方法虽然是最稳妥,但像笔者
这样希望制作 MCE 2005 with SP3 安装源的用户,还是希望将问题一步搞定。既然微软官方的方法
行不通,有没有什么变通的方法可以制作出 MCE 2005 with SP3 安装源呢?经过笔者的摸索,还是
有一些门路可循。
1. 添加 ehiEPG.DLL。
这是最为简单的变通方法,既然直接将 SP3 整合至 MCE 2005 安装源会提示找不到 ehiEPG.DLL,
我们可以自己从 SP3 中解压缩提取 ehiEPG.DLL,然后手动复制到经过整合的安装源。不过,这样
得到的只是一个 MCE 2004 with SP3 安装源,原因之前已经解释过了。我们这么做等于是帮助 SP3
把 MCE 2005 完全修改为 MCE 2004、连缺的文件都帮它补上了。因此,如果我们用这样的安装源
完成系统安装,然后启动 Media Center 组件,可以看到其版本信息将显示为:Media Center 2004
v5.1.2600.5512。
2. 还原 MCE 2005 原版的 MEDCTROC.INF。
如果我们不想让 SP3 把 MCE 2005 安装源修改为 MCE 2004,就需要在整合 SP3 前首先备份原版
MCE 2005 的 MEDCTROC.INF,这个文件直接决定了我们安装的 Media Center 组件将会是 v3.0
(MCE 2005)还是 v2.8(MCE 2004)。
将 SP3 整合至 MCE 2005 安装源后,我们把备份的 MEDCTROC.INF 复制至安装源 i386 文件夹,
替换已有文件,这样 MCE 2004 with SP3 安装源就又升级为 MCE 2005 with SP3 了。此时,我们
也无需再手动添加 ehiEPG.DLL,因为只有 MCE 2004 需要它、MCE 2005 不需要。
不过,以这样的安装源执行系统安装时,安装程序可能又会提示找不到两个文件 Napclientprov.MOF
与 Napclientschema.MOF。我们可以在已安装好的 MCE 2005 系统的 Windows\system32\wbem
文件夹找到它们,将它们手动添加至安装源即可。
以这样的方式处理后,我们可以初步得到一个名符其实的 MCE 2005 with SP3 安装源。经过测试,
在安装好的系统中启动 Media Center 组件,可以看到其版本信息将显示为:Media Center 2005
v5.1.2700.2180。
3. 将 PlusOC 与 Sonic 组件添加至 MCE 2005 with SP3 安装源。
按照上述方法得到的 MCE 2005 with SP3 安装源虽然可以使用,但还是存在一些问题。我们知道,
Windows XP 的 Media Center 相比 Windows 7/Vista Media Center 增加了 PlusOC 与 Sonic 组件。
PlusOC 包括 Windows 舞者、Windows 聚会模式、Royale 视觉样式及特色屏保等组件;而 Sonic
是一个 DVD 烧录组件,这些都是 MCE 2005 系统的特色功能。但是,按照上述方法处理后得到的
MCE 2005 with SP3 安装源,却只包含 Media Center 组件,不会安装原版 MCE 2005 的 PlusOC
与 Sonic 组件,因此我们还需要将这个漏洞填补上。
PlusOC 与 Sonic 组件没有被自动安装的原因出在 SYSOC.INF 文件上。原版 MCE 2005 安装源的
SYSOC.INF 文件包含下列三行语句:
Freestyle=medctroc.dll,MedCtrOCISetupProc,medctroc.inf,HIDE,7
SonicDVDandCDBurning=ehOCGen.dll,OcEntry,sonic.inf,,7
WinPlus=plusoc.dll,OcEntry,plusoc.inf,,7
其中第一行代表 Media Center 组件,第二行、第三行分别代表 Sonic 与 PlusOC。
但是在将 SP3 整合至 MCE 2005 安装源后,第二行、第三行语句就被自动删除了,SYSOC.INF
只剩下了第一行,因此 PlusOC 与 Sonic 组件不会被安装。
解决这个问题并非只需要把第二行、第三行语句添加回 SYSOC.INF 这么简单。如果我们只修改
SYSOC.INF 的话,安装系统时进行到“预计剩余时间 30 分钟-22 分钟”这个阶段,安装程序又会
甩掉所有步骤,安装出的又是一个没有任何组件的“先天残疾”系统。因为只修改一个 SYSOC.INF
是不够的,其它与 PlusOC、Sonic 组件相关的文件也必须进行配合修改。具体如下:
3.1. 在整合 SP3 之前,从原版 MCE 2005 安装源中备份下列文件:
(位于 i386 文件夹)ACELPDEC.AX_、EHOCGEN.DL_、ENCDEC.DL_、MEDCTROC.DL_、
MEDCTROC.IN_、MEDIACTR.CA_、MPG2DATA.AX_、MSVIDCTL.DL_、PLUSOC.DL_、
PLUSOC.IN_、SBE.DL_、SONIC.IN_、VBICODEC.AX_、WSTPAGER.AX_;
(位于 i386\svcpack 文件夹)PLUS.CA_、SONIC.CA_;
3.2. 整合 SP3 后,将备份的上述文件还原;
3.3. 手动修改 i386\SYSOC.INF,
在 Freestyle=medctroc.dll,MedCtrOCISetupProc,medctroc.inf,HIDE,7 语句后面添加两行语句:
SonicDVDandCDBurning=ehOCGen.dll,OcEntry,sonic.inf,,7
WinPlus=plusoc.dll,OcEntry,plusoc.inf,,7
3.4. 手动修改 i386\TXTSETUP.SIF,在 [SourceDisksFiles] 后面添加下列语句:
ehOCGen.dll = 100,,,,,,,32,0,0
sonic.inf = 100,,,,,,,20,0,0
sonic.cab = 3,,,,,,_x,,3,3
plusoc.dll = 100,,,,,,,32,0,0
plusoc.inf = 100,,,,,,,20,0,0
plus.cab = 3,,,,,,_x,,3,3
3.5. 手动修改 i386\DOSNET.INF,在 [Files] 后面添加下列语句:
d1,ehOCGen.dll
d1,sonic.inf
d3,sonic.cab
d1,plusoc.dll
d1,plusoc.inf
d3,plus.cab
3.6. 手动修改 i386\SVCPACK.INF,在 [ProductCatalogsToInstall] 后面添加下列语句:
PLUS.CAT
SONIC.CAT
这样才完成了向 MCE 2005 with SP3 安装源添加 PlusOC 与 Sonic 组件的全部步骤。
笔者用经过上述全部步骤处理的 MCE 2005 with SP3 安装源进行了测试,整个安装过程非常顺利。
装好的 Windows XP 版本显示为 MCE 2005,Media Center 组件、PlusOC 组件、Sonic 组件的运行
也一切正常,Windows XP 的基本组件 IE 6、OE 6、Media Player 9 等也没有受到影响。总体来看,
这个安装源的效果已经基本等同于先安装原版 MCE 2005(只包含 SP2)、再单独安装 SP3 了。
当然,这种变通的处理方法未经过微软官方严格测试,也许在表面一切正常的掩盖下依然存在一些
隐患或弊病,笔者不敢保证 100% 地解决了将 SP3 整合至 MCE 2005 安装源引起的版本冲突问题。
不知道 MSDN 将来还会不会发布正式的 MCE 2005 with SP3 安装源镜像了,估计可能性已经不大;
或者,假如 Windows XP 将来还会发布 SP4 的话,希望能在 SP4 中修正一下 MCE 文件的版本号,
避免版本冲突问题的再次发生。
★ 特别补充 -MCE 2005 组件的升级顺序说明
在本文最后,笔者再总结一下 MCE 2005 组件升级顺序问题。微软在 2007 年发布 Windows Vista
Media Center 之前,一直在对 MCE 2005 进行组件升级,其中比较重要的两次更新就是之前提到的
(以下简称 KB925766)。因此,MCE 2005 with SP3 还不能算作真正意义上的最新版 MCE 2005。
当我们以上述步骤制作的 MCE 2005 with SP3 安装源安装好系统后,还需要继续安装这两个更新,
才能得到最新版本的 MCE 2005。
更新汇总 2 及 KB925766 无法整合在 MCE 2005 with SP3 安装源中,因为这两个更新全部建立在
Windows Media Player 10 的基础之上,MCE 2005 with SP3 安装源内置的是 Media Player 9。由于
我们无法将 Media Player 10 整合至安装源,所以也无法整合这两个更新,只能在安装系统后更新。
更新汇总 2 相当于 MCE 2005 的专用 Service Pack,它不仅将所有 MCE 组件的文件版本号提升至
5.1.2710,同时也是 MCE 2005 继续安装某些系统组件的前提条件。例如当我们试图为 MCE 2005
安装 Windows Media Player 11 时,安装程序就会提示必须首先安装更新汇总 2。从某种意义上说,
安装有更新汇总 2 的 MCE 2005 可以视为“MCE 2005 R2”。
KB925766 是 2006 年 10 月发布的一个针对 MCE 2005 更新汇总 2 的累积性更新,它是目前所有
MCE 2005 更新的最高版本。安装 KB925766 之前必须首先安装更新汇总 2,它可以将 MCE 组件
版本由 5.1.2710 进一步提升至最高的 5.1.2715。按照之前打的比方,KB925766 是一个专门针对
MCE 2005 R2 的更新,原版的 MCE 2005(5.1.2700)不能直接安装它。
言归正传,当我们以 MCE 2005 with SP3 安装源安装好系统后,应按照下述顺序对 MCE 2005 组件
进行升级:
1. 安装 Microsoft .net Framework 1.1 及 1.1 SP1。
Microsoft .net Framework 1.1 及 1.1 SP1 是安装更新汇总 2 的必备前提条件之一。原版 MCE 2005
组件大都基于 .net Framework 1.0 SP3 开发,而可以视作 MCE 2005 R2 的更新汇总 2 则基于 1.1
及 1.1 SP1。只有安装了 1.1 及 1.1 SP1,才能安装更新汇总 2。
2. 安装 Windows Media Player 10 for Windows XP。
之前已经说过,更新汇总 2 及 KB925766 均建立在 Windows Media Player 10 的基础上,它是安装
更新汇总 2 的另外一个必备前提条件。在 MCE 2005 内置的 Media Player 9 环境中,更新汇总 2
将安装失败。
另外,此时不能将 Media Player 9 直接升级为 Media Player 11,因为之前说过,Media Player 11 的
安装前提条件是必须首先安装更新汇总 2。
3. 安装更新汇总 2。
满足了 .net Framework 1.1 及 1.1 SP1 与 Media Player 10 这两个条件后,即可将 MCE 2005 升级为
更新汇总 2。
4. 安装更新汇总 2 后,如果希望将 Media Player 10 升级至 Media Player 11,可以在此时安装。
5. 安装更新汇总 2 后,最后安装 KB925766。
只有经过这一系列繁杂且不能颠倒顺序的步骤,才能将 MCE 2005 最终升级为安装有更新汇总 2 及
KB925766 的、2006 年 10 月的最新版本。