分享
 
 
 

制作符合微软标准的CAB文件

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

对于WindowMobile 上面的程序,微软有一个很详细的要求文件“Designed for WindowsMobile™ Software Application Handbook for Smartphone”。

这份文件大体来说还是很清楚的,里面把程序的方方面面都说得很清楚,但是有关参数NoUninstall地方是非常费解的。

首先根据:

Required: Packages Must Have Setup XML (Smartphone WAP Provisioning)

The Setup XML is generated automatically by CABWizSP. If you wish to create your CAB

manually, you will also have to create this Setup XML manually.

我们可以通过CABWizSP和自己写的一个inf文件生成一个cab文件。

命令如:cabwizsp d:\gbcab\fordopod.inf /dest d:\gbcab /cpu ARM4

inf文件的格式可以参照:

http://msdn.microsoft.com/library/en-us/wcesetup/html/_wcesdk_Creating_an_inf_File_for_the_CAB_Wizard.asp?frame=true

但是一看第二个要求:

Required: Provisioning XML File Must Include Install CSP XML with NoUninstall

The provisioning XML file should include an Install CSP section at the start of the

document, just below the <wap-provisioningdoc> element. This Install CSP XML should

also include the NoUninstall parm.

麻烦了!

CABWizSP生成的cab文件中没有NoUninstall参数!

从微软的资料来看,NoUninstall参数是为了使应用程序在安装的时候不生成任何卸载相关的信息而设置的,如果cab文件的_setup.xml中如果没有这个参数的话,则默认是生成卸载信息的,如果_setup.xml中有该参数,而且值为1的话,那么安装包安装之后则不回生成任何的卸载信息,那么在设置的“删除程序”里面是找不到你的安装的cab。

查资料后,你会发现CABWizSP是可以带一个参数/nouninstall, 不过使用过这个参数后你会发现,加入这个参数CABWizSP是可以生成一个带NoUninstall参数的_setup.xml,但是实际上,这个参数的值为1,导致你的应用程序不能卸载!

不能卸载的程序显然不能通过测试!

因为微软有这样的要求:

Required: Application Must Install/Uninstall Correctly

最后只好把CABWizSP生成的cab文件的内容解出来(windows自己就可以解压,当然你也可以使用winrar)。把里面_setup.xml文件修改好(在<characteristic type="Install">后面加入如下:<parm name="NoUninstall" value="0" />),然后在使用makecab来重新打包文件,当然可能你还需要cabsigner来对你的cab文件进行签名。

使用makecab之前,你需要生成一个有以下内容的ddf文件:

.Set Cabinet=ON

.Set Compress=OFF

.Set CabinetFileCountThreshold=0 ; no files per cabinet threshold

.Set FolderFileCountThreshold=0 ; no files per folder threshold

.Set FolderSizeThreshold=0 ; no folder size threshold

.Set MaxCabinetSize=0 ; no max size for the cabinet

.Set MaxDiskFileCount=0

.Set MaxDiskSize=0

.Set ReservePerCabinetSize=6144 ; for web signing

.Set ReservePerDataBlockSize=0

.Set ReservePerFolderSize=0

.Set UniqueFiles=OFF

.Set DiskDirectory1=d:\gbcab

.Set DiskLabel1=Setup

;

; to be filled out by the CABWIZ.exe program

;.Set InfFileName=

;.Set RptFileName=

;.Set CabinetName1=

;

; followed by the list of files

.Set InfFileName=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\wiz4EC.tmp

.Set RptFileName=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\wiz4ED.tmp

.Set CabinetName1=yourtarget.cab

.Set ReservePerFolderSize=32

.Set Compress=on

;这下面是_setup.xml文件的路径和setup文件的路径

;格式为: 源文件全路径 _setup.xml里面对应的文件名

d:\gbcab\_setup.xml _setup.xml

D:\gbcab\Setup.dll 000Setup.999

.New Folder

;这下面是你的文件的列表

;格式为: 源文件全路径 _setup.xml里面对应的文件名

D:\gbcab\eb_en.ebd 000eb_en.004

D:\gbcab\eb_sc.ebd 000eb_sc.003

然后使用命令:

makecab /F d:\gbcab\your.ddf

你就可以生成yourtarget.cab;然后就可以使用cabsigner对你自己的cab进行签名。

Designed for WindowsMobile™ Software Application Handbook for Smartphone 还对其他的方面提出了要求,我感觉我们还需要注意的是:

1. Dll文件只能放入到\storage\windows目录或者程序本身的目录下(当然我只是针对非rom程序)。

2. \storage\windows和\windows目录只能放置dll。

3. 程序的目录必须在\storage\program file下面。

4. 程序必须能够正常安装卸载,请注意:如果你的程序总是保持一个或者多个你通过cab文件安装上去的文件的可写句柄或者FILE *,你的程序是不能够正常卸载的,但是只读的没有问题。

5. 程序卸载之后应该能够自动清除所有文件(包括程序安装之后才产生的文件)和注册表项。

6. 界面上必须遵循Smartphone的风格,如右键菜单,spinner控件等等。

7. 任何程序都不能阻止用户接电话。

其它部分就不多说了,大家仔细对照Designed for WindowsMobile™ Software Application Handbook for Smartphone就是了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有