制作OEM包(OEM Package) 全过程 ( 转自thank again)
OEM Package是ROM模板的关键部分,通过选择不同的OEM Package可以使我们定制出不同的ROM。系列4准备分3类介绍如何制作OEM Package:
1. 如何将软件的cab安装包制成OEM Package
2. 如何制作绿色软件的OEM Package
3. 如何制作注册表修改的OEM Package
因为内容比较多,所以决定分成2个Parts来介绍。Part1,介绍如何将Cab安装包转换成OEM包(Package)。Part2,介绍如何制作绿色软件的OEM Package和注册表修改的OEM Package,如何将系统自带的软件提取并制成可选择的OEM Package。
一个完整的软件的OEM Package里面应包括如下内容:
1. 软件自身所需文件
2. 快捷方式(非必要,视软件而定)
3. dsm文件(不可缺)
4. rgu(注册表文件)(非必要,视软件而定)
5. initflashfiles.txt,主要用于指定刷机文件的存放位置)(非必要,视软件而定)
6. option.xml,用于系统加载该OEM Package以及显示相关内容(不可缺)
下面我们以PHM Registry Editor V0.70为例,来介绍如何将该软件的cab安装包regedit.Mrln_ARM.CAB转换成OEM Package。PHM Registry Editor是个免费的PPC注册表编辑软件,你可以其官方网页查看软件介绍,以及下载该软件的Cab安装包(选PocktPC2002,2003(ARM/PXA))。
在将Cab转换成OEM之前,你必须做如下准备:
1. 获取GUID(UUID)码
2. 解压Cab包的软件。
先谈GUID(或称UUID),GUID是Globally Unique IDentifier的缩写,中译全球唯一标识符,每个OEM Package都有一串唯一的GUID号码用于系统识别,你可以在此网站http://www.famkruithof.net/uuid/uuidgen来获取所需的GUID码。进入该网站,在“Get”按钮边上选项内选Version1:Time/Node based或者Version4:Random,然后点击“Get”按钮,会自动生成GUID,该网页也可以一次生成多个GUID码。如图1。将该串GUID码(2e7230bd-1d2e-4c59-8643-85fee5d5f86b)记下。
Fig.1 GUID码
再说说解压Cab包的软件。Ocp Software公司出品的WinceManager或CabWUZ均可以用于解压Cab包,WinceManager的试用版只能试用30次,且不能导出注册表文件。CabWUZ的试用版可以使用30天,同样无法导出注册表文件。
下面开始以CabWUZ为解压软件,regedit.Mrln_ARM.CAB为例介绍如何将Cab安装包转换成OEM Package。
1. 下载regedit.Mrln_ARM.CAB后,用CabWUZ打开。如图2。左边从上到下有Files,Shortcuts和Registry。Files里面包括PHM Registry Editor V0.70软件的自带文件,我们等会儿要将这些文件全部导出。Shortcuts是快捷方式,不必管它。Registry里面是软件运行所需的注册表。右边是该cab文件的属性。
Fig.2 CabWUZ主界面
2. 点击左边的Files签名的”+”,将该目录展开,可以看见里面共有9个文件。见图3。右边窗口内显示的是这9个文件的属性。注意第三栏的Location,指的是该文件的存放位置,请注意,除了regedit.exe的存放位置为%InstallDir%外,其余8个文件的存放位置都是%Windows%。
Fig.3 文件存放位置
3. 点击左边窗口的Files,然后点击工具栏上面的Extract按钮,将Files下面所有9个文件都导出。如图4,将文件导出到桌面/PHM Registry Editor/目录下。点击OK,将文件导出,提示图5。
Fig.4 选择导出文件的存放目录
Fig.5. 文件导出完毕
4. 打开PHM Registry Editor目录,里面有2个文件夹,分别为[INSTALLDIR]和Windows。如图6。
Fig.6 PHM Registry Editor文件夹内容
打开Windows目录,里面有8个文件,也就是Cab包里面的那些存放位置为%Windows%的文件。见图7。
Fig.7 Windows目录内容
[INSTALLDIR]里面只包括regedit.exe一个文件。如图8。所以cabWUZ是根据cab包里面的文件存放位置信息解压文件的。
Fig.8 [INSTALLDIR]目录内容
5. 将2个目录下的9个文件全部复制到PHM Registry Editor目录后,可将这2个目录删除。如图9。
Fig.9 将[INSTALLDIR]和Windows目录下文件复制到PHM Registry Editor下
6. 新建2个txt文件。将一个文件重新命名为2e7230bd-1d2e-4c59-8643-85fee5d5f86b.dsm,另一个txt文件重命名为2e7230bd-1d2e-4c59-8643-85fee5d5f86b.rgu。也就是GUID号码.dsm和.rgu,如图10。切记一定要将扩展名改为dsm和rgu。
Fig.10 建立dsm和rgu文件
7. 用记事本或其它文本编辑软件打开rgu文件,然后点击另存为,将其存为Unicode格式文件。这点很重要,否则在BuildOS执行时会出错。如图11。
Fig.11 将rgu文件存为Unicode格式
8. 编辑rgu文件
再回到cabWUZ,用cabWUZ打开regedit.Mrln_ARM.CAB,在左窗口的下部是Registry,点击Registry,右边的窗口会显示”Entries 20″,如图12,说明有20个注册表表项信息。分别点击各个”+”将注册表全部展开。如图13。因为cabWUZ或WinceManager试用版都无法支持导出注册表文件。所以只好手动编制rgu中的注册表信息了。如果你有WinceManager正式版(PS自己百度一下),那么可以很容易通过”Export to reg”(导出reg)功能,直接将注册表信息导出。
Fig.12 注册表表项数目
Fig.13 注册表信息
如图13中,HKEY_CLASSES_ROOT\.rbk键下的表项为:
Name: Default
Type: REG_SZ
Data:RegBackup
应该写为:
[HKEY_CLASSES_ROOT\.rbk]
@=”RegBackup”
Default可以用@表示。REG_SZ表示这是个字符串值。如图14。将原注册表中%InstallDIR%(安装目录)替换成\\Windows\\。
Fig.14 rgu文件
还有很重要的一点就是,rgu文件最后必须空一行,否则BuildOS运行也会出错。如图15。总结一下,制作rgu文件特别注意4点:
1. 文件必须保存为Unicode格式
2. 文件第一行必须是:REGEDIT4
3. 文件最后必须空一行
4. 注册表中的单斜杠”\”,必须写成双斜杠:”\\”
Fig.15 rgu文件的最后必须空一行
9. 编制快捷方式
从Files里面可以看出,regedit.exe是个可执行文件。所以我们要为它建立一个快捷方式,并将它放置在程序里面,使之可以方便被调用。因为所有OEM Package的文件都会被放置在Windows目录下。所以regedit.exe的路径就是:\Windows\regedit.exe。
在PHM Registry Editor目录下,新建一个txt文件,然后用记事本打开,输入:
#”\Windows\regedit.exe”
如图16,
Fig.16 建立快捷方式
存盘退出,将该txt文件重命名为 HM RegEdit.lnk。如图17。
Fig.17 将txt文件更名为*.lnk(快捷方式)
10. 编辑initflashfiles.txt
在PHM Registry Editor目录下,新建一个txt,然后重命名为initflashfiles.txt。用记事本打开。输入以下内容:
; Start PHM RegEdit
;===========================================
Directory(“\Windows\Start Menu\Programs”):-File(“PHM RegEdit.lnk”,“\Windows\PHM RegEdit.lnk”)
;===========================================
; End PHM RegEdit
这段代码的意思是将Windows目录下的PHM RegEdit.lnk复制到\Windows\Start Menu\Programs目录(开始菜单里面的程序)下。
红色,是这个快捷方式(蓝色部分)将要被放置的目录(\Windows\Start Menu\Programs),绿色是这个快捷方式的显示名称,其中括号前面的-File指的是这是个文件。蓝色是这个快捷方式的位置。如图18。同样也请将initflashfiles.txt保存为unicode格式。
Fig.18 initflashfiles.txt文件内容
11. 编制option.xml
BuildOS.exe是通过option.xml来加载OEM Package,如果该OEM Package没有option.xml,则该OEM Package将不会被加载。同样,新建一个txt,然后将其重命名为option.xml,用记事本打开,输入如下内容:
<?xml version=”1.0″ encoding=”UTF-16″ standalone=”yes”?>
<Items>
<Item name=”PHM Registry Editor” group=”Applications - 应用程序” checked=”true”>
<Tip>注册表编辑软件</Tip>
<Guid type=”p”>2e72e0bd-1d2e-4c59-8643-85fee5d5f86b</Guid>
</Item>
</Items>
其中,<?xml version=”1.0″ encoding=”UTF-16″ standalone=”yes”?>是固定的,所有内容被嵌套在<Items></Items>里面。如果你对xml有所了解,将很容易理解这种节点嵌套结构。<Item name>就是该Package的名字,将显示在BuildOS的option框里面,group是指该Package属于那个群组的,你可以通过给不同Package设定同样的group,使之成为一组,如将所有应用程序归为同一组等。checked有2个值,true和false,true指默认该Package是被选中的,反之则默认为非选状态。<Tip>的内容,是指在BuidOS中,你将鼠标移至该Package上,将会显示的提示信息。<Guid>就是该OEM Package的GUID码,type为p。
Fig.19 Option.xml内容
11. 至此,PHM Registry Editor的OEM Package已经全部建好。如图20,除了软件本身的9个软件外,加上dsm,rgu,initflashfile和shortcut以及option.xml,总共14个文件。顺便提一下,dsm和option.xml是一定要有的。如果软件本身不带注册表信息,如绿色软件,可以不用建rgu文件。同样快捷方式和iniflashfiles都是可选项。
Fig.20 PHM Registry Editor OEM Package内容
12. 将PHM Registry Editor文件夹复制到My_ROM_Kitchen\OEM\目录下。如图21。
Fig.21 复制到OEM目录下
13. 回到My_ROM_Kitchen目录下,试运行下BuildOS.exe,如果一切正常的话,PHM Registry Editor已经被BuildOS.exe正确加载了。鼠标悬停在该Package上,显示“注册表编辑软件”。如图22。
Fig.22 运行BuildOS.exe
制作OEM包(OEM Package)Part2
Part2将包括如下内容:
1. 如何制作绿色软件(无需注册表运行就可运行的程序)的OEM Package
2. 如何制作注册表修改的OEM Package
3. 如何将系统自带的软件做成可选择的OEM Package
3.1.将系统部件如输入法等做成OEM Package
3.2.将系统自带应用程序(如ClearValuePDF)做成OEM Package
上文中已经提到过了,一个完整的OEM Package需包括6种文件。
1. 软件自身所需文件
2. 快捷方式(非必要,视软件而定)
3. dsm文件(不可缺)
4. rgu(注册表文件)(非必要,视软件而定)
5. initflashfiles.txt,主要用于指定刷机文件的存放位置(非必要,视软件而定)
6. option.xml,用于系统加载该OEM Package以及显示相关内容(不可缺)
其中除了1、3、6是必须外,其余均视软件而定。
1. 如何制作绿色软件(无需注册表运行就可运行的程序)的OEM Package
绿色软件也就是那些无需注册表就可以自行运行的程序,一般包括exe执行文件和dll文件扩展等文件。将它们制成OEM Package的方法和在Part1里面介绍的将cab转换成OEM Package一样,这里就不再重复,基本步骤:
1. 提取文件
2. 获取GUID码,建立dsm文件
3. 编辑快捷方式和initflashfiles.txt(非必须)
4. 编辑option.xml
如以Gsfinder为例,GSFinder是一个非常实用的资源管理器,其程序运行只需GSFinder.exe,和3个dll文件扩展:gsgetfile.dll、UNZIP.dll、UNLHA.dll。在My_ROM_Kitchen\OEM\下建立GSFinder文件夹,将上述4个文件复制到该文件夹,然后编制dsm文件,建立快捷方式GSFinder.lnk(#”\Windows\GSFinder.exe”),然后编辑option.xml。GSFinder目录下包括8个文件。如图1。
Fig.1 GSFinder文件夹内容
option.xml内容如图2。Package名字:GSFinder。group:Utilities - 实用工具等。
Fig.2 option.xml内容
回到My_ROM_Kitchen目录下,运行BuildOS.exe,可以看见GSFinder已经被加载。如图3。
Fig.3 运行BuildOS.exe
为了降低ROM大小,对于绿色软件,个人建议,可以将它们复制到存储卡上,然后建立一个快捷方式指向exe文件,在刷机的时候,只需将快捷方式刷到ROM里面就可以了。如此的话,在OEM文件夹下建立Link_GSFinder目录,然后分别建立dsm文件,快捷方式和iniflashfiles.txt以及option.xml就可以了。比如,我将GSFinder.exe和3个dll文件放置在存储卡上Tools\GSFinder下,那么我只需建立一个快捷方式,写如:#”\Storage Card\Tools\GSFinder\GSFinder.exe”就可以了。Link_GSFinder目录内容如图4:
Fig.4 Link_GSFinder目录内容
运行BuildOS,如图5,此时请注意,不要同时选中2个GSFinder,否则会出现重复文件错误,因为它们的快捷方式都是GSFinder.lnk。
Fig.5 运行BuildOS.exe
2. 如何制作注册表修改的OEM Package
制作注册表修改的OEM Package最简单了,因为没有软件文件和快捷方式等。只需dsm和rgu以及option.xml3个文件即可。以修改网络名称显示为SoftBank为例,具体如何修改注册表详见”注册表修改个性化X01HT(Hermes)运营商服务网络名称显示“一文。
在OEM下建立Softbank operator name文件夹,然后分别建立dsm,rgu和option.xml文件。rgu文件中输入需修改的注册表键值,如图6:
Fig.6 注册表内容
Softbank operator name文件夹只有3个文件。如图7。
Fig.7 Softbank operator name文件夹
运行BuildOS,如图8,可以看到里面已经有Softbank operator name OEM Package。
Fig.8 运行BuildOS.exe
3. 如何将系统自带的软件做成可选择的OEM Package
3.1将系统部件做成OEM Package
Transcriber英文输入法之一,但对于我们不常用英文输入法来说,它并不是个必选项。我们以它为例介绍如何将系统部件做成可选择的OEM Package。
在My_ROM_Kitchen\SYS目录下有3个文件夹:Transcriber,Transcriber_Lang_0409和Transcriber_Lang_0409_DPI_96。分别进入这3个文件夹,将它们的dsm文件名记下,也就是它们的GUID码记下。如Transcriber的是:60fa7e75-fb9b-45c0-b99c-16d9182e9f72。
在SYS目录下新建一个option.xml,并输入以下内容:
<?xml version=”1.0″ encoding=”UTF-16″ standalone=”yes”?>
<Items>
<Item name=”Transcriber” group=”System” checked=”false”>
<Tip>Transcriber,系统自带,如不用英文键盘输入,可不选</Tip>
<Guid type=”p”>60fa7e75-fb9b-45c0-b99c-16d9182e9f72</Guid&{gt;
<Guid type=”i”>5f9ca691-2a85-4db5-b6a0-ce35ef2618dc</Guid>
<Guid type=”i”>f778638a-d209-4ee6-adb1-ad8e122d3685</Guid>
</Item>
</Items>
各个节点的意思和OEM Package中的option.xml一样。其中请注意,Guid有3个其中除了Transcriber的Guid是type”p”外,Transcriber_Lang_0409和Transcriber_Lang_0409_DPI_96的Guid均是type”i”。
保存退出,运行BuildOS.exe,现在我们已经有5个OEM Package可选了。如图9。
Fig.9 运行BuildOS.exe
3.2.将系统自带应用程序(如ClearValuePDF)做成OEM Package
将系统自带的应用程序,如ClearValuePDF viewer,IA ZIP等,做成OEM Package会比较麻烦点。因为你必须知道该程序包括那些文件,并且这些文件是属于哪个文件夹。然后将它们剪切出来,并制作dsm,rgu,快捷方式,iniflashfiles.txt和option.xml。
一般来说系统自带的应用程序文件都放置在OEM\OEMAPPS下,注册表信息整合在OEMAPPS下的rgu文件中,软件的语言文件一般放在OEM\OEM_Lang_0409下。
以ClearValuePDF viewer为例,打开OEM\OEMAPPS文件夹,选择按名称排列图标,如图10。其中用红色框住的文件就是ClearValuePDF的exe执行文件和dll应用程序扩展。
Fig.10 ClearValuePDF程序的文件
可以通过图标来辨别exe可执行文件,然而dll文件就比较麻烦了。大部分的dll文件里面都包括版本属性,里面有版权信息。同一应用程序的dll版权信息应该都是相同的。你可以右单击查看该dll版本信息来确定它们是否属于相同应用程序。如图11。
Fig.11 dll版权信息
在OEM下新建一个ClearValuePDF文件夹,然后将上述文件剪切进去。该软件还有2个快捷方式,如图12。也分别将它们剪切出来。
Fig.12 快捷方式
应用程序的注册表信息被整合在OEM\OEMAPPS下的37fc85aa-e925-4b0a-b0c5-89afb2d5cfde.rgu文件中。该rgu文件是个隐藏文件。用notepad打开后,查找和pdf相关的注册信息,图13显示了和pdf以及ClearValuePDF相关的注册表内容。
Fig.13 ClearValuePDF的注册表信息
将ClearValuePDF的注册表信息剪切出来,单独制成rgu文件。然后再建立dsm,为快捷方式建立iniflashfiles.txt,和option.xml。注意,该软件2个快捷方式中,一个是指向exe文件,一个是指向help文件。所以iniflashfiles.txt内容有2行:
Directory(”\Windows\Start Menu\Programs”):-File(”ClearVue PDF.lnk”,”\Windows\ClearVue PDF.lnk”)
Directory(”\Windows\Help”):-File(”CV_PDFViewhlp.lnk”,”\Windows\CV_PDFViewhlp.lnk”)
CV_PDFViewhlp.lnk将会被复制到\Windows\Help目录下。最终ClearValuePDF目录将包括如下内容,如图14。
Fig.14 ClearValuePDF目录内容
运行BuildOS.exe,可以看到里面已经出现Clear Value PDF Viewer了。该软件已经成功被单独制成OEM Package了。如图15。
Fig.15 运行BuildOS.exe
OK,Part2 到此结束。相信至此,对于如何制作OEM Package,应该已经没有大问题了。
[ 本帖最后由 liitaa3333 于 2008-7-27 23:29 编辑 ] |