自己动手替换MSI安装程序中的文件

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_enu.msi”,选择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文件的文件名列表,从中很轻易的就可以分辨出lang.cab(注意,文件名是不包含我们在列表中看到的“#”的)就是我们需要的包含语言文件的CAB压缩包。确定了文件名后,选择File菜单中的Save As命令,将当前打开的MSI文件另存为chs.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文件就行了。

  还有一点要提醒大家,所有的操作都需要在一个FAT32格式的分区上面进行,如果是在NTFS格式的分区上面,新生成的MSI文件可能会出现问题而导致无法正常安装。

0

评论0

请先

没有账号? 注册忘记密码?

社交账号快速登录

微信扫一扫关注
扫码关注后会自动登录网站
普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress