lxl1638 发表于 2010-9-22 18:09:26

[V1.3.2011.313版] PECAB - WinPE驱动文件打包压缩工具 & Yonsm 的 XCAB 增强版

PECAB 是根据 Yonsm 的 XCAB 增强版制作的WinPE驱动文件打包压缩工具,无需 MakeCAB.EXE。

PECAB-V1.3.2011.313
修正微软的SDK头文件 FCI.H 出现的BUG,这个BUG见微软的官方说明:
中文网址:http://support.microsoft.com/kb/174866/en
英文网址:http://support.microsoft.com/kb/174866/zh-cn





由于准备更新 PECMD 的 DEVI 命令支持在 Win7PE 中用无须修改的 INF 驱动文件直接安装三卡驱动,
但驱动组文件(INF、DLL和SYS等)都是位于同一目录,且有些驱动组文件中 INF 文件的排序并非是
第一个(如 ATI 显卡驱动,见图1):



原来的 XCAB 压缩这组文件的排序(XCAB.ddf 的配置定义)是:

.OPTION EXPLICIT
.Set Cabinet=on
.Set Compress=on
.Set CompressionType=LZX
.Set CompressionMemory=21
.Set MaxDiskSize=0
.Set FolderSizeThreshold=2147483648
.Set UniqueFiles=OFF
.Set DestinationDir=
.Set DiskDirectoryTemplate=.
.Set InfFileName=J:\temp\XCAB.inf
.Set RptFileName=J:\temp\XCAB.rpt
.Set CabinetName1=VGA_Test.CAB
"I:\VGA\ATI\amdpcom32.dll" "ATI\amdpcom32.dll"
"I:\VGA\ATI\atidxx32.dll" "ATI\atidxx32.dll"
"I:\VGA\ATI\atiilhag.inf" "ATI\atiilhag.inf"
"I:\VGA\ATI\atiilhag.PNF" "ATI\atiilhag.PNF"
"I:\VGA\ATI\atikmdag.sys" "ATI\atikmdag.sys"
"I:\VGA\ATI\atikmdag.sys.mui" "ATI\atikmdag.sys.mui"
"I:\VGA\ATI\atiumdag.dll" "ATI\atiumdag.dll"
"I:\VGA\ATI\atiumdva.cap" "ATI\atiumdva.cap"
"I:\VGA\ATI\atiumdva.dll" "ATI\atiumdva.dll"
"I:\VGA\ATI\ativcaxx.cpa" "ATI\ativcaxx.cpa"
"I:\VGA\ATI\ativcaxx.vp" "ATI\ativcaxx.vp"
"I:\VGA\ATI\ativdkxx.vp" "ATI\ativdkxx.vp"
"I:\VGA\ATI\ativokxx.vp" "ATI\ativokxx.vp"
"I:\VGA\ATI\ativpkxx.vp" "ATI\ativpkxx.vp"
"I:\VGA\ATI\ativvpxx.vp" "ATI\ativvpxx.vp"
"I:\VGA\nv\nvd3dum.dll" "nv\nvd3dum.dll"
"I:\VGA\nv\nvlddmkm.sys" "nv\nvlddmkm.sys"
"I:\VGA\nv\nvwgf2um.dll" "nv\nvwgf2um.dll"
"I:\VGA\nv\nv_LH.inf" "nv\nv_LH.inf"
"I:\VGA\nv\nv_LH.PNF" "nv\nv_LH.PNF"


WinCab打开这个驱动包也发现同一目录中 INF 文件不是排在第一个(见图2,与 XCAB.ddf 文件排序一致):



这样 PECMD 的 DEVI 命令检查驱动与硬件是否匹配时可能要解压出多个文件才解压出 INF 文件,执行效率、
内存使用和磁盘空间使用都不理想,所以打算完善 XCAB,在压缩包内,将同一目录中的 INF 文件排在前面,
PECMD 的 DEVI 命令解压驱动组时,第一个解压出 INF 文件,加快驱动与硬件的匹配检查,提高安装速度。

经过完善后,压缩包内同一目录中,所有的 INF 文件将排在前面,解压时第一个被解压出来(见图3):



完善后 XCAB.EXE 的文件体积不但不增,反而减小了,增强版的 XCAB.ddf 配置定义是:

.OPTION EXPLICIT
.Set Cabinet=on
.Set Compress=on
.Set CompressionType=LZX
.Set CompressionMemory=21
.Set MaxDiskSize=0
.Set FolderSizeThreshold=2147483648
.Set UniqueFiles=OFF
.Set DestinationDir=
.Set DiskDirectoryTemplate=.
.Set InfFileName=J:\temp\XCAB.inf
.Set RptFileName=J:\temp\XCAB.rpt
.Set CabinetName1=VGA.CAB
"I:\VGA\ATI\atiilhag.inf" "ATI\atiilhag.inf"
"I:\VGA\ATI\atidxx32.dll" "ATI\atidxx32.dll"
"I:\VGA\ATI\amdpcom32.dll" "ATI\amdpcom32.dll"
"I:\VGA\ATI\atiilhag.PNF" "ATI\atiilhag.PNF"
"I:\VGA\ATI\atikmdag.sys" "ATI\atikmdag.sys"
"I:\VGA\ATI\atikmdag.sys.mui" "ATI\atikmdag.sys.mui"
"I:\VGA\ATI\atiumdag.dll" "ATI\atiumdag.dll"
"I:\VGA\ATI\atiumdva.cap" "ATI\atiumdva.cap"
"I:\VGA\ATI\atiumdva.dll" "ATI\atiumdva.dll"
"I:\VGA\ATI\ativcaxx.cpa" "ATI\ativcaxx.cpa"
"I:\VGA\ATI\ativcaxx.vp" "ATI\ativcaxx.vp"
"I:\VGA\ATI\ativdkxx.vp" "ATI\ativdkxx.vp"
"I:\VGA\ATI\ativokxx.vp" "ATI\ativokxx.vp"
"I:\VGA\ATI\ativpkxx.vp" "ATI\ativpkxx.vp"
"I:\VGA\ATI\ativvpxx.vp" "ATI\ativvpxx.vp"
"I:\VGA\nv\nv_LH.inf" "nv\nv_LH.inf"
"I:\VGA\nv\nvlddmkm.sys" "nv\nvlddmkm.sys"
"I:\VGA\nv\nvwgf2um.dll" "nv\nvwgf2um.dll"
"I:\VGA\nv\nvd3dum.dll" "nv\nvd3dum.dll"
"I:\VGA\nv\nv_LH.PNF" "nv\nv_LH.PNF"


增强版 XCAB 不修改原来 XCAB 的任何版本信息,只在窗口标题加多了"by Yonsm"与示区别。
XCAB 现在是调用 MakeCAB.EXE 来压缩文件的,如有可能,本人将做一个调用 Cabinet.DLL 来实现压缩的 XCAB。

[ 本帖最后由 lxl1638 于 2011-3-14 14:49 编辑 ]

heanv 发表于 2010-9-22 18:22:25

中秋礼物,老九幸苦了。也祝老九中秋快乐。

66369 发表于 2010-9-22 18:29:08

原帖由 heanv 于 2010-9-22 18:22 发表 http://bbs.wuyou.net/images/common/back.gif
中秋礼物,老九幸苦了。也祝老九中秋快乐。


中秋礼物.谢谢.

yj0176 发表于 2010-9-22 18:31:54

紧跟楼上,谢谢老九了。中秋快乐。

[ 本帖最后由 yj0176 于 2010-9-22 22:24 编辑 ]

dvd008 发表于 2010-9-22 18:38:28

调用 Cabinet.DLL ,
能在XP,03里面使用吗?

2010dgnanhua 发表于 2010-9-22 18:41:54

感谢楼主分享!
       中秋节快乐!

网虫2008 发表于 2010-9-22 19:10:38

先顶帖子再下载

感谢加敬佩呀,,,

下载备用于我的PE更新,,

secowu 发表于 2010-9-22 20:39:38

中秋快乐。。。。。。。。

ziyun 发表于 2010-9-22 21:26:50

前辈们,后辈们,一起中秋快乐

假大空 发表于 2010-9-22 21:56:01

又是一年中秋,年华老去,愿无忧坛友永远快乐
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: [V1.3.2011.313版] PECAB - WinPE驱动文件打包压缩工具 & Yonsm 的 XCAB 增强版