39 12
发新话题
打印

[新手教程] SETUP.XML文件简述——制作绿色软件及定制ROM集成软件必读

SETUP.XML文件简述——制作绿色软件及定制ROM集成软件必读

声明:本人为Windows Mobile业余爱好者,目前为应用水平。同时本文的读者不是开发者,所以将不会对其中的参数作详细解释。当然,欢迎大家讨论,其中有描述欠妥之处,还望各位不吝批评指正,谢谢


基于Windows Mobile系统的程序文件一般采用*.cab安装包的方式发布。


有许多刚开始使用Windows Mobile智能手机的网友在下载到此类安装文件后不知道怎么使用,有解压缩后看得一头雾水的,也有解压缩后拷贝到手机运行不成功的,平白让大家多走了许多弯路。


还有的网友可能用了相关工具把CAB文件提取出来,可拷贝到手机后还是不能运行,这是为什么呢?到底还差什么步骤啊?同样,大家也非常想知道自己定制ROM时怎样才能把自己需要的软件集成到ROM 。


对于以上这些问题,我们将通过拆解WM5torage手机优盘这个程序的安装文件来获得答案。


首先,解压缩WM5torage.cab文件到WM5torage目录,在该目录下我们会看到一些以数字为扩展名及
_setup.xml文件。用记事本或其他编辑工具打开文件,可查看到如下代码:
引用:
<wap-provisioningdoc>
<characteristic type="Install">
<parm name="InstallPhase" value="install" />
<parm name="SetupDLL" value="1" />
<parm name="OSVersionMin" value="5.0" />
<parm name="OSVersionMax" value="5.99" />
<parm name="BuildNumberMin" value="0" />
<parm name="BuildNumberMax" value="-536870912" />
<parm name="AppName" value="Thunder WM5torage" />
<parm name="InstallDir" value="%CE1%\WM5torage" translation="install" />
<parm name="NumDirs" value="2" />
<parm name="NumFiles" value="3" />
<parm name="NumRegKeys" value="1" />
<parm name="NumRegVals" value="16" />
<parm name="NumShortcuts" value="1" />
</characteristic>
<characteristic type="FileOperation">
<characteristic type="%CE1%\WM5torage" translation="install">
<characteristic type="MakeDir" />
<characteristic type="WM5torage.dll" translation="install">
<characteristic type="Extract">
<parm name="Source" value="WM5TOR~1.001" />
</characteristic>
</characteristic>
<characteristic type="WM5torage.exe" translation="install">
<characteristic type="Extract">
<parm name="Source" value="000CAB3F.002" />
<parm name="WarnIfSkip" />
</characteristic>
</characteristic>
<characteristic type="SetupDLL.dll" translation="install">
<characteristic type="Extract">
<parm name="Source" value="SETUPDLL.003" />
<parm name="WarnIfSkip" />
</characteristic>
</characteristic>
</characteristic>
<characteristic type="%CE11%" translation="install">
<characteristic type="MakeDir" />
<characteristic type="WM5torage.lnk" translation="install">
<characteristic type="Shortcut">
<parm name="Source" value="%CE1%\WM5torage\WM5torage.exe" translation="install" />
</characteristic>
</characteristic>
</characteristic>
</characteristic>
<characteristic type="Registry">
<characteristic type="HKLM\Drivers\USB\FunctionDrivers\WM5torage_Class">
<parm name="ActivateFlags" value="0" datatype="integer" />
<parm name="DeviceName" value="DSK1:" datatype="string" />
<parm name="NLEDWrite" value="65535" datatype="integer" />
<parm name="NLEDRead" value="65535" datatype="integer" />
<parm name="idVendor" value="1118" datatype="integer" />
<parm name="ReadOnly" value="0" datatype="integer" />
<parm name="InterfaceSubClass" value="6" datatype="integer" />
<parm name="FriendlyName" value="WM5torage Mass Storage" datatype="string" />
<parm name="bcdDevice" value="0" datatype="integer" />
<parm name="Manufacturer" value="Microsoft" datatype="string" />
<parm name="Product" value="Windows Mobile Device" datatype="string" />
<parm name="Removable" value="1" datatype="integer" />
<parm name="LastClient" value="RNDIS" datatype="string" />
<parm name="Dll" value="%CE1%\WM5torage\WM5torage.dll" datatype="string"
translation="install" />
<parm name="InterfaceProtocol" value="80" datatype="integer" />
<parm name="idProduct" value="65535" datatype="integer" />
</characteristic>
</characteristic>
</wap-provisioningdoc>
由上面的代码可以看出,每段代码均以<characteristic>开头,以</characteristic>结束
        
        
        
        
        
查看SETUP.XML文件发现路径会用%CE*% (*为1~19数字) 表示,为方便大家理解,下面给出关于%CE*%的对应路径表:
引用:
                         Plam-size PC 和Pocket PC                                 Smart Phone
%CE1%              \Program Files                                                \Program Files
%CE2%              \Windows                                                     \Windows
%CE4%              \Windows\启动                                              \Windows\StartUp
%CE5%              \My Documents                                             \My Documents
%CE6%              \Program Files\附件                                        未使用
%CE7%              \Program Files\通信                                        未使用
%CE8%              \Program Files\游戏                                        \Program Files\Games
%CE11%            \Windows\“开始”菜单\程序                            Windows\Start Menu\Programs
%CE12%            \Windows\“开始”菜单\程序\附件                    未使用
%CE13%            \Windows\“开始”菜单\程序\通信                    未使用
%CE14%            \Windows\“开始”菜单\程序\游戏                    \Windows\Start Menu\Programs\Games
%CE15%            \Windows\Fonts                                           \Windows\Fonts
%CE17%            \Windows\“开始”菜单                                  \Windows\Start Menu
%CE18%            未使用                                                        <Default Volume>
%CE19%            未使用                                                        \Application Data
%InstallDir%        安装目录,但是必须先指定                             安装目录,但是必须先指定
首先,我们先来看第一段代码:
引用:
<characteristic type="Install">
<parm name="InstallPhase" value="install" />
<parm name="SetupDLL" value="1" />
<parm name="OSVersionMin" value="5.0" />
<parm name="OSVersionMax" value="5.99" />
<parm name="BuildNumberMin" value="0" />
<parm name="BuildNumberMax" value="-536870912" />
<parm name="AppName" value="Thunder WM5torage" />
<parm name="InstallDir" value="%CE1%\WM5torage" translation="install" />
<parm name="NumDirs" value="2" />
<parm name="NumFiles" value="3" />
<parm name="NumRegKeys" value="1" />
<parm name="NumRegVals" value="16" />
<parm name="NumShortcuts" value="1" />
</characteristic>
本段代码定义了安装类型、OS版本号、应用程序名等。“<parm name="InstallDir" value="%CE1%\WM5torage" translation="install" /> ”定义了安装路径,通过之前对路径的描述可知,安装路径为“\Program Files\WM5torage ”。
引用:
<characteristic type="FileOperation">
<characteristic type="%CE1%\WM5torage" translation="install">
<characteristic type="MakeDir" />
<characteristic type="WM5torage.dll" translation="install">
<characteristic type="Extract">
<parm name="Source" value="WM5TOR~1.001" />
</characteristic>
</characteristic>
<characteristic type="WM5torage.exe" translation="install">
<characteristic type="Extract">
<parm name="Source" value="000CAB3F.002" />
<parm name="WarnIfSkip" />
</characteristic>
</characteristic>
<characteristic type="SetupDLL.dll" translation="install">
<characteristic type="Extract">
<parm name="Source" value="SETUPDLL.003" />
<parm name="WarnIfSkip" />
</characteristic>
</characteristic>
</characteristic>
这里将安装包内文件拷贝至安装目录,如“WM5torage.dll ”文件的源文件为安装包内“WM5TOR~1.001 ”文件,“WM5torage.exe ”文件的源文件为安装包内“000CAB3F.002"  ”文件等。
引用:
<characteristic type="%CE11%" translation="install">
<characteristic type="MakeDir" />
<characteristic type="WM5torage.lnk" translation="install">
<characteristic type="Shortcut">
<parm name="Source" value="%CE1%\WM5torage\WM5torage.exe" translation="install" />
</characteristic>
</characteristic>
</characteristic>
</characteristic>
此处生成快捷方式,快捷方式目标为“%CE1%\WM5torage\WM5torage.exe ”。
引用:
<characteristic type="Registry">
<characteristic type="HKLM\Drivers\USB\FunctionDrivers\WM5torage_Class">
<parm name="ActivateFlags" value="0" datatype="integer" />
<parm name="DeviceName" value="DSK1:" datatype="string" />
<parm name="NLEDWrite" value="65535" datatype="integer" />
<parm name="NLEDRead" value="65535" datatype="integer" />
<parm name="idVendor" value="1118" datatype="integer" />
<parm name="ReadOnly" value="0" datatype="integer" />
<parm name="InterfaceSubClass" value="6" datatype="integer" />
<parm name="FriendlyName" value="WM5torage Mass Storage" datatype="string" />
<parm name="bcdDevice" value="0" datatype="integer" />
<parm name="Manufacturer" value="Microsoft" datatype="string" />
<parm name="Product" value="Windows Mobile Device" datatype="string" />
<parm name="Removable" value="1" datatype="integer" />
<parm name="LastClient" value="RNDIS" datatype="string" />
<parm name="Dll" value="%CE1%\WM5torage\WM5torage.dll" datatype="string"
translation="install" />
<parm name="InterfaceProtocol" value="80" datatype="integer" />
<parm name="idProduct" value="65535" datatype="integer" />
</characteristic>
</characteristic>
本段代码告诉安装程序需要在注册表相关位置添加相应键值。非常重要,这就是有些时候采用工具提取了相关文件拷贝至手机并不能运行的原因,因为还需要在注册表添加键值。

对于定制ROM集成软件来说,可以安装上面的setup.xml文件修改文件发放表和添加注册表键值。

[ 本帖最后由 IT边缘人 于 2007-5-28 08:14 编辑 ]

TOP

well done

TOP

支持~
QP智软全国总代理店
淘宝店:http://shop35323450.taobao.com
拍拍店:http://shop.paipai.com/435619142

TOP

强~~~

TOP

这个也能悟出来,真厉害。

TOP

强人,不过我的眼睛看花了
卡布基诺,淡淡的醇香

TOP

TOP

SUPERMAN    SPIDERMAN   IN  OUR  LIFE

TOP

头昏昏啊

TOP

看不懂

TOP

要顶的,从50步到80步

TOP

支持哦~~~

TOP

支持一个

强!专业
有健康,才有将来 安利 纽崔莱NUTRILTE
我的安利销售代理号:360-00035389988

TOP

还是要顶一顶的

TOP

我的CAB文件打不开

我的手机  是多普达C720  台湾产的T-MOBILE版,刷的移动心机版,不知道什么原因,好象这个版本破解不完全,CAB文件无法用资源管理器打开
,提示:不存在与......相关的应用程序,请首先运行应用程序,然后在应用程序内打开此文件.
恳求各位大哥小弟帮帮我,如何解决!

TOP

就喜欢高手,研究一下,支持楼主

TOP

很好,希望lz分享更多经验

TOP

头晕

TOP

需要研究一下

TOP

一头雾水!

TOP

 39 12
发新话题