一些产品打包发布时希望把cab文件注入msi文件或者替换msi里的cab文件,我前段时间做了相关的工作,与大家分享下。
软件准备:Orca,msidb,cabarc.
首先运行Orca,打开目标msi,然后工具-〉选项-〉数据库 把“每次保存一个数据库时生成唯一的程序包代码”和“‘另存为’时复制嵌入的流”选上。然后另存为一个新的msi文件,可以任意命名。
新建一个磁盘,格式设置为FAT32,然后把msidb.exe,cabarc还有刚才保存的新msi都放进新建的磁盘,
点击开始菜单,选择运行命令,在运行窗口中输入“cmd”并选择确定,打开一个命令提示符窗口,在其中一次执行下面的操作:
msidb –x lang.cab –d chs.msi ——从chs.msi中提lang.cab
md files ——建立一个空白文件夹
expand lang.cab –F:* files ——将lang.cab解压到files文件夹
删除掉lang.cab,然后将网上下载的中文语言文件全部覆盖到files文件夹中,然后继续在命令提示符中执行:
cabarc –m LZX:21 –r N lang.cab “files\*” ——将files目录中的所有文件重新压缩为lang.cab
msidb –k lang.cab –d chs.msi ——清除掉chs.msi文件中的lang.cab
msidb –a lang.cab –d chs.msi ——将新生成的lang.cab重新打包进chs.msi
至此,就完成了所有的修改操作,我们可以执行新的MSI安装程序来将软件安装到系统中了。
如果是上面提到过的第二种方式发布的MSI安装程序,就可以省掉所有的msidb操作,直接重新打包CAB文件就行了。