大家再开发软件产品的时候经常是基于某些软件和类库的,像我们的项目就用到了.Net Framework3.5,mapinfo,sqlserver 2008 express,installer 4.5。那用户要用我们的产品,必须有以上的环境才可以,这些东西当然不会让用户自己去安装啦,需要我们来为用户部署好,这样用户才会觉得你的软件真的很好用,不会觉得麻烦对吧。
以前用Installshield2008的时候,对.Net Framework不支持3.5的,也不支持installer4.5,需要自己在脚本中来检测环境,运行相应的安装程序,这样的坏处是,用户界面很死板,就一个提示框“正在为您安装……”,然后界面就死在那儿不动了,体验相当差,不过当时没学识浅薄,不会自己做Prerequisites。
幸运的是,installshield2010比Installshield2008支持更多的组件,可以在“Application Data\Prerequisites”中看到,这些组件最好自己下载下来,压缩到安装包中,省的用户没有这些组件的时候需要联网下载,要是网速慢,那是要等到黄花菜都凉的。下载方法:选择需要下载的组件,点击“Download Selected Item”,这样Installshield就会为你下载这个组件了,保存目录为Installshield安装目录\InstallShield\2010\SetupPrerequisites,虽然你在卸载Installshield的时候,不会把这个目录下你下载的东西删除,不过我还是把它们都拷贝出来,以备不时之需。下载完成之后,把这个选项打上钩,在运行安装包的时候就会为你显示一个界面:
是不是很不错啊,虽然是Installshield风格的,不过还是说的过去的。
自定义预安装组件
有人可能会问了,如果我想要的组件Installshield里没有怎么办啊?不用担心,只要你按照Installshield的规定,在Installshield安装目录\InstallShield\20010\SetupPrerequisites这个目录下,做一个.prq文件即可,只有有这个.prq文件,你才能在“Application Data\Prerequisites”里面看到。编辑这个.prq的工作你可以在Installshield的“Application Data\Prerequisites”做,右键点击这个组件,在弹出的菜单中点击“Edit Prerequisite”,因为我们的.prq里面什么都没有,不过不要担心,等你配置好所有的东西之后,Installshield会为你生成一个格式正确的.prq文件.
接下来我们就以以mapinfo为例从头开始,自己来创建一个.prq文件:
1.在Installshield安装目录\InstallShield\20010\SetupPrerequisites这个目录下创建一个txt文件,名称为mapinfo,后缀名".prq";
2.打开Installshield2010,在"Application Data\Prerequisites"右侧面板中,找到"mapinfo"这个组件,右键点击"Edit Prerequisite",
就会出现配置界面.
3.接下来我们按照配置面板的页签分别配置
(1)Properties
第一项是组件的唯一id 是Installshield2010为我们自动生成的,不需要改动。
第二项是在哪里下载这个.prq文件,这个我没写,估计是给别人看的。
接下来是这个组件的描述,这个描述在安装过程中没有看到,不知道是干嘛的,可能是给自己看的吧,我们写上"This prerequisite installs the mapxtreme-ch-trial for your systems."
(2)Conditions
是否需要安装这个组件,当然需要我们来判断了,根据什么呢?Installshield就为我们提供了很多方式,比如根据注册表、系统是xp还是server2003,、某个文件是否存在,
以前基本都是用脚本来操作注册表来判断的,跟这个原理是一样的。我们根据HKEY_LOCAL_MACHINE\SOFTWARE\MapInfo\MapXtreme\7.0.0这个键是否存在来判断mapinfo是否安装,选择"A registry key does or does not exist",在"在Spercify the registry key name to check:"中填上"HKEY_LOCAL_MACHINE\SOFTWARE\MapInfo\MapXtreme\7.0.0",系统选择Default,"Run this prerequisite"选择"If the specified registry key DOES NOT EXISTS"。
(3)Files to Include
这个当然是要安装这个组件的安装包了,这里我选择了mapinfo的安装包
(4)Application to Run
这里选择安装这组件需要运行的安装包,就是上面"Files to Include"中的mapxtreme-ch-trial.exe,比较麻烦的是下面的参数,一半我们安装这些组件的时候,不想让用户
看到这个组件的安装界面,所以需要静默安装,不同公司产品的静默安装命令都可能不同,如果你要装的组件不是Installshield2010支持的,那这些静默参数可能需要花很长时间去找了.mapinfo的静默安装参数是"/v/qn"。还有一个参数是重启参数,如果你的组件需要重启计算机的话,需要配置这个参数,我们这个不需要重启。不过据我所知,标准的msi安装包重启参数都是1641,3010。
(5)Behavior
这个里面是配置安装这个组件需要的权限,以及运行时的行为,这里大家可以根据需要自己配置,像我们的产品是依赖mapinfo的,所以如果mapinfo安装失败的话,即使安装完成也无法使用,所以在"If,after installing the prerequisite,the conditions still indicate it is required"下选择"abort the setup".
(6)Depencies
按照Installshield的描述,大家应该很容易理解,就是指定在这个必须组件安装之前需要安装的组件的.prq文件,这个大家可以看一下windows installer 4.5 update for windows xp sp3 and later (x86)可以看到它的"Depencies"下"Windows Installer 4.5 for Windows XP SP2 and later (x86).prq",就是所你在安装windows installer 4.5 update for windows xp sp3 之前需要安装Windows Installer 4.5 for Windows XP SP2。这个看大家自己的需要可以自己定义。咱们这个mapinfo没有特别需要,这里就不配置了。
(7)ok,点击"File-Save".
我们打开InstallShield安装目录\InstallShield\20010\SetupPrerequisites目录下的mapinfo.prq就可以看到如下内容:
然后勾选上这个组件,安装包就会在运行的时候检测系统是否安装mapinfo,如果没有就会为我们安装了。
好了,到这里大家应该都知道怎么做预装组件了。这块我了解的就这么多,如果有不对的地方希望各位达人指教,还有如果有人看到这篇文章的话希望能留下您做的预装组件的静默安装参数和重启参数等,我会在以后总结一下,方便大家使用,不胜感激!