关于WinCE6.0补丁包的一点说明
以前整理过一篇《WinCE6.0 R3的安装步骤》,后来本本装了Win7后,按照这个步骤安装R3,又验证了一遍。当然,这个步骤是个人总结出的,未必是最优的方案。
这两天在论坛里又看到有人在问R3的安装步骤,实际上R3的安装就是PB6.0补丁的安装,只是在安装的时候要注意各个补丁的安装顺序。如果搞乱了顺序,最后编译会出问题,我第一次安装R3时就碰到过。后来歇了几个月,被逼无奈才又硬着头皮去尝试。
具体的安装步骤请参考前篇,如果正确的安装下来,至少保证能正常编译。这里针对WinCE6.0的更新做一点补充说明,供大家参考。
每个月的月初,微软会针对不同的平台发布一个补丁,其中包括了上个月的关键更新,以解决一些已知的问题,这就是所谓的“Monthly Update”。曾经,这也是WinCE相对于其他嵌入式操作系统的一个优点。现在风行的Android似乎更新也挺频繁,难道是在学WinCE。到年末时,微软会把全年12个月的补丁打包在一起,发布出来,就是所谓的“Cumulative Product Update Rollup Package”。其中全年的补丁,一般可以放心安装,而每月的补丁则需要谨慎一点。一般情况下,不要追新,因为有时候发布出来的补丁可能会导致一些莫名其妙的问题。本来能正常编译的工程,打上补丁后可能编译时就出错,或者编译完成后某些功能不能用,然后下个月打补丁时,再修复这个补出来的BUG。正是因为有这种可能性的存在,所以在安装月补丁时,一定要按时间的先后顺序来,不能颠倒。安装年补丁也需遵循这个原则。但有时先发布出来的年补丁可以省略,因为后一年的全年补丁包已经包括了它所有的更新。拿PB6.0来说,在安装更新时,07年全年的补丁可以省去,因为08年全年的补丁已经包括了它所含的所有更新。至于能不能省,可以先查看一下他们的说明文件,确认他们之间是否有完全包含的关系。如果怕麻烦,就按照时间先后逐一安装。
R3作为PB6.0的一个超大补丁,在安装时只要遵循时间先后的原则,也还是比较顺利的。很多人安装后不能用,主要问题就是安装顺序上出了错,或者漏装了某些补丁。R3是2009年10月份发布的,所以在安装R3之前,最好先把前九个月的补丁都安装好。安装R3的补丁包之后,还需要安装一个11月份发布的R3 Update Rollup,接着安装10月到12月的月补丁,2010年的补丁酌情安装就可以了。
上面说了这么多,总结起来就一句话,先发布的先安装,不求最新,能用就行。
安装完补丁后,需要重新编译系统,使用“Sysgen”或者“Clean Sysgen”即可,而不必使用“Build and Sysgen”或“Rebuild and Clean Sysgen”。因为更新的补丁包中已经包含了编译好的lib,反而某些lib对应的源代码有可能没有同步更新。如果使用“Rebuild and Clean Sysgen”,那么也就有可能失去更新的意义了。以上是我个人的总结,未必正确,欢迎指正。
另外,PB6.0提供了一个用于检查更新的小工具,CEUpdateCheck,我们也可以利用它来检查补丁的安装情况。在VS2005的菜单中点击“工具”——“Platform Builder for CE 6.0”——“CE Update Check”,即可打开它,如下图所示。
根据自己的实际情况,选择相应的项,然后点击“Verify”按钮,稍等片刻,便可以看到结果,如下图所示。
可以看到,目前安装的PB6.0的开发环境中缺少了2009年12月份的某一个更新和2010年6月份的补丁包。在确定补丁包的安装情况时,需要注意每个更新的状态说明,如上图所示的“Status:NotInstalled”。如果出现其他的状态指示,那就要小心一点了,可能会有问题。
安装某个补丁包之后,如果编译不过,可以将其恢复到安装补丁包之前的状态,方法也很简单。将C:\WINCE600\Updates\Backup下对应的目录拷贝到Public目录下即可。不过,这种方法也只是一种尝试,行不行还得看运气。
最后说明一下,2010年6月份PB6.0的补丁有针对设备掉电时NAND出现异常的文件系统的更新。打上该补丁后,做了4000多次读写文件时关机的暴力测试,NAND竟然完好无损。更新的原文说明如下:
100604_KB2159499 - NAND corruption may occur when power dropps during NAND Flash Driver un-mount.