admin管理员组

文章数量:1535376

2024年4月22日发(作者:)

MSI是一种常见的Windows软件安装程序的文件格式,它最基本的部分实际上

就是对安装程序的一个描述,包含了安装信息数据库,内容涉及安装界面、使用

的文件、快捷方式、注册表、反安装信息等等。

软件在安装后常常会推出一些修正或升级补丁,在我们重新安装程序的时

候,就需要自己重新把这些补丁文件复制到程序的安装目录里面才能使用。其实

我们可以自己动手把补丁文件都替换到安装程序里面,让安装、修补一气呵成,

免去手动升级的麻烦。

对于安装时所使用到的文件,MSI通常有3种方式来进行处理:

1、文件不经过打包就直接随MSI安装程序文件发布。

2、文件打包压缩成CAB文件后随MSI安装程序文件发布。

3、文件打包压缩成CAB文件后再注入到MSI安装程序文件中发布。

很少有程序会以第一种方式来发布,第二种和第三种方式使用的比较多。修

改第二种和第三种方式的MSI安装程序的方法基本相同,只是因为第三种方式的

CAB文件是包含在MSI文件内的,所以在向CAB文件中替换文件前后分别多出了

从MSI文件提取CAB和向MSI文件中注入CAB的过程。

下面我们就举例来说明如何修改以第三种方式发布的MSI安装程序。

我们要修改的是ESET NOD32 Antivirus 3.0,这个新版本的防病毒软件发

布已经半个多月了,官方还没有发布简体中文版,而网上已经有了网友汉化的中

文语言文件,我们所要做的,就是把语言文件替换到原版安装程序中,让程序安

装以后就是中文版,不需要我们再去进行汉化。

在进行修改之前,我们先要准备好微软提供的修改所需要的开发工具软件:

orca、msidb和cabarc,没有它们,我们就无法完成后面的任何操作。

首先运行orca,用它打开我们所要修改的MSI安装文件

“eav_nt32_”,选择Tools菜单中的Options命令,切换到Database

页,将“Generate a unique Package Code each time a database is saved.”

和“Copy embedded streams during 'Save As'.”钩选并关闭Options对话框。

在左侧窗格中选中Media,查看右侧窗格中cabinet栏中的值,这些就是MSI文

件中所包含的所有CAB文件的文件名列表,从中很轻易的就可以分辨出

(注意,文件名是不包含我们在列表中看到的“#”的)就是我们需要的包含语

言文件的CAB压缩包。确定了文件名后,选择File菜单中的Save As命令,将

当前打开的MSI文件另存为。

点击开始菜单,选择运行命令,在运行窗口中输入“cmd”并选择确定,打

开一个命令提示符窗口,在其中一次执行下面的操作:

msidb –x –d ——从中提

md files ——建立一个空白文件夹

expand –F:* files ——将解压到files文件

删除掉,然后将网上下载的中文语言文件全部覆盖到files文件

夹中,然后继续在命令提示符中执行:

cabarc –m LZX:21 –r N “files*” ——将files

目录中的所有文件重新压缩为

msidb –k –d ——清除掉文件中的

msidb –a –d ——将新生成的重新

打包进

至此,就完成了所有的修改操作,我们可以执行新的MSI安装程序来将软件

安装到系统中了。

如果是上面提到过的第二种方式发布的MSI安装程序,就可以省掉所有的

msidb操作,直接重新打包CAB文件就行了。

还有一点要提醒大家,所有的操作都需要在一个FAT32格式的分区上面进

行,如果是在NTFS格式的分区上面,新生成的MSI文件可能会出现问题而导致

无法正常安装。

本文标签: 文件安装运行方式