我在这里: 首页 » 生活碎片 » 浏览文章: WM操作系统ROM模板使用详细教程[转]
« 常用口语英语缩写Windows 7 字体安装的两种方法 »

WM操作系统ROM模板使用详细教程[转]

第一章 使用模板前的准备(必须)

一、使用模板要求安装的软件及其他
1、安装.net 3.5
下载:
http://download.microsoft.com/do ... 0f28/dotnetfx35.exe
其实2.0版也可以,但有时2.0会出错,所以推荐3.5版

2、安装VC2008
附件下载:
http://download.microsoft.com/do ... a1/vcredist_x86.exe


3、剩余空间要求1.5G以上

4、下载模板(请去论坛下载,下面是版主OXGE的贴,很经典),
http://bbs.pdafans.com/viewthrea ... &extra=page%3D1

二、制作OEM包的软件:
1、WinCE CAB Manager 3.0,这个可以提取CAB包里的文件及注册表
附件下载:
http://www.17ppc.com/upimg/soft/20081024002.zip


2、package-creator-v2.7,这个可以自动将CAB包转换成OEM包,不过有一点BUG,不支持中文路径,自动化的软件通常还需要自己手工处理一下
附件下载:
http://www.hi-pda.com/forum/attachment.php?aid=498210


3、GUID码生成工具:可以生成GUID码,制作OEM里需要一个不重复的GUID码才可以
附件下载:
http://newasp.net/code/vb/20088.html

4、文本编辑软件,WINDOWS自带的记事本功能太简单,特别是OEM包的注册表只支持U格式,所以还是用增强版的记事本吧,我现在是使用免费的notepad++
官方网站:
http://notepad-plus.sourceforge.net/tw/site.htm
http://sourceforge.net/project/s ... p;package_id=102072


第二章 模板简介

一、模板的作用
模板是什么?英文里制作ROM叫做cook rom,为什么这样叫呢?顾名思义,就是一个ROM其实是煮出来的,那么制作出一个ROM对于我们来说,其实就相当于跟煮饭、炒菜一样简单,我们只需把材料(OEM包等)扔进去,然后就可以煮出来(当然煮的好不好吃是另外一回事,呵呵)
因此,模板可以看成是非常简单就能制作出ROM的软件,对于我的模板,只需点击一下BuildRom.bat,再勾上所需要的OEM软件,点击开始,完成后关掉窗口,过几分钟就会自动做好ROM并弹出刷机软件,呵呵,够简单吧

二、模板的结构
模板的结构如下:
---模板
    |
    ----OEM
    |
    ----SYS
    |
    |
    ----ROM
    |      |
    |      ---XIP
    |
    ----tools

1、OEM目录一般是存放该机型的OEM软件、驱动等的,我们需要添加或删除OEM包,一般在此目录进行
2、SYS目录是存放微软的核心文件,这个目录里的文件一般各机型通用的(除了.vm、.rom、metedate目录之外),移植时我们需要将这个替换成新的。一般不需要理会这个目录(除了修改输入法等之外)
3、ROM目录里存放os.nb.payload文件,这个文件有两个作用:提供框架及XIP。里面有个XIP目录,里面需要放在个从XIP里提取出来的boot.rgu。
4、tools,这里放的制作ROM时所用到的软件(当然也有备用的)
5、模板的根目录有一个BuildRom.bat,双击这个批处理文件就开始制作ROM,建议大家用记事本打开这个文件,学习一下里面的语句

三、buildos.bat的命令解释(可跳过)
@echo off
(不显示命令行)
echo BuildOS is wroking... Please wait.
(显示一句BuildOS is wroking... Please wait.)
tools\buildos
(运行tools\buildos.exe,将OEM和SYS里的文件形成dump目录)
TOOLS\G'Reloc.exe -doit -dump
(运行TOOLS\G'Reloc.exe对dump目录里的模板排序地址)
echo Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs
(显示Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs)
Delay.vbs 5
(等等5秒,以便G'Reloc.exe完全处理完毕)
del Delay.vbs
(删除Delay.vbs)
echo OK!
(显示OK!)
TOOLS\all_packages_to_one
(将dsm和rgu文件打包,随机留下一个DSM文件,这样可以减少WINDWOS里的文件,并且有防止ROM被DUMP的作用……)
del buildpkg.wrn
(删除打包后的buildpkg.wrn文件)
copy ROM\OS.nb.payload temp\OS.nb.payload
(将ROM\OS.nb.payload复制到temp目录里)
cd temp
(进入temp目录)
..\TOOLS\ImgfsFromNb OS.nb.payload imgfs.bin
(运行ImgfsFromNb,从OS.nb.payload分离出imgfs.bin)
..\TOOLS\ImgfsFromDump imgfs.bin imgfs-new.bin
(运行ImgfsFromDump,以imgfs.bin为模板,从DUMP目录形成新的imgfs.bin:imgfs-new.bin)
..\TOOLS\ImgfsToNb imgfs-new.bin os.nb.payload os-new.nb.payload
(运行ImgfsToNb,将imgfs-new.bin插入os.nb.payload,形成os-new.nb.payload
..\TOOLS\NBMerge -Raphael os-new.nb
(运行NBMerge,以Raphael格式将os.nb.payload形成os-new.nb
move os-new.nb ..
(将os-new.nb移到模板根目录)
CD..
(返回上级目录)
tools\htcrt.exe /buildrom "tools\Rapheal.htcrtproj" "tools\ruu\ruu_signed.nbh"
(运行tools\htcrt.exe,以tools\Rapheal.htcrtproj格式将os-new.nb转换成tools\ruu\ruu_signed.nbh
rd temp /s /q
(删除temp目录)
del os-new.nb
(删除os-new.nb)
cd TOOLS\ruu
(进入TOOLS\ruu)
ROMUpdateUtility.exe
(运行刷机程序)
exit
(完成后退出DOS窗口)

ROM制作工具(OXGE)~

http://bbs.pdafans.com/viewthrea ... &extra=page%3D1

第三章 模板使用过程

模板使用很简单的,只需用过一次就懂:
1、下载模板解压(我的最终修正版先下载模板,再下载OEM部分,再把OEM里的软件解压到OEM目录里)
2、运行BuildRom.bat,会出现DOS窗口,记住整个过程中不会关闭DOS窗口,然后很快会弹出Build Os界面

3、Build OS会显示出OEM目录里的OEM软件(需要在OEM包里编写option.xml才会在build os界面显示出来的,如果没有option.xml,那就直接集成这个OEM包)
4、勾上你所需要的软件,按file下面的绿色三角运行,如果OEM包没问题的话Build Os运行完后左下角状态栏会提示done

5、此时点击右上角的X关掉Build Os
6、耐心等待,会持续一段蛮长的时间

7、然后会弹出一个窗口,不必理会,完成后5秒会自动关闭……



8、然后很快就会弹出刷机软件,同步刷机吧~~~(制作好的nbh文件在tools/ruu下面)
很简单吧~


第四章 出错的解决方法

正常的模板使用是不会出错的,至少你下载我的模板,如果没更改过什么,而又装了.net 3.5和vc2008,硬盘有足够的空间,不可能出错的。
当然如果不是默认选择或者添加、修改了OEM包,当然有可能出错的,不过一般都会有足够提示的,我们来看看几种情况吧

一、文件重复错误
1、错误提示:在点击Build OS的绿色三角开始后,提示the file 'temp\dump\xxxxxx' already exists.
这个是最常见的错误。如果我的模板选了“PCG安装系统”后,也选中了电量、关机重启的话就会出现这个,呵呵,因为“PCG安装系统”OEM包里已经包含了电量显示和关机重启的。


2、错误的原因:这是由于在OEM和SYS目录有相同文件名的文件存在。制作ROM时是先将所有文件放在一起(windows),然后再根据initflashfiles.txt或provxml等文件复制到其他目录的,因此如果有重复的文件名的文件的话,就会报错。
3、解决方法:解决方法很简单,删掉重复的文件即可。如果这个文件必须要用到的话,可以先改成其他不重复的名称,再用initflashfiles.txt复制回原名就OK了,具体下面的OEM包制作教程再说。

二、注册表错误
1、错误提示:运行BuildOS,在最后建立注册表提示”Error building default.hv and user.hv!”(在创建default.hv和user.hv时出现错误)。
2、错误原因:这个是由于OEM包里的注册表不符合规范而造成的,常见的原因如下:
(1)RGU注册表第一行不是REGEDIT4
(2)RGU注册表编码不是unicode格式
(3)RGU注册表最后一行不是空行
(4)RGU注册表的格式错误(比如双斜杠\\写成了单斜杠\)
3、解决方法:打开temp目录里的log.txt,最后几行就是出错的注册表文件名、出错的行数。打开那个文件,将提示错误的行数解决即可(按照上面所说的可能原因处理)

三、buildos窗口没弹出出来报错
如果已经安装了.net 3.5和vc2008,结果没弹出buildos窗口就报错的话,那有可能是GUID码的问题,可能是DSM文件重复了,也有可能是option.xml里的GUIDL码与DSM的不一致,这个只能慢慢找了……

四、关掉buildos窗口后出错
如果安装了必需软件和有足够的剩余空间,一般不会出错的,如果出错了就截图给我分析一下吧
另外我的模板使用的是老麦修改过的可支持256M以上的ROM,所以也不会有ROM过大而提示错误。

第五章 OEM包制作教程

定制个人ROM时常常会加入自己所需要的软件吧,这样就需要这个软件的OEM包了,而OEM包可以使用别人做的,而如果这个软件没人做成OEM包的话就要自己做了。而且如果某个软件使用有问题,要想分析是不是OEM包的问题,也得有OEM包的相关知识,因此在这里我简单的说一下OEM包是如何制作的吧。

一、OEM包的结构
OEM包通常包含的文件如下:
1、DSM文件(必需):OEM必需的文件只有一个,就是DSM文件。而DSM的文件名必须是一串GUID码,这个GUID码可以用GUID码生成器来随机生成一个。这个文件可以是空文件,官方的之所以有内容,是因为含有该目录里的文件列表及签名。
2、RGU文件:这个是注册表文件,文件名必须和DSM一致才可以。首行必须为REGEDIT4,最后一行必须为空行,编码格式为UNICODE。
3、initflashfiles.txt,这个是复制文件用的,将OEM包里的文件复制到其他目录。我们只需掌握两种命令格式就可以了:
(1)创建目录:Directory("源目录"):-Directory("新建目录")
例如:Directory("\Program Files"):-Directory("PlumSIP61")
代表在\Program Files目录下新建一下PlumSIP61目录
(2)复制文件:Directory("目标目录"):-File("文件名","源目录文件")
例如:Directory("\windows\startup"):-File("PlumStart6.lnk","\Windows\PlumStart6.lnk_1")
代表将\Windows\PlumStart6.lnk_1这个文件复制到\windows\startup,并改名为PlumStart6.lnk
比较简单吧
4、option.xml,这个文件是提供信息给build os显示OEM包说明的,完整的比较长,我们可以简单点,只需基本的几句就可以了,如下是点讯6.1的option.xml:
<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<Items>
  <Item name="点讯6.1.0008_by_pcg" group="输入法" checked="true">
    <Tip>点讯6.1.0008_by_pcg</Tip>
    <Guid type="p">22361577-db8d-4443-8a2a-02af017e7298</Guid>
  </Item>
</Items>
对应的说明:
<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<Items>
  <Item name="显示在buildos里的文字" group="分组" checked="默认勾选状态">
    <Tip>鼠标放在该项时弹出来的说明</Tip>
    <Guid type="p">这个OEM的GUID码</Guid>
  </Item>
</Items>
即:
第一第二行我们不需要改
第三行的Item name="XXXXX"是显示在buildos里的文字,group="xxxx"是分组,相同分组的OEM会在一起显示,后面的checked="true"是默认勾选状态,其中true代表默认勾上,而false则是不勾选
第四行的<Tip>XXXXX</Tip>是鼠标放在该项时弹出来的说明,不要这个也不会有影响
第五行是这个OEM的GUID码,必须和DSM的GUID码一致才可以,否则build os可能无法开启
5、其余文件:OEM软件的文件

二、以绿色软件pim ppcbackup举例说明制作一个绿色软件的OEM包

1、这个软件是绿色软件,只有一个EXE文件,可以在任意目录运行,并且是没有注册表的,因此这个OEM包就很容易制作:
(1)在OEM目录下面新建一个目录,名字为ppcbackup2.8吧,直观点
(2)把PPCPimBackup.exe放在里面
(3)打开GUID生成器.exe,然后选择第一项“只生成DSM文件”,然后点击生成文件,这样就会在GUID生成器.exe的目录里生成一个DSM文件,68BE2663-A7BC-4ff7-B0A8-85B379A201EA.dsm,把这个DSM文件复制到ppcbackup2.8目录里
(4)新建一个快捷方式,后缀名是lnk,可以先新建一个txt文件,内容为:
#"\Windows\PPCPimBackup.exe"
然后再将txt改名为PIMbackup.lnk
可以看见快捷方式的格式很简单,前面是一个#,然后接着是引号括着的源文件的路径,因为OEM里的文件会全部放在windows里,所以快捷方式就要引到\Windows\PPCPimBackup.exe
(5)我们还在将快捷方式复制到开始菜单的程序里才可以,方便打开这个软件,我们总不能每次用这个软件都进入windows目录再打开PPCPimBackup.exe吧,新建一下initflashfiles.txt,内容如下:
Directory("\Windows\“开始”菜单\程序"):-File("个人信息备份PimBackup.lnk","\Windows\pimbackup.lnk")
(6)新建一个option.xml,内容如下:
<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<Items>
  <Item name="PIMBACKUP个人信息备份恢复工具2.8" group="_pcg_oem" checked="true">
    <Tip>pimBACKUP个人信息备份恢复工具2.8</Tip>
    <Guid type="p">68BE2663-A7BC-4ff7-B0A8-85B379A201EA</Guid>
  </Item>
</Items>
2、这样一个绿色软件pimbackup的OEM包就建立完毕,比较简单吧,打开build os就可以看见有pimbackup这个OEM包了,弄好ROM刷了之后,在开始/程序就可以看见个人信息备份PimBackup,点击打开试试吧

三、以google map简体CAB安装包为例做个OEM软件
1、去google网站下载个简体的cab安装包回来
2、用WinCE CAB Manager3.0打开这个CAB包,可以看见里面有4个文件、1个快捷方式及15项注册表其中3个文件是在%CE1%\ChinaGoogleMaps,还有一个strings-all.zlb是在%CE19%\ChinaGoogleMaps,WinCE CAB Manager的帮助有关于%CEX%代表着什么目录,其中\Program Files,%CE19%是\Application Data
3、因此我们可以将这4个文件解出来,然后再导出注册表,再用initflashfiles.txt将这4个文件复制到相关目录,然后再复制一个快捷方式到开始/程序里就OK了
4、不过我们试一下更简单的方法,就是使用cab转oem包软件package-creator-v2.7
5、这个软件的使用很简单,打开软件,点击open cab file,选择GoogleMaps_compressed.CAB,然后过一会儿package-creator-v2.7就会弹出done的窗口,然后你就可以发现package-creator-v2.7目录下有个GoogleMaps_compressed的目录,这个就是GoogleMaps_compressed的OEM包了,DSM、RGU、option.xml、initflashfiles.txt全都有,很简单吧
6、不过我们还要修正一下,因为这个软件是不支持中文目录的,所以initflashfiles.txt里复制到开始/程序段就要改一下,我们打开initflashfiles.txt,可以发现最后三行是:
Directory("\Windows"):-Directory("Start Menu")
Directory("\Windows\Start Menu"):-Directory("Programs")
Directory("\Windows\Start Menu\Programs"):-File("China Google Maps.lnk","\Windows\China Google Maps.lnk")
其中第一第二行我们删掉,因为本来就是有\windows\“开始”菜单\程序这个目录的,所以不用新建
然后将第三行改成:Directory("\Windows\“开始”菜单\程序"):-File("China Google Maps.lnk","\Windows\China Google Maps.lnk")
最后我们修改一下option.xml,将GoogleMaps_compressed改成GoogleMaps简体2.2.1.4,要不然在build os里我们很容易搞混,呵呵
7、这样子就OK了,使用这个软件可以很快捷的制作到OEM包来,不过我们记住做好后要查看一下有没有错误哦

四、最后以一个比较复杂的点讯6.1的CAB做成OEM包吧
1、去官方网下载6.1.0008的安装包
2、用package-creator-v2.7打开点讯CAB包,然后会生成PlumSIP Pro VGA V6_1_0008目录
3、不过这次可没这么简单,因为点讯6.1含有三个皮肤,即钻石皮肤、横屏钻石皮肤、以前的默认皮肤,而这三个皮肤的文件名是一样的,用package-creator-v2.7转换的话只会留下一个同名文件,其余的应该被覆盖了。另外键盘定义文件也有两套4个是同名的
4、因此这次我们不能偷懒了……我们用WinCE CAB Manager打开点讯的CAB包,点击一下排序栏的“位置”进行安装目录排序,我们先把%CE1%\PlumSIP61\skin\Diamond里的文件解压出来,然后将这样文件的后缀名都加个_,如将sel2.png改成se12.png_
5、我们再把%CE1%\PlumSIP61\skinw\Diamond的文件解压出来,这次都在后面加上_2来区别
6、再将%CE1%\PlumSIP61\skin\Normal的文件解压出来,因为前面两个皮肤都改名了,所以这个就不用改名了
7、还有键盘定义文件也有两套,我们将%CE1%\PlumSIP61\skink\hotkey的4个文件解压出来,后面加上个_区别一下吧
8、再将%CE1%\PlumSIP61\skink\NumSel里的4个文件解压出来,这个就不用改名了
9、好了,这样所有文件都齐了,我们修改一下initflashfiles.txt,将刚才改名的文件一一在initflashfiles.txt对应修改,如原本的:
Directory("\Program Files\PlumSIP61\skin\Diamond"):-File("bh.ini","\Windows\bh.ini")
改成:、
Directory("\Program Files\PlumSIP61\skin\Diamond"):-File("bh.ini","\Windows\bh.ini_")
即只需将最后的\Windows\bh.ini改成\Windows\bh.ini_
10、难道这样就OK了吗?不,这样订制进去的话不是默认输入法的哦……点讯的默认输入法实现方法是在\windows\startup目录建个快捷方式,每次开机时会将点讯设成默认输入法的
11、而CAB包里有个setup.dll这个安装库文件,我不懂编程,所以不知道这个文件具体都有什么用,不过据我的推荐,这个文件有两个作用,1、是CAB安装完成时将PlumStart6这个文件改名为PlumStart6.lnk复制到\windows\startup,并提示是否重启;2、是将输入法由PlumSIP 6.1改名为点讯输入 6.1。
12、因此,我们先将PlumStart6改名为PlumStart6.lnk,可以打开这个快捷方式看一下,可以看见内容是(40#"\Program Files\PlumSIP61\PlumStart6.exe"),证明确实是个快捷方式来的
13、然后在initflashfiles.txt里加入一句:
Directory("\windows\startup"):-File("PlumStart6.lnk","\Windows\PlumStart6.lnk")
14、然后将RGU里的:
[HKEY_CLASSES_ROOT\CLSID\{7DA6EDD4-0FBB-4ed0-BAB8-6893F45FF9B5}]
"default"="PlumSIP 6.1"
改成:
[HKEY_CLASSES_ROOT\CLSID\{7DA6EDD4-0FBB-4ed0-BAB8-6893F45FF9B5}]
"default"="点讯输入 6.1"
这样就OK了~~~
15、不过点讯6.1默认是不开启键盘输入的,我们修改下一下使默认就是支持键盘的吧,人性化一点,呵呵。打开RGU文件,将:
[HKEY_CLASSES_ROOT\CLSID\{7DA6EDD4-0FBB-4ed0-BAB8-6893F45FF9B5}\Option]
"useKey"="0"
由0改成1就OK了,这项就是是否支持键盘的注册表
16、完成~~~

  • 相关文章

发表评论

为了防止SPAM,含链接的评论需要审核后才能显示。

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

支持我们

最新评论及回复

最近发表

Search