生成具有目录结构的CAB文件

来源:互联网 发布:中国铁矿石进口数据 编辑:程序博客网 时间:2024/06/05 18:25

一、使用makecab.exe生成CAB文件

在微软签名的过程中有时需要提交.cab格式的文件,该格式是使用微软的makecab.exe或Cabarc.exe来进行生成的。

这里主要介绍的是使用makecab.exe来生成cab文件的过程。直接打开一个CMD窗口即可调用makecab命令,但需要确保CMD当前的路径是处于C盘下的,不然系统会找不到该命令。

使用makecab可将单个的文件压缩成.cab的格式,但如果当文件的个数超过一个时,就需要一个.txt的文件来将所有需要压缩的文件全部列出,在该.txt文件中各个需要压缩的文件可以是以绝对路径的形式列出,也可以使用相对路径(此时要保证.txt文件与要压缩的文件在同一目录下)。

比如在C:\Users\lishuai\Desktop\abcdefg\submission\目录下有两个文件夹package和symbols,其中package文件夹下有如下文件:

symbols文件夹下有如下文件:

因为需要压缩的文件多于1个,所以需要建立.txt文件来列出所有需要压缩的文件。新建的list.txt文件中应该写入如下内容:

C:\Users\lishuai\Desktop\abcdefg\submission\package\GoodixTouchDriver.inf

C:\Users\lishuai\Desktop\abcdefg\submission\package\GoodixTouchDriver.sys

C:\Users\lishuai\Desktop\abcdefg\submission\package\hidkmdf.sys

C:\Users\lishuai\Desktop\abcdefg\submission\package\kmdfsamples.cat

C:\Users\lishuai\Desktop\abcdefg\submission\package\WdfCoinstaller01011.dll

C:\Users\lishuai\Desktop\abcdefg\submission\symbols\GoodixTouchDriver.pdb

然后使用makecab /f list.txt即可生成.cab文件,该文件将包含上述所有6个文件,但此时需要注意的是这6个文件将同时位于分别位于两个.cab文件中。

 

如果想将submission文件夹下的package和symbols文件夹下的文件都压缩到同一个.cab文件中,那么需要使用以下的命令进行压缩:

makecab /flist.txt /d compressiontype=mszip /d compressionmemory=21

 /d maxdisksize=1024000000 /d diskdirectorytemplate=dd*

/dcabinetnametemplate=dd*.cab 

此时虽然将6个文件都压缩到了一个.cab文件中,但此时原有的目录结构却消失了,也即原先GoodixTouchDriver.inf等5个文件位于package中,GoodixTouchDriver.pdb位于symbols中,但此时所有这6个文件却位于了同一个目录下,也即这样压缩后丢失了原有的目录结构。

 

要想压缩后还保持原有的目录结构的话,则需要对使用的list.txt文件进行更改:

.setDestinationDir=package

C:\Users\lishuai\Desktop\abcdefg\submission\package\GoodixTouchDriver.inf

C:\Users\lishuai\Desktop\abcdefg\submission\package\GoodixTouchDriver.sys

C:\Users\lishuai\Desktop\abcdefg\submission\package\hidkmdf.sys

C:\Users\lishuai\Desktop\abcdefg\submission\package\kmdfsamples.cat

C:\Users\lishuai\Desktop\abcdefg\submission\package\WdfCoinstaller01011.dll

.setDestinationDir=symbols

C:\Users\lishuai\Desktop\abcdefg\submission\symbols\GoodixTouchDriver.pdb

这样之后再运行makecab /f list.txt即可生成具有目录结构的.cab文件。但此时会出现另一个BUG,即压缩后的.cab文件在解压时会出错,因为此时生成的.cab文件中package目录下仅有一个WdfCoinstaller01011.dll文件,而其它4个文件则丢失掉了。

造成这个问题的原因可能是因为文件大小的问题,因为文件大小超过了makecab的一个默认界限,所以导致压缩出错。解决的方法是使用以下命令进行压缩:

makecab /flist.txt /d compressiontype=mszip /d compressionmemory=21

 /d maxdisksize=1024000000 /ddiskdirectorytemplate=dd*

/dcabinetnametemplate=dd*.cab 

这样之后,生成的.cab文件才是正确的,因为上述命令中指定了更大的空间,所以可以正确生成.cab文件。具体也可参照以下网址:

http://blog.csdn.net/mirkerson/article/details/5998321

 

二、使用cabarc.exe生成CAB文件

2.1生成具有目录结构的CAB文件

 先下载cabarc.exe,从http://support.microsoft.com/kb/310618

假设cabarc.exe加压到D:\temp\11111\BIN\目录下

 要把D:\vsc_old目录下的所有文件,包括子文件都添加到cab

 命令如下:

D:\VSC_old>D:\temp\11111\BIN\cabarc-r -p N d:\rr.cab  * 

上述命令中最后的*号一定要注意,必须要加上才可以

2.2 生成可用于签名的CAB文件

在CMD中键入如下命令后:

CABARC -s6144 N c:\test\lodop.cab c:\test\lodop.ocx

该命令执行完毕后,在C:\test目录下会看到新生成的Lodop.cab文件。
在这行命令中,CABARC之后有五个参数值,参数之间用空格分隔,
其中 -s 6144 俩参数表示生成的CAB文件以后可以进行代码签名

0 0
原创粉丝点击