某些情况下我们需要对软件的安装程序包进行修改,替换其中的部分文件,也就是所谓 Repack。
本文讨论采用.CAB压缩包的安装程序的拆解打包,主要是搜集工具,使用方法除了Install Shield的高版本描述稍多外,其他均为图形界面程序,所以描述相对简略,也没有截图(主要是因为我比较懒*^_^*)。
以下内容均系本人日常实践(Repack过的软件有Symantec Ghost 7.5 中文版、Dr.eye 2005 专业版、智能狂拼III.3 专业版等),草草归纳,不当之处,敬请指正。
CAB 格式分类
·LZCAB 采用LZX编码压缩的CAB包,一般见于 Freeware
·MSCAB 微软格式的CAB包,常见于微软的程序,Symantec Ghost 7.5 安装程序也采用此格式。
·ISCAB InstallShield制作的安装包中使用,特征是同时存在一个.hdr文件
LZCAB 拆解
·解压
使用WinRAR即可解压
·压缩
使用CabPack打包,Compression Options选择 LZX
MSCAB 拆解
·解压
使用WinRAR即可解压
·压缩
使用CabPack打包,Compression Options选择 MSZIP
ISCAB 拆解
InstallShield 的数据包一般格式为 data1.cab,同时有一个 data1.hdr,用于描述文件分组定义,如果文件较多,还会存在一个 data2.cab ,实际上是分卷压缩包。
ISCAB 6.0 以下的版本可以使用 ZIPSCAN 解压,也可以使用 WinPack 进行文件的提取和替换、添加。
高版本的 ISCAB 可使用 InstallShield 中提供的命令行工具进行操作,以InstallShield X为例,安装InstallShield X后,从安装目录下的./system中提取以下文件:
代码 (双击代码复制到粘贴板)
ISCAB.exe
ISTools.dll
MediaBuild40.dll(MediaUI.dll)
之后可以脱离 InstallShield 运行。
* 为省去安装 InstallShield 的麻烦,我已将提取的文件打包为 iscabX.zip 作为附件上传。
·首先要提取安装包结构信息,使用命令行
ISCAB data1.cab -lx -iCAB.INI
将信息输出到 CAB.INI 文件,大致如以下的格式:
代码 (双击代码复制到粘贴板)
[ISCAB Info]
Product=ISCAB
Version=2.0
[Dat Files]
File1="Setup.dll"
...
·如果要从包中移除某些文件或者替换文件(也要先移除,然后再重新加入),应编辑导出的 CAB.INI 文件,仅保留头部描述段([ISCAB Info])和要移除的文件描述(注意,文件所在的组描述应保留,如 [Dat Files]),将编辑后的文件另存为 DEL.INI,使用命令行
ISCAB data1.cab -r -iDEL.INI
·如果要向包中添加文件,应将相应文件放置在当前目录下,同时和 data1.cab 同目录下的 setup.inx,setup.ini 等文件都必须存在。编辑导出的 CAB.INI 文件,仅保留头部描述段([ISCAB Info])和要加入的文件描述(注意,文件所在的组描述应保留,如 [Dat Files]),将编辑后的文件另存为 ADD.INI,使用命令行
ISCAB data1.cab -a -iADD.INI
好了,安装文件打包完成了,就像“原装”的一样,简单吧?