不知道你是否注意过,当你安装java jdk的时候,当你安装微软office的时候,当你装db2的时候,你都会看到一个熟悉的标记---installshield。installshield可以说是当今安装程序解决方案的巨无霸了,功能十分强大,你可以用它制作出你想要的安装程序。但是功能的强大也带来一个坏处,就是要上手非常难。所以公司特意请macrovision(就是制作installshield的公司)的人给我们进行了一个training,感觉收获还是很大的,所以把我认为重要的地方纪录下来,一方面万一自己忘了可以查一查,另一方面说不定对别人也有帮助。
先从版本说起。installshield有专门用于制作java安装程序的产品,由于java是跨平台的语言,所以installshield对应的产品就叫installshield multiple platform,简称ismp。我接触的最早版本是ismp 5.0,后来又出了ismp 11.5,再后来ismp改名字叫Install Anywhere(以下简称IA)。目前我们training用的版本是IA 8.0,相信应该是最新的版本了。IA是共享软件,不注册的话有21天的试用期。
安装程序是一个可定制性非常强的东西,每个软件作者的需求都不一样。有的推崇简单就是美,一般只需要用户选择安装的目录,然后就一路next就装完了;但有的软件非常复杂,比如需要设置参数,需要选择安装哪些部分,甚至需要启动windows的系统服务。这时候就需要比较复杂的配置了。installshield针对两种用户设计了不同的开发环境:一种是common designer,另一种是Advanced Designer。当你第一次打开IA的时候,缺省的是common designer,你只需要做一些简单的配置,比如产品的名称,需要安装的文件,要不要绑定虚拟机等等,然后就可以build出一个安装程序了。Advanced Designer是为高级用户设置的,提供了更多,更丰富的功能,你可以用它来打造你所需要的安装程序。本文主要是针对Advanced Designer进行一些说明。
1)安装模式(install modes)
gui:这是最常用的一种模式,在安装过程中会弹出若干个panel,比如welcome panel,license panel,destination panel等等。
console:用这种模式安装程序时,不会出现panel。它的所有信息都在控制台中出现。说的再通俗一点,就是整个安装过程只有一个dos窗口,这个窗口先会显示一行信息欢迎你安装本软件,然后是让你选择destination,再安装,最后会显示一行安装成功的信息
silent:顾名思义,这种模式在安装的时候不会弹出任何窗口,它会安静地装上软件,所以用户也不能自己设定安装目录,一般都市由安装程序安装到固定的目录上
2)install sets
很多安装程序都有完全安装,最小安装,自定义安装等选项,这一般是用features来实现的。你可以把你的产品分成几个features,然后由用户来选择一部分进行安装。
3)actions
IA中很多操作被称为actions,常见的有copy files,delete files,modifying registry, creating service, modifying configurations files等
4)variable
IA中很重要的一个概念,你可以用variable来存放属性信息,比如安装目录,用户名等等。比如
安装目录可能会在很多地方都用到,如果你安装目录是硬编码的,万一将来要修改就要改
很多地方,容易出错;如果用variable来保存的话,只要修改变量值就可以了。注意一点:variable
的值基本上都是string类型的
5)magic folders
IA里面独有的概念,但感觉没什么新意,就是variables的一种,专门用于定义folder的
variable而已
6)InstallAnywhere registry
不同于windows的registry,这是InstallAnywhere自己的registry。每个用IA制作的安装程序,在安装的过程中
都会把自己注册到这个InstallAnywhere registry(注意:你只能在InstallAnywhere registry找到安装的
component,找不到product)。它的一个典型应用就是当你需要检查这个机器上是否安装过某个软件的时候,就可以
用search这个IA registry。不过如果你是用其他工具制作的安装程序,IA registry就不会有记录了。
7)execute command&execute script
execute command是用来执行command,常用的dos命令(copy,cd等)你都可以写在这里。execute script其实就是
execute command的加强版:如果你有多个命令,不需要建多个execute command,把它们写在execute script就好了
8)计算所需空间
在IA中,默认的空间大小是用byte来计算的,所以如果你的软件比较大的话,那一长串的阿拉伯数字会把用户吓倒的
解决方法是,在pre-install summary panel的配置项中,有一个是Edit Custom Field。在那里新建一个field。Variable
name是显示给用户看的内容,比如你可以写disk space。variable value是你的软件所需的硬盘大小。你可以先算出来
,存在一个变量中,然后让variable value等于这个变量就可以了。
9)results variable
用来存放用户的选择。比如在show message dialog中,有一个results variable是$CHOSEN_DIALOG_BUTTON$
它用来存放用户按的是OK 还是Cancel