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

CAB打包工具使用与实战指南 CAB(Cabinet)是微软推出的一种高效归档压缩格式,专为Windows系统组件分发设计,具备高压缩率、支持数字签名和内核级集成能力。其结构采用区块式存储,支持多种压缩算法(如MSZIP、LZX),可实现文件去重与跨卷分割。# 典型CAB文件结构示意仅仅将DLL复制到目标路径并不足以使其可用,许多COM组件或ActiveX风格的DLL还需要调用进行注册。这就涉及到安装过程中的命令执行控制。MakeCab 支持三种压缩算法,性能与压缩率各不相同:算法ID压缩率。 阅读详情

对于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就是了。

制作CAB包的所有资源文件 makecab.exe工具。提供了该打包工具,位于CAB目录下,共包含makecab.exe、cab.ddf、installer.inf和makecab.bat四个文件,其中cab.ddf和installer.inf文件需要简单说明下。 cab.ddf文件定义了CAB文件的打包行为,内容包括打包参数,打包内容项以及输出文件等。需要指出的是,使用C#开发的ActiveX控件CAB包中需要包含MSI文件和installer.inf安装文件两部分。cab.ddf文件内容如下: 立即下载

相关推荐

CAB文件制作工具 界面版

CAB文件制作工具 CAB文件制作的GUI

CAB无法连接到远程计算机,当您使用远程桌面连接 (RDC) 7.0 连接不正确地更新远程应用程序应用程序中的组合框项...

修补程序信息可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。此修复程序仅适用于遇到本文中描述的问题的系统。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。如果此修复程序可供下载,则在此知识库文章的顶部会出现“修补程序下载可用”部分。如果未显示此部分,请与 Microsoft 客户...

weixin_42584586的博客 214

SAP 销售订单及发票 利润中心替代 Userexit出口 配置及程序

在跨公司销售业务中,跨公司销售订单的发票时无法从销售订单中将利润中心带到发票中,所以在跨公司的发票创建过程中需要配置出口来获取对应销售订单行项目的利润中心。 事务代码: 0KEM 配置步骤: 1、创建一个新的替代 2、创建一个步骤 3、维护一个先决条件,比如针对于特定工厂 PCASUB-VKBUR = '0001' 4、选择替代程序FORM,FORM必须为指定程序中存在的FORM名 5、编辑替代程序FORM 实现效果: 在程序FORM中打上断点 ...

李威威wiwi的博客 5069

Windows系统下自带压缩文件工具之makecab

在内网渗透时,当没有rar、7z等压缩工具时候,拖取文件的时候为了防止流量过大,又必须压缩把文件压缩。当然你可以自己上传一个压缩工具。Windows自带制作压缩文件工具makecb你可以了解哈。 压缩单文件 makecab 1.doc 1.zip 至于是压缩成zip、rar、cab看你个人喜好 解压命令 expand 1.zip 1.doc 压缩一个文件夹下的多个文件 1、先用dir...

qq_38306648的博客 1662

车道线检测1.0(Python+Opencv基础版)

车道线检测是指在道路上自动检测和识别车道线的过程。车道线是道路上的标记,用于指示车辆行驶的方向和位置。 通过对车道线进行检测和识别,自动驾驶和智能驾驶系统可以实现车辆的自动导航、车道保持、车道偏离警告等功能。

Dream_orz的博客 4264

PX4与ROS协同仿真:从键盘控制到无人机自主飞行

本文详细介绍了如何搭建PX4与ROS协同仿真环境,实现从键盘控制到无人机自主飞行的完整流程。通过XTDrone项目整合PX4飞控、ROS通信框架与Gazebo物理引擎,逐步讲解环境配置、键盘控制实现原理,并深入剖析了迈向Offboard模式实现自主飞行的核心代码与数据流,为无人机算法开发与测试提供了安全的仿真沙盒。

weixin_29169899的博客 498

驱动签名步骤20240102更新

1. 首先下载驱动程序 https://www.itrus.cn/service_view_1322.html/ 这里选择http://www.itrus.cn/soft/SafeNetAuthenticationClient-x64-10.8.msi64位版本并安装 2 打开iTrusSignTool.exe 选择证书管理,点击导入pfx证书 3.点击签名规则 新建2个规则 4.装备 ddf文件 sys文件 inf文件 5.签名规则先选双签规则为默认 ...

HeroRazor的专栏 5823

光通信仿真入门:手把手教你用VPI和Matlab搭建第一个联合仿真系统(含避坑指南)

本文详细介绍了如何使用VPI和Matlab搭建光通信联合仿真系统,涵盖软件配置、链路搭建、数据交互等关键环节,并提供常见问题的解决方案。特别适合初学者快速掌握光通信仿真技术,避免常见错误,提升仿真效率。

weixin_28733637的博客 378

如何创建并签署CAB文件

下面是创建签署CAB文件的步骤 : 1 获得一个软件出版商证明书2 创建 CAB 文件 3 签署 CAB 文件 4 将签署过的 CAB文件嵌入一个Web页一 、获得一个软件出版商证明书在签署文件之前,您需要有一个软件出版商证明书(SPC)。为此,您必须向证书发放机构(Certification Authority)提出申请。在申请过程中,您必须生成一个密匙对,并向证书发放机构提供证明信息。有关如何

uncompleted... 2485

【信创-k8s】银河麒麟V10国防版+鲲鹏/飞腾(arm64架构)在线/离线部署k8s1.30+kubesphere

银河麒麟作为国家核高基专项的重要成果,国防版凭借其卓越的安全性和可靠性,已成为军工领域的首选操作系统。之前我们在适配麒麟V4国防版的过程中已发现诸多安全性要求,而麒麟V10国防版在安全防护等级上又达到了更高的级别。本文将主要演示离线部署,因为军工项目基本不会出现联网场景。即使在线,也可以按离线方式部署,且离线部署由于有私有仓库,不会存在镜像获取不到和丢失情况。

jiaworld的博客 730

V90伺服 EPOS模式下回原(详细配置+SCL源代码)

/ 输出上限 100.0%rSetPoint : Real;// 设置目标值工程量。// 通道转换参考值。Td : Real;

RXXW_Dor的博客 2665

DDF文件与CAB压缩:Microsoft隐藏的系统工具揭秘

本文深入解析了Windows系统中DDF(Diamond Directive File)文件与CAB压缩的隐藏功能,揭示了Microsoft这一强大系统工具的应用价值。通过详细的指令解析和实战案例,展示了DDF文件在软件分发、补丁部署等场景下的高效应用,特别适合系统管理员和开发者提升工作效率。

water的专栏 806

解锁IPG Photonics SmartWeld系统,开启焊接新时代

SmartWeld 系统是 IPG Photonics 研发的一款先进的激光焊接解决方案,它隶属于自动化激光焊接系统类别 ,但却凭借一系列创新技术和独特设计,在众多同类产品中脱颖而出。该系统基于 IPG 在光纤激光技术领域的深厚积累,融合了先进的光束控制、智能监测和自动化控制等技术,旨在为工业制造提供高效、精准且稳定的焊接工艺。与传统激光焊接系统相比,SmartWeld 系统的独特之处首先体现在其光束控制技术上。它能够精确地调整激光束的能量分布、光斑大小和形状 ,以适应不同材料和焊接工艺的需求。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1430

Microsoft.Net中数字签名技术

概 述:本文以Microsoft.Net中创建签名的CAB文件为例,说明怎样创建签名文件,从而使你的代码可以安全的在INTERNET上发布。希望能起到抛转引玉的作用。 关键字:数字签名,ActiveX,CAB 一、 Internet安全与数字签名 对于 Internet 应用程序的开发人员和用户而言,代码安全是一个主要问题。有下列风险:恶意的代码、被篡改的代码和来自未知站点或作者的代码。

xergnvij 1031

【即插即用模块】Mamba篇 | CVPR 2025 | MaIR:新型Mamba扫描方式+通道混洗注意力,全任务涨点!

MaIR是一种新型图像恢复模型,通过嵌套S形扫描策略(NSS)和序列混洗注意力(SSA)改进传统Mamba方法。NSS采用条纹区域划分和S形扫描路径,既保留图像局部性又维持空间连续性;SSA通过通道洗牌和门控机制增强特征聚合。该模块创新性地融合多路径选择性扫描、深度卷积和注意力机制,在保持O(N)计算复杂度的同时,显著提升超分辨率和去噪等任务的性能表现(PSNR提升0.2-0.5dB)。代码实现包含特征洗牌、组卷积等关键操作,适用于高分辨率视觉任务,可作为即插即用组件替代传统自注意力模块。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1167

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

怎样制作数字签名

怎样制作数字签名1、 获得软件发行证书(测试)一、找到或下载signcode.exe、makecert.exe和cert2spc.exe这三个程序,如果装了VS.NET的话,可以在其目录下找到,或者去微软网上下载也可以的。二、:创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。输入makecert -sk lyl -n "CN=johnlya" c:/lyl.cer。就会在你

实时数据库的专栏 7419

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

制作数字证书 发布ActiveX控件

1、 获得软件发行证书(测试)一、找到或下载signcode.exe、makecert.exe和cert2spc.exe这三个程序,如果装了VS.NET的话,可以在其目录下找到,或者去微软网上下载也可以的。二、:创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。输入makecert -sk lyl -n "CN=johnlya" c:/lyl.cer。就会在你的C:生成lyl.c

Welcom to zougangx's blog 1806

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C# winFrom 制作、打包、签名、发布Activex全过程

注:转自园中http://www.cnblogs.com/still-windows7/p/3148623.html 一、前言 最近有这样一个需求,需要在网页上面启动客户端的软件,软件之间的通信、调用,单单依靠HTML是无法实现了,因此必须借用Activex来实现。由于本人主要擅长C#,自然本文给出了用C#实现的范例,本文的预期效果是有一定Winform基础的人可都轻松...

316

Microsoft.Net中数字签名技术介绍

http://www.zxbc.cn/html/20070818/26220.html 概  述:本文以Microsoft.Net中创建签名的CAB文件为例,说明怎样创建签名文件,从而使你的代码可以安全的在INTERNET上发布。希望能起到抛转引玉的作用。关键字:数字签名,ActiveX,CAB 一、 Internet安全与数字签名对于 Internet 应用程序的开发人员

yeraneom的专栏 292
下一篇: ARM随笔
chenbinghui
博客等级 码龄24年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值