sycx's Blog

Nothing here.

HOW to: Mac版魔兽世界更新提示“内部错误”的分析以及解决办法

今天台服魔兽更新了4.0.3a,相信很多MAC玩家都会遇到更新问题

發生內部錯誤,Blizzard更新程式無法進行更新。請聯絡Blizzard的技術支援部門。

如下图

很多人问,这该如何解决,很多人这么建议

运行 Repair 程序修复

不过,一般都是修复失败的结果
于是,大部分人的解决办法是
切换到Windows下完成更新,然后到《X-Only》下载最新的App

但是,这个办法总是麻烦,而且上述问题依然存在,每次更新总得这么麻烦一次

====

  1. 分析部分(analyze part):

    那么有没有办法一劳永逸解决这个问题呢?抱着这个想法,我趁着这次更新,研究了一番这个问题


    首先,单单一个“内部错误”的错误提示没有提供任何有价值的信息,需要查查看有没有Log记录精确点的问题所在

很容易在WOW目录下找到一个Logs文件夹,找到了一个关键文件

World of Warcraft/Logs/Blizzard Updater Log.html

于是我马上见到了关键的错误信息
錯誤: 更新檔"mac-game-hdfiles/World of Warcraft.app/Contents/MacOS/World of Warcraft“無法安裝。
(MD5 mismatch: expected 0×7058660C35AE508717519CF21B7A3AF0, actual 0xFB9666B037DCB8782339A1DCB2F3400B.)(PTCApply_BSDiff failed.)

这句话说明,补丁升级需要目标文件的MD5值为 0×7058660C35AE508717519CF21B7A3AF0 ,但是现有文件的MD5却是 0xFB9666B037DCB8782339A1DCB2F3400B
两者不匹配,版本不对,升级无法继续
那么,文件“World of Warcraft” 在哪里呢
首先,我定位到魔兽目录下的World of Warcraft.app文件,试着计算它的MD5值
”http://farm9.staticflickr.com/8017/7132083853_a50b197bb7.jpg">
计算结果是:7058660c35ae508717519cf21b7a3af0

这不是没问题吗?那为什么Updater计算出来的会是 0xFB9666B037DCB8782339A1DCB2F3400B

是程序计算错误吗?不,肯定不是,因为很多人都能正常更新。

那么就是说 Updater检查的不是这个文件,那它检查的是哪里的文件?

MPQ!MPQ里也有这个文件

于是我定位到了4个文件

World of Warcraft/Data/zhTW/base-zhTW.MPQ
World of Warcraft/Data/zhTW/backup-zhTW.MPQ
World of Warcraft/Data/enTW/base-enTW.MPQ
World of Warcraft/Data/enTW/backup-enTW.MPQ

Mac下没有好用的MPQ工具,于是我切换到Windows

用MPQ Editor打开base-zhTW.MPQ,解压World of Warcraft.app

找到 World of Warcraft.app/Contents/MacOS/World of Warcraft ,计算它的MD5值

fb9666b037dcb8782339a1dcb2f3400b !!! 我找到它了

那么,为什么,MPQ里面的文件的MD5值为什么会不一样呢

查看MPQ里的这个app的info.plist文件,我注意到它的版本是 4.0.0.12911 真是古老的版本

那么出错的只有World of Warcraft.app这个文件吗?其它几个文件有没有错?

经过对比,4个MPQ文件里的app版本统统错了

那么解决办法出来了,把这MPQ里的5个app文件替换掉

修复问题之前,想下出现这个问题的原因是什么

我得出了一个结论

Blizzard Updater每次更新只会升级当前系统的相关文件

也就是说,你在Windows下更新,Blizzard Updater只会更新MPQ里Windows版的文件,对Mac版的5个.app文件置之不理,因此下次你用Mac版更新就会因为MPQ里的文件版本过旧而遭遇“内部错误”
只要你在Windows下成功更新一次,以后也只能在Windows下更新

同理,在Mac下成功更新一次,下次用Windows更新的话,相信你也会遇到“内部错误”

====

解决方案(solution part):


Step1: 复制当前正确版本的5个app文件
World of Warcraft/Blizzard Downloader.app
World of Warcraft/Blizzard Updater.app
World of Warcraft/World of Warcraft.app
World of Warcraft/World of Warcraft Launcher.app
World of Warcraft/World of Warcraft Repair.app

以及4个.MPQ文件
World of Warcraft/Data/zhTW/base-zhTW.MPQ
World of Warcraft/Data/zhTW/backup-zhTW.MPQ
World of Warcraft/Data/enTW/base-enTW.MPQ
World of Warcraft/Data/enTW/backup-enTW.MPQ

Step2: 进入Windows系统,下载MPQ Editor, <传送门:下载页>

用MPQ Editor打开base-zhTW.MPQ,将5个.app文件拖入其中

Step 3: 之后保持Locale ID为Neutral,点击Rulesets按钮,选择World of Warcraft游戏

Step 4: 文件覆盖提示,选择Yes All

Step 5: 重要,一定要记得选择 Operations 菜单下的 Change(attributes) 命令

Step 6: 对另外三个.MPQ文件重复Step 2~Step 5的操作

Step 7:最后,回到Mac,将修改后的4个MPQ文件覆盖回原来位置

现在,打开Launcher,你已经可以正常更新了,恭喜!

然后,记住:下次不要用Windows更新了&下次你也没办法在Windows下更新了。

Comments