577w 简体中文版 ROM 定制过程详解

来源:互联网 发布:如何查看淘宝店铺id 编辑:程序博客网 时间:2024/05/20 16:40

前几天参考 IOICN 的 zihao (子豪) 的【原创】手把手教你修改定制WM5的ROM(带图和相关工具) 和 www.xda-developers.com 上的内容,自己也为自己的 dopod 577w 定制了一款简体中文版 wm5 的 ROM,定制的过程是相当的曲折,一开始花了整整一个下午的时间定制出来的系统不能启动,是相当沮丧的。幸好没有轻易放弃,经过不断的尝试努力和完善,最后终于定制出了一个自己感觉相当满意的 ROM。下面是我详细的定制过程:

一、获取 ROM 文件

适合 577w 的 ROM 有很多,除了台版和新加坡版以外,还有许多跟 577w 机型相同的贴牌手机的 ROM 也可以用,比如 vodafone v1240、i-mate SP5、Qtek 8310 等机型。这些 ROM 中,新加坡版本中是包含有简体中文的,所以,就以它为基础来定制自己的版本。因为 vodafone v1240 的 ROM 最小,最后生成定制的 ROM 时,如果是用它作为模版,生成的 ROM 会比直接用新加坡版生成的 ROM 小 4M,这样我们就可以在我们的 577w 上获得更多可用的 ROM 空间了。具体过程后面还会详细说明,这里是这些 ROM 的下载:

台版:Dopod_577W_Romcode_AKU2_Update.exe
新加坡版:TO_DopodAsiaWWE_22901_25392_02011_Hertz_Ship_R.exe
vodafone v1240:vf-uk_v1240_aku2_v254832_ship.exe
i-mate SP5:i-mate_SP5_WWE_2.5.331.2.exe
Qtek 8310:200624819AKU2_8310_2090_253221_020900_Ship.exe

二、工具

TyphoonNbfTool:用于解开 WM5 的 ROM,这个同时也可以方便的替换开机的第一副图片,这个最新的版本是非官方的 0.4.1 版。

imgfstools 工具包:包括 prepare_imgfs.exe、viewimgfs.exe、make_imgfs.exe、BuildImgfs.exe、AddFile.exe 和 DelFile.exe 这几个程序。这个用来展开 ROM 文件,添加删除文件和模块,打包 ROM 文件用的。

rgucomp.exe:用来在 hv 和 rgu 这两种注册表格式之间转化的工具。这个版本最新的已经支持中文了。但生成的 rgu 文件是 ANSI 编码的,在对 rgu 文件编辑时需要自己转化为 Unicode 编码,否则没法正确转化回 hv 格式。

nb2nbf_tornado.exe:这个用来将 nb 文件合成 nbf 文件,其实它也不过可以用于可以用于 Tornado 机型,对于 Typhoon 机型的也好用。

Notepad2.exe:一个增强型记事本,用它编辑注册表、文件分发表文件、快捷方式等文件会比较方便,它会保证你的文件的编码格式不会被非期望的改变。开始就是因为没用它,而用 EditPlus 编辑 initflashfiles.dat,搞的系统启动后没有桌面的。

RUU:这个是 USB 刷机工具,这个在官方的可执行刷机文件用 WinRAR 展开就可以得到了。

这些工具我已经打好包了,可以从这里下载:RomTools.zip

三、展开 ROM 文件

官方的刷机程序都是 exe 的,用 WinRAR 展开后,你会得到 RUU 这个刷机工具和一个 nbf 文件。这个 nbf 文件就是 ROM 文件。接下来就是把它分解。官方的版本都是含有 SPL、IPL、OS、Splash Screen、GSM 这 5 个部分的完整 ROM,如果刷这样的 ROM 过程中断电或者出现什么其它异常的话,手机很可能会报废。但如果只刷 OS 部分或者只是替换 Splash Screen 或 GSM 则比较安全,只要你保证把 CID 改为 SuperCID 就可以了。

要把官方的 nbf 分解为 5 部分,就需要用到 TyphoonNbfTool 了。在 TyphoonNbfTool.exe 中,选择 file—>open NBF,打开你希望分解的 nbf 文件,比如新加坡版是 nk_ship.nbf。打开之后,在上面会显示这个 ROM 的版本信息,这些版本信息在最后我们用 nb2nbf_tornado.exe 生成 nbf 文件时可能会用得到。版本信息下面就是各个模块,因为我们只需要 OS 模块,所以,在 OS 上点右键,然后选择 Dump decrypted,然后导出为 OS.n_d 就可以了。为了后面操作方便,我们将其改名为 os.nb。

四、定制 ROM

定制 ROM 有两种方式,一种是完全展开镜像,然后编辑、添加、删除展开后的镜像内容,之后再合并,这种方式适合大量文件的修改。还有一种方式是不展开镜像,直接在镜像上添加删除文件,这种方式只能一次操作一个文件,适合个别文件的增加、删除或替换。这两种方式开始的步骤和最后的步骤是相同的。

开始生成镜像。使用 prepare_imgfs os.nb -nosplit 命令就可以将 os.nb 文件转化为镜像文件:imgfs_raw_data.bin 和 imgfs_removed_data.bin,对于我们的,因为 os.nb 中没有扩展信息,所以 -nosplit 选项时必须的。这时生成的 imgfs_raw_data.bin 就是镜像文件,而 imgfs_removed_data.bin 是一个空文件,我们不需要管它。

因为我们要做的是大批量文件添加、删除、替换的操作,所以我们将采用第一种方式。用 viewimgfs.exe imgfs_raw_data.bin 就可以将镜像文件展开到 dump 目录中了,同时还会生成一个 dump_MemoryMap.txt 文件,这个不需要管它,进入 dump 目录中,我们将开始定制工作了。

为了看到所有文件,我们首先需要把 Windows 的文件夹选项中查看部分的隐藏受保护的操作系统文件前的对钩去掉,然后选择显示所有文件和文件夹。隐藏已知文件类型的扩展名前的对钩最好也去掉。

改为简体中文版:

用资源管理器的搜索功能,在 dump 目录中搜索 0409,将搜索到的文件和文件夹全部删除即可,这些就是英文的语言包文件。这些文件在新加坡版中应该是这些:

filesys.exe.0409.mui
quartz.dll.0409.mui
unimodem.dll.0409.mui
IECEExt.dll.0409.mui
commctrl.dll.0409.mui
mlang.dll.0409.mui
shlwapi.dll.0409.mui
fatutil.dll.0409.mui
wininet.dll.0409.mui
MdsRes_smartfon.exe.0409.mui
crypt32.dll.0409.mui
wsp.dll.0409.mui
urlmon.dll.0409.mui
waveapi.dll.0409.mui
bbres.dll.0409.mui
gwes.exe.0409.mui
SimLock.exe.0409.mui
HtcColdBoot.exe.0409.MUI
ArcMMS.dll.0409.mui
Camera.exe.0409.mui
IA_File_Manager.exe.0409.mui
SIM_Mgr.exe.0409.MUI
IA_Task_Manager.exe.0409.mui
WiFiHomePlugIn.dll.0409.mui
T9ImeRes.Dll.0409.mui
SendViaBeam.dll.0409.mui
WLANSettings.dll.0409.mui
HTCMediaViewer.dll.0409.mui
Enroll.dll.0409.MUI
ClockControlPanel.dll.0409.mui
CommManager.exe.0409.mui
Busy.0409.wav
Leap.dll.0409.MUI
SysInfo.dll.0409.MUI
Authentication.dll.0409.MUI
WiFiSettings.dll.0409.MUI
ClearStorage.exe.0409.MUI
getMMSCtxMenuInfo.dll.0409.mui
SendViaEmail.dll.0409.mui
SaveAsContactPhoto.dll.0409.mui
StorageLow.exe.0409.MUI
read_mtgreq.0409.htm
compose_note.0409.htm
read_note.0409.htm
read_sms.0409.htm
read_style.0409.css
compose_sms.0409.htm
CannedText_0409.txt
compose_style.0409.css
MMSTemplates0409.inf

另外语言包还涉及到注册表选项,4e208363-30ae-4a36-b8b0-6018bbcc9124.rgu、97b0b26b-c9b9-410b-a314-627632e582b4.rgu、01913b65-87e8-40e1-9fb3-eb7d128379cc.rgu 这三个都可以删除,与其相关的 dsm 文件只知道其保存的是文件列表,但不知道是否可以删除,为了保险起见,这些最好不要删。

修改 120f4363-c5c1-449f-9c14-19d113d7810d.rgu,将
"CannedTextFile"="//My Documents//UAContents//CannedText_0409.txt"
改为
"CannedTextFile"="//My Documents//UAContents//CannedText_0804.txt"

修改 d5ab0034-8aac-4a19-b5c4-a8b01b5bbe87.rgu,将

[HKEY_LOCAL_MACHINE/MUI]
"SysLang"=dword:409
[HKEY_CURRENT_USER/MUI]
"CurLang"=dword:409

改为:

[HKEY_LOCAL_MACHINE/MUI]
"SysLang"=dword:804
[HKEY_CURRENT_USER/MUI]
"CurLang"=dword:804

修改 f7af6a61-da7b-42d5-988c-628140c997a1.rgu,将

[HKEY_CURRENT_USER/MUI]
"CurLang"=dword:409
[HKEY_LOCAL_MACHINE/nls]
"DefaultLCID" = dword:409
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/International]
"LCID"=dword:409
"ACP"=dword:4e4
[HKEY_LOCAL_MACHINE/nls]
"SystemLCID" = dword:409

改为:

[HKEY_CURRENT_USER/MUI]
"CurLang"=dword:804
[HKEY_LOCAL_MACHINE/nls]
"DefaultLCID" = dword:804
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/International]
"LCID"=dword:804
"ACP"=dword:3a8
[HKEY_LOCAL_MACHINE/nls]
"SystemLCID" = dword:804

修改 initflashfiles.dat,删除:

Directory("/My Documents/UAContents"):-File("CannedText_0409.txt","/Windows/CannedText_0409.txt")
Directory("/My Documents/UAContents/Templates"):-File("MMSTemplates0409.inf","/Windows/MMSTemplates0409.inf")

initflashfiles.dat 修改时一定要注意,不要改变它的编码格式,最后一定要留空行。不然 ROM 启动不起来,必死无疑。我经历过好几次这样惨痛的教训了,不过还好可以冲刷。

修改 mxipupdate_OEMOPERATOR_101.provxml

<characteristic type="Locale">
    
<parm name="Language" value="1033"/>
    
<parm name="Locale" value="1033"/>
 
</characteristic>

改为

<characteristic type="Locale">
    
<parm name="Language" value="2052"/>
    
<parm name="Locale" value="2052"/>
 
</characteristic>

<parm name="52099" datatype="string" value="True"/>
        
<parm name="46697" datatype="string" value="Taiwan Mobile"/>

改为:

<parm name="52099" datatype="string" value="True"/>
        
<parm name="46697" datatype="string" value="&#21488;&#28286;&#31227;&#21160;"/>
        
<parm name="46000" datatype="string" value="&#20013;&#22269;&#31227;&#21160;"/>
        
<parm name="46001" datatype="string" value="&#20013;&#22269;&#32852;&#36890;"/>
        
<parm name="46002" datatype="string" value="&#20013;&#22269;&#31227;&#21160;"/>

<characteristic type="clock">
      
<parm name="TimeZone" value="215"/>
  
</characteristic>

改为

<characteristic type="clock">
      
<parm name="TimeZone" value="210"/>
  
</characteristic>

<parm name="OEMLanguage" datatype="string" value="English" />

改为

<parm name="OEMLanguage" datatype="string" value="Chinese" />

修改 eb15e8ea-5ca7-4517-9fbe-ae0ab8eecca1.rgu 的
[HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main/0804]
"Search Page"="http://cns.3721.com/cns.dll?coagent=msn_ad&keyword=%s"


[HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main/0804]
"Search Page"="http://www.google.com/search?q=%s"

因为这些文件都是只读系统隐藏存档文件,用 Notepad2.exe 编辑这些文件时,默认是只读模式,可以通过文件菜单中的只读模式切换功能,来切换到非只读模式,保存之后,再改为只读模式。这一点比用其它编辑器就方便多了。

要想彻底改为中文版,还需要删除 default.hv 和 user.hv 中带 409 的项,或者改为 804,把 4e4 改为 3a8,把 1033 改为 2052,这些修改都要视情况而定,通过搜索就可以很容易完成(虽然工作量大点),关于 default.hv 和 user.hv 的修改比较特殊,不能够直接修改,所将放在后面集中介绍。

另外,mxip_cold_OEMDRIVERS_100.provxml、mxip_MASD_101.provxml、mxip_MASD_102.provxml、mxip_MASD_104.provxml、mxip_smartfonlang_1000.provxml 等文件中非 0804 语系的翻译可以删除,还有就是几个主题中的其他语言的翻译可以删除。

删除 Pocket MSN:

Pocket MSN 本来是个不错的功能,不过很可惜,这个东西我从来没有登录上去过,所以干脆删掉,等以后微软出了 live mobile messenger 正式版再自己安装。

Pocket MSN 大约涉及到这些文件:

pmsnserver.exe
pmsnshared.dll
pmsnlauncher.exe
pmsncpl.exe
pmsnresources.131.dll
pmsnhotmail.dll
pmsnresources.dll
pmsnresources.dll.0804.mui
pmsn.lnk
pocketmsn.home.xml
pocketmsn.htm
instmsgr.exe
instmsgrresources.131.dll
instmsgrresources.dll
instmsgrresources.dll.0804.mui
msnmobileplus.dll
mxipupdate_pocketmsn_1.provxml
msnmobile.lnk

删掉就可以了。

44f29fed-7b90-4f5d-8a9b-2af1b70c7edf.rgu 是 MSN 的注册表项,可以删掉。d5ab0034-8aac-4a19-b5c4-a8b01b5bbe87.rgu 中的这两行

[HKEY_LOCAL_MACHINE/SYSTEM/Inbox/Pocket MSN]
"Link"="Pocket MSN.lnk"
[HKEY_LOCAL_MACHINE/SYSTEM/Inbox/Pocket MSN]
"Domains"="hotmail.com;passport.com"

删除。

将 f7af6a61-da7b-42d5-988c-628140c997a1.rgu 中
[HKEY_LOCAL_MACHINE/Software/Microsoft/Pocket MSN/Transports/TCP]
"MessengerTimeout"=dword:654

删除。

default.hv 和 user.hv 中的所有涉及到 Pocket MSN 的注册表项,都删除掉。

删除 T9 输入法:

因为现在有了更好用的 A4 输入法,完全没有必要用 T9 输入法了,所以把它干掉,留出空间放 A4 输入法和别的软件。

T9 输入法大约涉及到这些文件:

T9CCSimpLdb.dll
T9AWEngine.dll
T9Ime.dll
T9CCEngine.dll
T9CPinyin.dll
T9CCEngine.lib
T9ThaiLdb.dll
T9AW.dll
T9AWEngine.lib
T9CStroke.dll
T9CUdbEditor.exe
T9EnglChinLdb.dll
T9MyWord.exe
T9ImePrefs.dll
T9Settings.exe
T9ImeRes.dll
T9ImeRes.Dll.0804.mui
T9CUDB.0C04.dat
T9CUDB.0804.dat
T9CUDB.0404.dat

删掉就可以了。

修改 120f4363-c5c1-449f-9c14-19d113d7810d.rgu,将

[HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Layouts/e0010409]
"Layout Text"="T9 IME"
"Ime File"="T9Ime.dll"
[HKEY_CURRENT_USER/Keyboard Layout/Preload/1]
"Default"="e0010409"
[HKEY_LOCAL_MACHINE/T9 Input Method]
"Current LDB"="0409"
"Default Alpha LDB"="0409"
"Default Chinese LDB"="0804"
"Current IME"="0400"
[HKEY_LOCAL_MACHINE/T9 Input Method/Settings]
"Options"=dword:00003317
[HKEY_LOCAL_MACHINE/T9 Input Method/IME]
"0400"="t9aw.dll"
"0600"="t9cpinyin.dll"
"0500"="t9cstroke.dll"
[HKEY_LOCAL_MACHINE/T9 Input Method/Accelerator]
"Chinese"=dword:0
[HKEY_LOCAL_MACHINE/T9 Input Method/IME Order]
"0804"="0500,0600"
[HKEY_LOCAL_MACHINE/T9 Input Method/LDBs]
"0804"="T9CCSimpLdb.dll"
"0409"="T9EnglChinLdb.dll"

删除。

修改 default.hv 和 user.hv,将其中 T9 输入法相关的注册表项删除(同上面差不多),但 user.hv 中的

[HKEY_CURRENT_USER/Keyboard Layout/Preload/1]
"Default"="e0010409"

这个要保留。

删除 initflashfiles.dat 中的

; ===== T9 setting =====
; ===== End - T9 setting =====

集成 A4 输入法

修改 mxipupdate_OEMOPERATOR_101.provxml,在其中添加:

<!-- Input Method -->
 
<characteristic type="Registry">
    
<characteristic type="HKLM/System/CurrentControlSet/Control/Layouts/e0010409">
      
<parm name="PHONE IME" value="ZTA4 Ime" datatype="string" />
      
<parm name="Ime File" value="/Windows/ZTA4.dll" datatype="string" />
    
</characteristic>
 
</characteristic>

然后将 ZTA4.dll 和 ZTA4.ver 复制到 dump 文件夹下即可。

如果还需要帮助和皮肤的话,还需要把帮助和皮肤也复制到 dump 文件夹中,另外需要修改 initflashfiles.dat,增加

; ====== ZTA4 2006.8.181 =====
Directory("/Windows"):-Directory("Skin")
Directory("/Windows"):-Directory("Help")
Directory("/Windows/Skin"):-File("ZTA4_Skin.ini","/Windows/ZTA4_Skin.ini")
Directory("/Windows/Help"):-File("ZTA4.htm","/Windows/ZTA4.htm")
Directory("/Windows/Help"):-File("ZTA4BackGround.gif","/Windows/ZTA4BackGround.gif")
Directory("/Windows/Help"):-File("ZTA4Logo.gif","/Windows/ZTA4Logo.gif")
; ===== End - ZTA4 2006.8.181 =====

集成国笔输入法

修改 mxipupdate_OEMOPERATOR_101.provxml,在其中添加:

<!-- Input Method -->
 
<characteristic type="Registry">
    
<characteristic type="HKLM/System/CurrentControlSet/Control/Layouts/e0010409">
      
<parm name="PHONE IME" value="GBIme" datatype="string" />
      
<parm name="Ime File" value="/Windows/GbIme.dll" datatype="string" />
    
</characteristic>
 
</characteristic>

然后将国笔输入法的文件复制到 dump 目录中即可。

集成 .NET Compact Framework 2.0 SP1

将原来的 mscoree.dll、cgacutil.exe 两个模块(目录)删除,将 .NET Compact Framework 2.0 SP1 的文件复制到 dump 目录下。

修改 default.hv,将

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETCompactFramework]
"1.0.4292.0"=dword:1

附近的部分改为:

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETCompactFramework]
  "1.0.4292.0"=dword:1

  "2.0.6129.00"=dword:0


[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETCompactFramework/Installer]
  "GACPath"="//Windows"


[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETCompactFramework/Installer/Assemblies/ROM]
  "Microsoft.WindowsMobile.Configuration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"=multi_sz:"//windows//GAC_Microsoft.WindowsMobile.Configuration_v1_0_0_0_cneutral_1.dll", "Microsoft.WindowsMobile.Configuration.dll"

  "Microsoft.WindowsMobile.Status, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"=multi_sz:"//windows//GAC_Microsoft.WindowsMobile.Status_v1_0_0_0_cneutral_1.dll", "Microsoft.WindowsMobile.Status.dll"

  "Microsoft.WindowsMobile.Utilities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"=multi_sz:"//windows//GAC_Microsoft.WindowsMobile.Utilities_v1_0_0_0_cneutral_1.dll", "Microsoft.WindowsMobile.Utilities.dll"

  "Microsoft.WindowsMobile, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"=multi_sz:"//windows//GAC_Microsoft.WindowsMobile_v1_0_0_0_cneutral_1.dll", "Microsoft.WindowsMobile.dll"

  "Microsoft.WindowsMobile.Forms, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"=multi_sz:"//windows//GAC_Microsoft.WindowsMobile.Forms_v1_0_0_0_cneutral_1.dll", "Microsoft.WindowsMobile.Forms.dll"

  "Microsoft.WindowsMobile.PocketOutlook, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"=multi_sz:"//windows//GAC_Microsoft.WindowsMobile.PocketOutlook_v1_0_0_0_cneutral_1.dll", "Microsoft.WindowsMobile.PocketOutlook.dll"

  "System.Xml, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System.Xml_v1_0_5000_0_cneutral_1.dll", "System.Xml.dll"

  "System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System.Windows.Forms_v1_0_5000_0_cneutral_1.dll", "System.Windows.Forms.dll"

  "System.Web.Services, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System.Web.Services_v1_0_5000_0_cneutral_1.dll", "System.Web.Services.dll"

  "System.Net.IrDA, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System.Net.IrDA_v1_0_5000_0_cneutral_1.dll", "System.Net.IrDA.dll"

  "System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System.Drawing_v1_0_5000_0_cneutral_1.dll", "System.Drawing.dll"

  "System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System_v1_0_5000_0_cneutral_1.dll", "System.dll"

  "System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System.Data_v1_0_5000_0_cneutral_1.dll", "System.Data.dll"

  "mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_mscorlib_v1_0_5000_0_cneutral_1.dll", "mscorlib.dll"

  "Microsoft.WindowsCE.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_Microsoft.WindowsCE.Forms_v1_0_5000_0_cneutral_1.dll", "Microsoft.WindowsCE.Forms.dll"

  "Microsoft.VisualBasic, Version=7.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_Microsoft.VisualBasic_v7_0_5000_0_cneutral_1.dll", "Microsoft.VisualBasic.dll"


[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETCompactFramework/Installer/Assemblies/Global]
  "System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_System.Xml_v2_0_0_0_cneutral_1.dll"

  "System.Windows.Forms.DataGrid, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_System.Windows.Forms.DataGrid_v2_0_0_0_cneutral_1.dll"

  "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_System.Windows.Forms_v2_0_0_0_cneutral_1.dll"

  "System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_System.Web.Services_v2_0_0_0_cneutral_1.dll"

  "System.Net.IrDA, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_System.Net.IrDA_v2_0_0_0_cneutral_1.dll"

  "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_System.Messaging_v2_0_0_0_cneutral_1.dll"

  "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_System.Drawing_v2_0_0_0_cneutral_1.dll"

  "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_System.Data_v2_0_0_0_cneutral_1.dll"

  "Microsoft.WindowsMobile.DirectX, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_Microsoft.WindowsMobile.DirectX_v2_0_0_0_cneutral_1.dll"

  "Microsoft.WindowsCE.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_Microsoft.WindowsCE.Forms_v2_0_0_0_cneutral_1.dll"

  "Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_Microsoft.VisualBasic_v8_0_0_0_cneutral_1.dll"

  "CustomMarshalers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_CustomMarshalers_v2_0_0_0_cneutral_1.dll"

  "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_System_v2_0_0_0_cneutral_1.dll"

  "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//Windows//GAC_mscorlib_v2_0_0_0_cneutral_1.dll"

  "Microsoft.WindowsMobile.Configuration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"=multi_sz:"//windows//GAC_Microsoft.WindowsMobile.Configuration_v1_0_0_0_cneutral_1.dll", "Microsoft.WindowsMobile.Configuration.dll"

  "Microsoft.WindowsMobile.Status, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"=multi_sz:"//windows//GAC_Microsoft.WindowsMobile.Status_v1_0_0_0_cneutral_1.dll", "Microsoft.WindowsMobile.Status.dll"

  "Microsoft.WindowsMobile.Utilities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"=multi_sz:"//windows//GAC_Microsoft.WindowsMobile.Utilities_v1_0_0_0_cneutral_1.dll", "Microsoft.WindowsMobile.Utilities.dll"

  "Microsoft.WindowsMobile, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"=multi_sz:"//windows//GAC_Microsoft.WindowsMobile_v1_0_0_0_cneutral_1.dll", "Microsoft.WindowsMobile.dll"

  "Microsoft.WindowsMobile.Forms, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"=multi_sz:"//windows//GAC_Microsoft.WindowsMobile.Forms_v1_0_0_0_cneutral_1.dll", "Microsoft.WindowsMobile.Forms.dll"

  "Microsoft.WindowsMobile.PocketOutlook, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"=multi_sz:"//windows//GAC_Microsoft.WindowsMobile.PocketOutlook_v1_0_0_0_cneutral_1.dll", "Microsoft.WindowsMobile.PocketOutlook.dll"

  "System.Xml, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System.Xml_v1_0_5000_0_cneutral_1.dll", "System.Xml.dll"

  "System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System.Windows.Forms_v1_0_5000_0_cneutral_1.dll", "System.Windows.Forms.dll"

  "System.Web.Services, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System.Web.Services_v1_0_5000_0_cneutral_1.dll", "System.Web.Services.dll"

  "System.Net.IrDA, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System.Net.IrDA_v1_0_5000_0_cneutral_1.dll", "System.Net.IrDA.dll"

  "System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System.Drawing_v1_0_5000_0_cneutral_1.dll", "System.Drawing.dll"

  "System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System_v1_0_5000_0_cneutral_1.dll", "System.dll"

  "System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_System.Data_v1_0_5000_0_cneutral_1.dll", "System.Data.dll"

  "mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_mscorlib_v1_0_5000_0_cneutral_1.dll", "mscorlib.dll"

  "Microsoft.WindowsCE.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_Microsoft.WindowsCE.Forms_v1_0_5000_0_cneutral_1.dll", "Microsoft.WindowsCE.Forms.dll"

  "Microsoft.VisualBasic, Version=7.0.5000.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC"=multi_sz:"//windows//GAC_Microsoft.VisualBasic_v7_0_5000_0_cneutral_1.dll", "Microsoft.VisualBasic.dll"


[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETCompactFramework/Installer/Assemblies/3rdParty/Microsoft .NET CF 2.0.GAC]
  "TimeStamp"=hex:00,EC,3C,18,CB,80,C6,01

即可。

解锁系统:

修改 default.hv,将
[HKEY_LOCAL_MACHINE/Security/Policies/Policies]
一段中

"00001017"=dword:80
"00001005"=dword:10
"00001001"=dword:2

改为:

"00001017"=dword:90
"00001005"=dword:28
"00001001"=dword:1

并增加

"0000101b"=dword:1
"0000101a"=dword:1

两项。

将 IA_Task_Manager 替换为 CeleTask 2.1

修改 1a221d4a-7d20-49ae-a317-2e9477d00dae.rgu,删除
[HKEY_CLASSES_ROOT/TaskManagerApp]
[HKEY_CLASSES_ROOT/TaskManagerApp/DefaultIcon]
@="//windows//IA_Task_Manager.exe,-30020"
[HKEY_CLASSES_ROOT/TaskManagerApp/SelectIcon]
@="//windows//IA_Task_Manager.exe,-30021"
[HKEY_LOCAL_MACHINE/SOFTWARE/OEM/3rdversion/Task Manager]
"Task Manager"="v1.22"
"BuildNumber"="22367"
"Customer"="Generic"

删除 IA_Task_Manager.*,复制 CeleTask.exe 和 CeleTask.htm 到 dump 目录。用记事本修改 Task_Manager.lnk 内容为:19#/Windows/CeleTask.exe,将 Task_Manager.lnk 复制为 Long_Home.lnk。这样长按 Home 键就可以呼出 CeleTask 了。

删除 default.hv 中的相关项。

删除 Windows 自带的文件浏览器(非 IA File Manager)

删除 fexplore.exe 模块(目录)和 fexplore.lnk,修改 7790d42f-9141-429d-aa0f-78fd9c7424f6.rgu,删除
[HKEY_LOCAL_MACHINE/Software/Microsoft/Shell/Rai/:MSFEXPLORE]
"0"="FExplore" ; class name
"1"="fexplore.exe" ; exe to launch
"2"=dword:1 ; perf hint (RAI_PERF_*)
"3"=dword:0 ; app type (?)
"4"=hex:00,00,00,00,00,00,00,00 ; new session (do not edit) This is a FILETIME

同样删除 default.hv 中的内容。

删除 initflashfiles.dat 中的:
Directory("/Windows/Start Menu"):-File("File_Explorer.lnk","/Windows/fexplore.lnk")

删除其它多余的文件

修改 initflashfiles.dat,注释掉:
Directory("/Windows/StartUp"):-File("bugtrap.lnk","/Windows/bugtrap.lnk");
删除:

Directory("/My Documents/My Pictures"):-File("Waterfall.jpg","/Windows/Waterfall.jpg")
Directory("/My Documents/My Pictures"):-File("Flower.jpg","/Windows/Flower.jpg")


Directory("/My Documents/My Pictures"):-File("Angel.bmp","/Windows/Angel.bmp")
Directory("/My Documents/My Pictures"):-File("Boy.gif","/Windows/Boy.gif")
Directory("/My Documents/My Videos"):-File("Open-count.3gp","/Windows/Open-count.3gp")
;Directory("/My Documents/My Pictures"):-File("Open-count.3gp","/Windows/Open-count.3gp")
Directory("/My Documents/My Pictures"):-File("Pond.jpg","/Windows/Pond.jpg")
Directory("/My Documents/My Pictures"):-File("Utah.png","/Windows/Utah.png")
Directory("/My Documents/My Pictures"):-File("woman.wbmp","/Windows/woman.wbmp")


Directory("/My Documents/My Music"):-File("Alouette_14kb.mid","/Windows/Alouette_14kb.mid")
Directory("/My Documents/My Music"):-File("ding.amr","/Windows/ding.amr")
Directory("/My Documents/My Music"):-File("Dogbark.wav","/Windows/Dogbark.wav")


Directory("/My Documents/UAContents/Templates"):-File("0.dat","/Windows/0.dat")
Directory("/My Documents/UAContents/Templates"):-File("0.jpg","/Windows/0.jpg")
Directory("/My Documents/UAContents/Templates"):-File("1.dat","/Windows/1.dat")
Directory("/My Documents/UAContents/Templates"):-File("1.jpg","/Windows/1.jpg")
Directory("/My Documents/UAContents/Templates"):-File("2.dat","/Windows/2.dat")
Directory("/My Documents/UAContents/Templates"):-File("2.jpg","/Windows/2.jpg")

删除 mxip_MASD_101.provxml 中,Cat-Bubble.gif、Clothes-Line.gif、Meadow.gif、Totem2.gif 四个文件的复制过程。

删除 Waterfall.jpg、Flower.jpg、Angel.bmp、Boy.gif、Open-count.3gp、Pond.jpg、Utah.png、woman.wbmp、Alouette_14kb.mid、ding.amr、Dogbark.wav、0.dat、0.jpg、1.dat、1.jpg、2.dat、2.jpg、Cat-Bubble.gif、Clothes-Line.gif、Meadow.gif、Totem2.gif。

至此,一个精简实用的 ROM 就定制好了,实际上现在你还可以将更多的软件集成进来,或者集成 Yahei 字体进来,但是这两者不可兼得,因为 Yahei 字体实在太大了。

集成微软雅黑字体

微软雅黑字体集成到 Windows Mobile 5 里还是很好看的,尤其是打开 ClearType 效果以后,在 QVGA 上效果非常好。下面是过程:

首先复制 msyh.ttf 到 dump 中,原版和精简版都可以,IOICN 的精简版对于字体过小的问题解决的比较好,而且还剩空间。

修改 eb15e8ea-5ca7-4517-9fbe-ae0ab8eecca1.rgu,将
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/FontLink/SystemLink]
"Nina"="//Windows//sunfon.ac3,SC_Song"
"Courier New"="//Windows//sunfon.ac3,SC_Song"
"SC_Song"="//Windows//nina.ttf,Nina"
"宋体"="//windows//nina.ttf,Nina"

改为:
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/FontLink/SystemLink]
"Nina"="//Windows//msyh.ttf,Microsoft YaHei"
"Courier New"="//Windows//msyh.ttf,Microsoft YaHei"
"SC_Song"="//Windows//nina.ttf,Nina"
"宋体"="//windows//nina.ttf,Nina"
[HKEY_LOCAL_MACHINE/System/GDI/ClearType]
"Quality"=dword:1

同时修改,default.hv 中相同的内容。

集成蓝牙立体声

将 Avrcp_MPplugin.dll、bta2dp.dll、sbc.dll 三个文件复制到 dump 中。

在 mxip_cold_OEMDRIVERS_100.provxml 中添加:

<!-- ==================Settings -> Bluetooth Wireless Stereo =================== -->
 
    
<characteristic type="CertificateStore">
        
<characteristic type="Privileged Execution Trust Authorities">
            
<characteristic type="306092c453dac90696f50e7835cb0cbefe125970">
                
<parm name="EncodedCertificate" value="MIICDTCCAXagAwIBAgIQKdIn3bYndatDlG4jUUvV8zANBgkqhkiG9w0BAQQFADAbMRkwFwYDVQQDHhAAVABvAHIAXwBBADIARABQMCAXDTk5MTIzMTE1MDAwMFoYDzIwOTgxMjMxMTUwMDAwWjAbMRkwFwYDVQQDHhAAVABvAHIAXwBBADIARABQMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu1OU9aOAH1ovBUll/ZI7IPMh1ihoTTZLh/Dwrom1Pd5d8tFAr7N+7tHXs5pMsa8c847S9T7SerdSeJdSIns/IQk+d+UQkUg7411TOu+awih6mOjQWyAOXWzO4xEajlU6W/iy76ROCHQnApIOwi8eH6RyqheuCfFG7jWOrU7cBUwIDAQABo1AwTjBMBgNVHQEERTBDgBAdDElCSqowVccAxSTEpZunoR0wGzEZMBcGA1UEAx4QAFQAbwByAF8AQQAyAEQAUIIQKdIn3bYndatDlG4jUUvV8zANBgkqhkiG9w0BAQQFAAOBgQBXpqlqKpGamlkT5BnId/YaHTBkXkj1GxQVqMYRzXjl1TezIj+Krc79V800/UMk8MjXu3l6qh1/TyQoqUeYnsYzXeNzOkvdlNMcio8ALuj5jmTiEElB2ourle/4vqBiXwqGZj2pBCnhwERh6ZhE5TQUWAJrCGA8TfTvOBe7+BJj1w==" />
            
</characteristic>
        
</characteristic>
    
</characteristic>
 
    
<characteristic type="CertificateStore">
        
<characteristic type="SPC">
            
<characteristic type="306092c453dac90696f50e7835cb0cbefe125970">
                
<parm name="EncodedCertificate" value="MIICDTCCAXagAwIBAgIQKdIn3bYndatDlG4jUUvV8zANBgkqhkiG9w0BAQQFADAbMRkwFwYDVQQDHhAAVABvAHIAXwBBADIARABQMCAXDTk5MTIzMTE1MDAwMFoYDzIwOTgxMjMxMTUwMDAwWjAbMRkwFwYDVQQDHhAAVABvAHIAXwBBADIARABQMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu1OU9aOAH1ovBUll/ZI7IPMh1ihoTTZLh/Dwrom1Pd5d8tFAr7N+7tHXs5pMsa8c847S9T7SerdSeJdSIns/IQk+d+UQkUg7411TOu+awih6mOjQWyAOXWzO4xEajlU6W/iy76ROCHQnApIOwi8eH6RyqheuCfFG7jWOrU7cBUwIDAQABo1AwTjBMBgNVHQEERTBDgBAdDElCSqowVccAxSTEpZunoR0wGzEZMBcGA1UEAx4QAFQAbwByAF8AQQAyAEQAUIIQKdIn3bYndatDlG4jUUvV8zANBgkqhkiG9w0BAQQFAAOBgQBXpqlqKpGamlkT5BnId/YaHTBkXkj1GxQVqMYRzXjl1TezIj+Krc79V800/UMk8MjXu3l6qh1/TyQoqUeYnsYzXeNzOkvdlNMcio8ALuj5jmTiEElB2ourle/4vqBiXwqGZj2pBCnhwERh6ZhE5TQUWAJrCGA8TfTvOBe7+BJj1w==" />
                
<parm name="Role" value="222" />
            
</characteristic>
        
</characteristic>
    
</characteristic>
 
    
<characteristic type="Registry">
        
<characteristic type="HKCR/CLSID/{7AAC2B28-5DD1-4052-81DD-E17114EE96B6}">
            
<parm name="" value="WMP Mobile A2DP Plugin" datatype="string" />
        
</characteristic>
        
<characteristic type="HKCR/CLSID/{7AAC2B28-5DD1-4052-81DD-E17114EE96B6}/InProcServer32">
            
<parm name="ThreadingModel" value="Free" datatype="string" />
            
<parm name="" value="Avrcp_MPplugin.dll" datatype="string" />
        
</characteristic>
        
<characteristic type="HKLM/SOFTWARE/Microsoft/MediaPlayer/UIPlugins/{7AAC2B28-5DD1-4052-81DD-E17114EE96B6}">
            
<parm name="FriendlyName" value="Windows Media Player Mobile A2DP Plugin" datatype="string" />
            
<parm name="Description" value="Integrates Bluetooth A2DP functionality with Windows Media Player Mobile" datatype="string" />
            
<parm name="Capabilities" value="33554433" datatype="integer" />
        
</characteristic>
        
<characteristic type="HKLM/SOFTWARE/Microsoft/Bluetooth/Services/0000110B-0000-1000-8000-00805F9B34FB">
            
<parm name="" value="Wireless Stereo" datatype="string" />
            
<parm name="bthutil.dll" value="0" datatype="integer" />
        
</characteristic>
        
<characteristic type="HKLM/Drivers/BuiltIn/BtA2dpSnd">
            
<parm name="Flags" value="65538" datatype="integer" />
            
<parm name="Index" value="8" datatype="integer" />
            
<parm name="Order" value="8" datatype="integer" />
            
<parm name="Prefix" value="WAV" datatype="string" />
            
<parm name="Dll" value="bta2dp.dll" datatype="string" />
        
</characteristic>
    
</characteristic>

即可。

移除 JMM(Java MIDlet Manager)

删除 120f4363-c5c1-449f-9c14-19d113d7810d.rgu 和 default.hv 中的这部分内容:
[HKEY_CLASSES_ROOT/.jad]
@="jmm.jadfile"
"Content Type"="text/vnd.sun.j2me.app-descriptor"
[HKEY_CLASSES_ROOT/.jar]
@="jmm.jarfile"
"Content Type"="application/octet-stream"
[HKEY_CLASSES_ROOT/CLSID/{c4cd135d-8e79-4b89-a58a-0d2e8f3604ba}]
@="JADFile Class"
[HKEY_CLASSES_ROOT/CLSID/{c4cd135d-8e79-4b89-a58a-0d2e8f3604ba}/Control]
@=""
[HKEY_CLASSES_ROOT/CLSID/{c4cd135d-8e79-4b89-a58a-0d2e8f3604ba}/InprocServer32]
@="//Windows//jmmfilter.dll"
"ThreadingModel"="Both"
[HKEY_CLASSES_ROOT/CLSID/{c4cd135d-8e79-4b89-a58a-0d2e8f3604ba}/ProgID]
@="jmm.jadfile.1"
[HKEY_CLASSES_ROOT/CLSID/{c4cd135d-8e79-4b89-a58a-0d2e8f3604ba}/Programmable]
[HKEY_CLASSES_ROOT/CLSID/{c4cd135d-8e79-4b89-a58a-0d2e8f3604ba}/TypeLib]
@="{4f94a7e5-c36a-46b8-8829-4f82ee718290}"
[HKEY_CLASSES_ROOT/CLSID/{c4cd135d-8e79-4b89-a58a-0d2e8f3604ba}/Version]
@="1.0"
[HKEY_CLASSES_ROOT/CLSID/{c4cd135d-8e79-4b89-a58a-0d2e8f3604ba}/VersionIndependentProgID]
@="jmm.jadfile"
[HKEY_CLASSES_ROOT/jmm.jadfile]
@="JADFile Class"
"EditFlags"=dword:10010000
[HKEY_CLASSES_ROOT/jmm.jadfile/CLSID]
@="{c4cd135d-8e79-4b89-a58a-0d2e8f3604ba}"
[HKEY_CLASSES_ROOT/jmm.jadfile/CurVer]
@="jmm.jadfile.1"
[HKEY_CLASSES_ROOT/jmm.jarfile]
@="JARFile Class"
"EditFlags"=dword:10010000
[HKEY_CLASSES_ROOT/jmm.jarfile/DefaultIcon]
@="//Windows//Jmm.exe,-4"
[HKEY_CLASSES_ROOT/jmm.jarfile/Shell]
[HKEY_CLASSES_ROOT/jmm.jarfile/Shell/Open]
[HKEY_CLASSES_ROOT/jmm.jarfile/Shell/Open/Command]
@="/"//Windows//Jmm.exe/" /"%1/""
[HKEY_CLASSES_ROOT/PROTOCOLS/Filter]
[HKEY_CLASSES_ROOT/PROTOCOLS/Filter/text/vnd.sun.j2me.app-descriptor]
@="jad file MIME Filter"
"CLSID"="{c4cd135d-8e79-4b89-a58a-0d2e8f3604ba}"
[HKEY_CLASSES_ROOT/PROTOCOLS/Filter/text/vnd.sun.j2me.app-descriptor;charset=ISO-8859-1]
@="jad file MIME Filter"
"CLSID"="{c4cd135d-8e79-4b89-a58a-0d2e8f3604ba}"
[HKEY_CLASSES_ROOT/MIME/Database/Content Type/text/vnd.sun.j2me.app-descriptor]
@="JAD file MIME type"
"Extension"=".jad"
[HKEY_LOCAL_MACHINE/SOFTWARE/Tao/JMM/MIMEFilterRegistered]
@=""
[HKEY_CLASSES_ROOT/TypeLib/{4F94A7E5-C36A-46B8-8829-4F82EE718290}]
[HKEY_CLASSES_ROOT/TypeLib/{4F94A7E5-C36A-46B8-8829-4F82EE718290}/1.0]
[HKEY_CLASSES_ROOT/TypeLib/{4F94A7E5-C36A-46B8-8829-4F82EE718290}/1.0/0]
@="//Windows//jmmfilter.dll"
[HKEY_CLASSES_ROOT/TypeLib/{4F94A7E5-C36A-46B8-8829-4F82EE718290}/1.0/0/win32]
@="//Windows//jmmfilter.dll"
[HKEY_CLASSES_ROOT/jmm.jadfile/DefaultIcon]
@="jmm.exe,-4"
[HKEY_CLASSES_ROOT/jmm.jadfile/FilterRegistered]
@=""
[HKEY_CLASSES_ROOT/jmm.jadfile/Shell/Open/Command]
@="jmm.exe /"%1/""
[HKEY_LOCAL_MACHINE/SOFTWARE/Tao/Jmm]
"DataPath"="//Application Data//Tao//intent"
[HKEY_LOCAL_MACHINE/SOFTWARE/Tao/intent/conf/sys/font/mgr/engine/host]
"2"="W32Nina"
[HKEY_LOCAL_MACHINE/SOFTWARE/OEM/MASD]
"Tao Java"="10_1_7_551"

删除 jmm.exe、jmm.exe.0804.mui、jmmbox.dll、jmmbox.dll.0804.mui、jmmfilter.dll、MIDlet_Manager.lnk、target.img.zip、elate.dll、elate.dll.0804.mui、elatehost.dll、elateres.dll、elatezip.dll。

删除 initflashfiles.dat 中
; @XIPREGION IF PACKAGE_OEMMSD
; ===== TaoJAva =====
Directory("/Application Data"):-Directory("Tao")
Directory("/Application Data/Tao"):-Directory("intent")
Directory("/Application Data/Tao/intent"):-File("rofs_target.zip","/Windows/rofs_target.zip")

这部分即可。

Directory("/My documents"):-Directory("My Midlets")

Directory("/Windows/Start Menu"):-File("Java 管理器.lnk","/Windows/MIDlet_Manager.lnk")

; ===== End - TaoJAva =====
; @XIPREGION ENDIF PACKAGE_OEMMSD

集成 IE 下载补丁

在 mxipupdate_OEMOPERATOR_102.provxml 中添加:

<!-- PIE Download Plugin -->
    
<characteristic type="Registry">
        
<characteristic type="HKCR/zipfile">
            
<parm name="EditFlags" value="65536" datatype="integer" />
        
</characteristic>
        
<characteristic type="HKCR/.exe">
            
<parm name="Content Type" value="application/x-msdownload" datatype="string" />
        
</characteristic>
        
<characteristic type="HKCR/exefile">
            
<parm name="EditFlags" value="65536" datatype="integer" />
        
</characteristic>
        
<characteristic type="HKCR/mp3file">
            
<parm name="EditFlags" value="65536" datatype="integer" />
        
</characteristic>
        
<characteristic type="HKCR/.mpg">
            
<parm name="@" value="mpgfile" datatype="string" />
        
</characteristic>
        
<characteristic type="HKCR/mpgfile">
            
<parm name="EditFlags" value="65536" datatype="integer" />
        
</characteristic>
        
<characteristic type="HKCR/.avi">
            
<parm name="@" value="avifile" datatype="string" />
        
</characteristic>
        
<characteristic type="HKCR/avifile">
            
<parm name="EditFlags" value="65536" datatype="integer" />
        
</characteristic>
        
<characteristic type="HKCR/.rar">
            
<parm name="@" value="rarfile" datatype="string" />
        
</characteristic>
        
<characteristic type="HKCR/rarfile">
            
<parm name="EditFlags" value="65536" datatype="integer" />
        
</characteristic>
        
<characteristic type="HKCR/.doc">
            
<parm name="@" value="docfile" datatype="string" />
        
</characteristic>
        
<characteristic type="HKCR/docfile">
            
<parm name="EditFlags" value="65536" datatype="integer" />
        
</characteristic>
        
<characteristic type="HKCR/.pdf">
            
<parm name="@" value="pdffile" datatype="string" />
        
</characteristic>
        
<characteristic type="HKCR/pdffile">
            
<parm name="EditFlags" value="65536" datatype="integer" />
        
</characteristic>
    
</characteristic>

即可。

自定义 IE 快捷键

IE 快捷键设置:

在注册表中

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Internet Explorer/KeyMaps]

里面可以修改 IE 快捷键,具体键值和功能对应关系如下:

1 向上滚
2 向下滚
3 到顶端
4 到底端
5 向左滚
6 向右滚
7 到左端
8 到右端
9 默认
10 桌面
11 一列
12 全屏
13 显示图片

键名对应的是按键:48-57 分别对应 0-9,119 对应 *,120 对应 #(这些按键值其实可以通过 PocketNesterPlus 的控制器设置来得到,然后把得到的 16 进制数转换为 10 进制即可)。

集成语音标记

集成语音标记,需要首先用这个修改后的键盘驱动替换 dump 目录下原来的键盘驱动,如果不替换则无法长按音量下呼出语音标记。

然后修改 default.hv,将以下内容:

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Shell/KeyMaps]
"195"=dword:5

改为

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Shell/KeyMaps]
"195"=dword:1

如果不修改,则长按音量下会呼出照相机来。

然后在 dump 下加入这两个文件 vsrsd_com.dll、vsrsd_com.ini,然后修改 default.hv,加入以下内容:

[HKEY_CLASSES_ROOT/CLSID/{71D2DA40-5BE7-411D-976E-746238451234}]
  @="Cyberon SAPI"

[HKEY_CLASSES_ROOT/CLSID/{71D2DA40-5BE7-411D-976E-746238451234}/InprocServer32]
  @="VsrSD_COM.dll"

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Speech]
  "Engine"="{71D2DA40-5BE7-411D-976E-746238451234}"
  "ModelSize"="614400"
  "DumpWaveFile"="0"
  "TrainCount"="1"
  "TrainRejection"="10"
  "RecogRejection"="-1"
  "AutoRecogLevel"="0"
  "DialogDisplayTime"="3000"

使笔画查找联系人有效

修改 default.hv,找到

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Shell/smartdialer/Chinese]
  "Mode"=dword:0

在改键下添加:

"KeyLayoutCode"="1:2:3:4:5:2:2:2:3:3:3:4:4:4:5:5:5:6:6:6:7:7:7:7:8:8:8:9:9:9:9:"

即可。

集成开机动画、铃声

首先,将 oemstartup.dll 复制到 dump 目录中,然后修改 mxipupdate_OEMOPERATOR_101.provxml,将其中原来定制开机画面的一段替换为:

<!-- Startup&Shutdown PIC&WAV -->   
    
<characteristic type="Registry">
 
        
<characteristic type="HKLM/SOFTWARE/HTC/Startup" translation="filesystem">
            
<parm name="Image" datatype="string" value="/windows/open_nosound.gif"  translation="filesystem" />
            
<parm name="wav" datatype="string" value="/windows/ring_open .wav"  translation="filesystem" />
        
</characteristic>
 
        
<characteristic type="HKLM/SOFTWARE/HTC/Shutdown" translation="filesystem">
            
<parm name="Image" datatype="string" value="/windows/end_nosound.gif"  translation="filesystem" />
            
<parm name="wav" datatype="string" value="/windows/ring_end .wav"  translation="filesystem" />
        
</characteristic>
 
        
<characteristic type="HKLM/System/Startup" translation="filesystem">
            
<parm name="Duration" datatype="integer" value="600000" />
        
</characteristic>
 
        
<characteristic type="HKLM/System/Startup/1" translation="filesystem" >
            
<parm name="dll" datatype="string" value="/windows/oemstartup.dll"  translation="filesystem" />
        
</characteristic>
 
        
<characteristic type="HKLM/System/Startup/2" translation="filesystem">
            
<parm name="Splash" datatype="string" value="/windows/open_nosound.jpg"  translation="filesystem" />
        
</characteristic>
 
        
<characteristic type="HKLM/System/Shutdown" translation="filesystem">
            
<parm name="Duration" datatype="integer" value="600000" />
        
</characteristic>
 
        
<characteristic type="HKLM/System/Shutdown/1" translation="filesystem">
            
<parm name="dll" datatype="string" value="/windows/oemstartup.dll"  translation="filesystem" />
        
</characteristic>
 
        
<characteristic type="HKLM/System/Shutdown/2" translation="filesystem">
            
<parm name="Splash" datatype="string" value="/windows/end_nosound.jpg"  translation="filesystem" />
        
</characteristic>
 
    
</characteristic>

这样 ring_open .wav 为开机铃声、ring_end .wav 为关机铃声;open_nosound.gif 为开机动画、end_nosound.gif 为关机动画;open_nosound.jpg 为开机动画后显示的静态图片、end_nosound.jpg 为关机动画后显示的静态图片。这些文件可以自己制作,然后放到 dump 目录下即可。

577W ROM 改成 586W ROM 的方法

修改 mxipupdate_OEMOPERATOR_101.provxml,将其中的 577W 替换为 586W。

修改 default.hv,在其中添加:


[HKEY_CLASSES_ROOT/CLSID/{72F3E437-17E6-484E-9C96-13181D4039CB}/InprocServer32]
@="htcwmpplugin.dll"

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MediaPlayer/UIPlugins/{72F3E437-17E6-484E-9C96-13181D4039CB}]
"Capabilities"=dword:00000001
"Description"="HTC Key Mapping UI Plug-in"
"FriendlyName"="HTC Key Mapping UI Plug-in"

然后将 htcwmpplugin.dll、Short_AP1.lnk、Short_AP2.lnk、Short_AP3.lnk、Short_AP4.lnk 复制到 dump 中即可。这5个文件可以在这里下载:586W_keybd_plugin.zip

五、hv 注册表的修改

Windows Mobile 5 的注册表文件是 default.hv 和 user.hv 这两个,使用 rgucomp.exe 可以将它转化可编辑的 rgu 文件。首先执行,
set _FLATRELEASEDIR=.
然后
rgucomp -o default.hv -nologo > boot.rgu
就将 default.hv 转化为 boot.rgu 了,这个 rgu 文件开头少了一行 REGEDIT4,需要自己加上。另外,这里提供的这个 rgucomp.exe 是支持中文的啦。所以不需要向子豪那篇文章说的那样需要自己再把汉字补全,所以省了很多事。但是还是需要把这个 rgu 用 EditPlus 打开之后用 Unicode 编码重新保存。不然最后没法转化回 hv 文件。对 rgu 文件编辑完之后,用
rgucomp -b
就可以把 boot.rgu 转化为 boot.hv 了,然后用 boot.hv 覆盖 default.hv,注意,要把修改之后的 default.hv 的属性也设为跟之前一样的(只读、隐藏、系统、存档)。
user.hv 的转化和编辑是一样的。这里就不重复了。

六、重新打包、生成 NBF 文件,刷机

一切都搞定之后,就要重新打包了。从命令行里退出 dump 目录,然后运行
Buildimgfs.exe
之后是一个较长时间的等待,并且你的电脑资源会被消耗殆尽,完成之后会有成功的提示。

原始的 imgfs_removed_data.bin 文件必须存在,否则命令会失败。

在命令行执行命令:
make_imgfs os.nb -nosplit
nosplit 参数是必须的,这个过程非常快,完成之后会有提示。

原始的 nb 文件必须存在,否则命令会失败。

这样生成的 ROM 大小跟原来一样的。如果你希望重新打包成一个较小的 ROM,可以在重新打包这一步,从 vodafone v1240 版的 ROM 里,提取 os.nb,并用 prepare_imgfs os.nb -nosplit 来使用 vodafone v1240 的 os.nb 生成 imgfs_removed_data.bin,然后用这个 imgfs_removed_data.bin 和 os.nb 代替新加坡版的这两个文件。主要不要用 viewimgfs 把 vodafone v1240 版的 imgfs_removed_data.bin,不然你做的修改就前功尽弃了。通过这种方法,生成的新 ROM 会小 4M。

将 os.nb 转化为 nbf 需要用 nb2nbf_tornado.exe 这个工具。打开 nb2nbf_tornado.exe 之后,首先填写版本信息,这些信息虽然可以乱填写,但最好还是按照原来的版本号填写比较好。然后在后面添加上 os.nb 文件,选择 OS 模块,模块大小和位置会自动填写完成,不用管它。然后,点 traslate 就可以生成 nk.nbf 文件了。

把 nk.nbf 文件放到刷机软件的目录下(就是展开的官方目录下),替换原来的 nbf 文件,之后启动刷机软件就可以刷机了。

刷机前保证你的手机已经把 CID 改为 superCID 了,然后最好进入到 3 色屏模式下刷机(在非 3 色屏下是否可以刷我没试过)。如果刷完了,你的系统可以正常启动,并可以正常运行,就说明你的 ROM 定制成功了。如果不幸失败了。没关系,重新刷回原来的就可以。记住:刷系统只刷 OS 就可以了,最好不要用 5 个部分完整的 nk.nbf 刷机,否则,失败的后果可能很严重(尤其是停电)。