首页 > 单独文章 > 正文

用Orca编辑MSI文件来定制自己的安装文件

时间:2008-08-22 07:58:01 作者:officeba 【认证】

     MSI格式的安装包是很常见的一种安装程序,但有的MSI安装包对安装条件做了一些限制,使得有些系统上无法顺利的安装这个软件。虽然作者的限制总是有一定道理的,但有时候却给我们带来了一些麻烦。下面我们以修改卡巴斯基杀毒软件MSI安装包让它能安装在Server2003上为例子,介绍如何修改MSI安装包的安装条件。

     一、牛刀小试:让卡巴斯基装到Server2003上

     众所周知,服务器版的操作系统无论在稳定性还是资源占用上都比消费级别的XP、Vista要好一些,为此也吸引了很多用户转向Server2003/2008。但服务器操作系统的兼容性并不是很好,例如常用的卡巴斯基(KAV/KIS)都不能装在服务器操作系统上,只能找专门的服务器版本;给很多朋友带来了不便。



图1、安装出错信息

     这里我们需要用到一个叫做Orca的小软件,它来源于微软的SDK.它是专门用来修改MSI安装文件表数据的软件。安装后,在MSI文件那里点右键,选择“Edit With Orca”就可以调用Orca编辑MSI文件的表数据了。我们以卡巴斯基反病毒软件7.0.1.325中文版为例子进行说明。

     第一步:运行卡巴安装程序,提示“应用程序无法安装,当前操作系统不支持”。

     第二步:用Orca打开kav.sch.msi,找到以下字段并将整行删除。删除方法为:在要删除的行上点右键,选择“Cut Row(s)”。
 
 LaunchCondition
 Condition
 MsiNTProductType=1
 CustomAction
 Action
 ErrorIncompatibleOSShow

     也许你会问,我如何才能知道该删除哪些字段呢?请往下看。

     方法归纳



图2 用Orca编辑kav.sch.msi



图3、Orca操作方法

     看了前面的实战过程,当安装软件碰到拦路虎的时候,我们可以:

     1、 根据需要直接修改特殊的字段,例如Registry表就定义了需要写入注册表中的信息、LaunchCondition表定义了安装程序必须要满足的要求(重要);找到这些字段并修改/删除它就可以解决问题了。

     要想详细了解MSI文件中各个表或者字段的详细含义,可以安装Windows Installer SDK,在帮助文件(文件名:Msi.chm)的Installer Database\Installer Database Reference\Database Tables中有详细的解释。当然,帮助文件是全英文的。SDK下载地址:
 http://www.microsoft.com/downloads/details.aspx?FamilyID=e96f8abc-62c3-4cc3-93ad-bfc98e3ae4a3&DisplayLang=en

     2、无敌大法。其实,有一个万能的办法,就是把弹出提示框的关键字,例如上文卡巴的“当前操作系统”作为关键字搜索,把找到的行删除,基本上就可以安装了。不过为了保险起见,还是改一条测试一下,以免删多了。

     二、让安装文件更加个性——定制安装文件的进阶应用

     1.设置有趣且个性的报错提示

     修改安装包其实不只是修改安装条件而已,还可以修改提示的文字、直接输入序列号等等。修改提示文字很好办,找到特定的字段或者使用搜索功能找到想替换的字符串手动修改即可。例如卡巴安装提示出错“因为错误安装过早结束”,我想改掉它。

     第一步:用Orca打开msi文件,选择Edit→Find,输入“因为错误安装过早结束”,找到字段Control→FatalError。

     第二步:修改这个项目的Text,例如修改为“你人品太差,安装程序罢工啦!”,选择保存。

     修改后,当程序再次出错的时候,就提示如图4。

图4、修改提示字符的效果

     2.让安装文件自动填写序列号

     添加序列号很实用,省去了记录序列号的麻烦。以金山词霸2005为例子,添加安装序列号:

     第一步:用Orca打开msi文件,定位到Control表;

     第二步:点击“Control”关键字,对这个列按字符大小(A-Z)排序;在Control列中找到SerialNumber项,修改其对应的TEXT的值;将原来中的?改成对应的序列号。下次安装程序的时候,就不再需要输入序列号了。



图5、添加序列号

     小贴士:免去安装文件中输入用户名的烦恼

     同样的,在Control表中,把NameEdit项目的Type修改为Text,然后把Text值修改为你喜欢的用户名,那么安装程序的时候可以不用输入用户名了。



图6:这下安装省事了

     3.增加或删除安装文件的一些启动选项

     在一些安装文件中有是否添加到随开机启动的这类的选项,我们也可以在安装文件中对其进行修改和定制。金山词霸2005安装有几个选项,例如“在快速启动中添加金山词霸2005的快捷方式”,默认是选中的。如果要取消,可以这么干:

     第一步:用Orca打开msi文件,定位到Control表。

     第二步:在Text列中找到“在桌面上添加金山词霸 2005 的快捷方式”,记下这个项的Property值为:OPTIONS_SHORTCUT_QUICKLAUNCH,Type(类型)为:CheckBox。

     第三步:搜索“OPTIONS_SHORTCUT_QUICKLAUNCH”,把除了第二步找到的那一行外的行全部删除,这样安装的时候就不会选上这个内容了。

     有部分程序,直接到CheckBox表中,修改项目对应的Value值就可以了。但因为各个msi安装文件存在差异性,不一定修改这个位置或者修改不一定有效,要具体问题具体分析。

     修改安装条件使应用程序安装的基础条件是这个程序支持本操作系统(一般来说大部分程序兼容性都不错),假如软件官方网站没有做出详细说明,也可以根据信息推断。例如某软件支持X64的Vista,因为Vista和Server2008基于同样的核心源代码,那么它(基本上)也是可以在Server X64的系统上工作的。但是要注意,有的标明只支持32位系统的软件则不一定能在64位系统中使用,尤其是那些使用了驱动技术的软件(Ramdisk软件就是典型)。

     此外使用了驱动的软件,例如杀毒软件之类的,都需要经过测试才能确认能否在服务器系统上使用。有的版本的杀毒软件会导致蓝屏,例如卡巴KAV7.0.0.125容易蓝屏而7.0.1.325就稳定些。除了修改安装条件外,还可以考虑使用“打包组”重新制作的安装程序,或者干脆找绿色版。

     这篇文章对MSI文件的玩法开了一个头,大家要是感兴趣,可以研究MSI的更多的玩法,例如添加注册表项、删除某个安装界面等等。

     编辑点评:除了前面介绍的Orca软件能够对MSI安装文件进行定制外,我们还可以使用eXeScope这软件对exe的安装文件进行定制,而且操作也并不并Orca使用起来复杂,而且不光是安装文件,连一些直接运行文件也能定制,如果有兴趣请留意近期的晋级大本营需相关内容。

     小贴士:.exe的安装文件如何定制?
     其实现在不少软件的安装包都是msi格式的,有些exe格式的安装文件也会在安装过程中释放msi安装包。可以在安装失败后(有的时候安装失败会自动删除临时文件,所以需要在安装过程中下手),在资源管理器的地址栏中输入%temp%并回车,进入临时文件夹,一般在某个子文件夹下都能找到msi安装包,如果这个文件夹的东西比较多,建议使用搜索功能。临时文件夹中所有文件都是可以删除的,如果无法删除是因为有软件(例如杀毒软件)正在调用。此外,有的exe安装程序也可以使用7-zip直接解压出msi文件,大家可以试试看。


相关文章

同类最新