有一次,笔者的一位朋友电脑出了点问题,请笔者过去看看,当时看到电脑里软件有些老,笔者就用自己一直在用的VLK版WinXP帮朋友重装了一遍系统。随后的日子一直平安无事,可天生喜好汽车的朋友那天忽然买来了一张《极品飞车8》,却无论如何也装不上,这才给笔者打了电话……
友:“喂,是宏伟吗?”
我:“哦,老张吧?有什么事儿吗?”
友:“是这样,昨天我买了一张《极品飞车8》,可就是装不上,装完了一双击总提示缺XXX文件”
我:“缺文件?是不是软件有问题啊?”
友:“应该没事儿吧,我当时也拿不准,就让同事在别的电脑上装了一下,挺正常的,那台机器配置还没我的高呢”
[旁] 笔者平时几乎不玩游戏,所以一遇到游戏问题就有点发懵,只会按一般的思路去想,请各位游戏高手们不要见笑
我:“配置没有家里的高,该不会装的是98吧?那台机器是什么系统啊?”
[旁] 其实此时想想也不太像是系统不支持,这么新的游戏,运行平台肯定支持XP,而且这套XP的组件版本都很高,朋友的机器配置也不低,但此时必须将所有可能出现的问题都比较一下
友:“和家里的一样,也是XP,以前我们单位的电脑也是他帮忙装的”
[旁] 3D游戏都需要DirectX支持,这么新的游戏该配合哪个版本的DirectX呢?会不会比集成的9.0b还要高呢
我:“对了,你看看游戏的安装说明里有没有DirectX的版本要求?”
友:赶忙翻阅……“有,有,是DirectX 9.0c,不过这个也装过了。”
我:心想,看来电话里是搞不定了,没准又是系统故障,还是实地看一下吧,反正当时留了一个Ghost备份,于是就和朋友说“这样吧,老张,明天正好礼拜六,你要是上午没事,我去你那儿看一下,要不电话里也讲不清。”
友:“行,明天我正好没事儿,就在家等你了。”
第二天上午,我如约到了朋友家里。经过一番检查和调试,确认了不是因为系统缺少文件才出现的问题,但却发现了一个奇怪的现象,这就是每次升级安装DX9.0c时,总看不到像其他版本DX升级那样的文件复制过程,反之,安装速度非常快,不到2秒钟就完了,随后就出现如图1的完成对话框。而通过在“开始”菜单→“运行”栏中输入“dxdiag”调出DirectX诊断程序进行检测,也证实了我的猜测 —— 当前的DirectX版本仍为9.0b,9.0c并未安装成功。如图2所示
【小提示】
DirectX是微软的一个3D函数库,它的版本随着不断加入新的3D函数而增加,最新的版本是9.0c。每款3D游戏在编写时,都可以直接调用DirectX里的函数简化编制过程,降低游戏大小,并实现各种漂亮的3D效果而不用再劳心费力地自行编制。这也意味着,如果某游戏开发时使用了DirectX 9.0c里的函数,那么要求玩家安装游戏时也要在自己电脑里装上DirectX 9.0c,否则游戏将无法正常调用相应函数实现预设的3D效果
这样看来,游戏提示缺文件的故障很可能出在DirectX 9.0c上,而回忆上次朋友在电话里描述的安装过程,估计就是看到了图1的提示才说的。可由于自己平时不怎么玩游戏,家里的电脑没有升级到9.0c,自然也就没注意这个问题。那天恰巧朋友的机器是双系统,还有一个Win98。笔者连忙进入98升级安装了DirectX 9.0c,一切都很顺利,装上DX9.0c的Win98玩起《极品飞车8》来自然毫无问题。这样看来,真正的问题不是出在这版WinXP上,就是由于DX设计的问题 —— 9.0b无法正常升级为9.0c。由于朋友家条件不足,无法继续测试,我就将朋友的《极飞8》光盘借回家里慢慢研究。
经过反复试验,确定了在Win98下DX9.0b是完全可以正常升级为9.0c的,也就肯定了是由于这版XP造成了这个故障,难道就为了一个游戏再重新更换一套操作系统吗?当然不用,由于DirectX 9.0c的安装包里有两个程序(dsetup32.dll和dsetup.dll)负责在每次安装前检测系统的DX版本,如果与自己的版本相同或更高就不继续安装,但不知为何它无法正确检测这版WinXP的DX版本,所以才出现了图1的画面。而我也就将计就计地骗了XP一下,将DirectX 9.0c中的这两个文件替换为9.0b的,这样安装程序就能正常检测安装了。原版与修改版的区别如图3和图4所示
改造过的DX 9.0c安装程序终于不负众望,成功在VLK版WindowsXP上安装上了DirectX 9.0c,最后用Dxdiag的检查结果也如图5所示正确地标识为9.0c了。
【写在最后】
笔者也曾试过用第三方软件修改系统中DX的当前版本号以达到安装的目的,但都没有成功,鉴于这个问题涉及的知识非常广泛,而且很可能是SP2集成时出现的问题,因此也就无法再进行深入研究了,希望此文能给同样使用VLK版WindowsXP并同样困惑着的朋友们提供一个方法,同时愿意与大家进一步交流其它的安装方法。
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/