Win下用installanywhere2009把jee工程打包成安装包
tag:installanywhere2009 安装包 工程打包
全部文档请
http://windfeng.iteye.com/blog/660762
1. 概要
利用打包工具installanywhere,把jee项目制作成可以自己指定步骤的安装文件,有如下步骤:
a 选择安装语言环境
b 检测操作系统平台,主要是Windows平台
c 检测系统版本及JVM版本
d 检测客户机oracle环境、版本及oracle数据库的连接(通过管理员帐号连接,需要创建默认帐户和授权)
e 安装程序
f 通过java调用imp命令导入dmp文件(未实现远程导入dmp,因为imp命令为oracle提供,如果客户机有oracle环境,则直接安装客户机)
g 通过用户输入连接的数据库信息改变系统数据库连接配置文件
h 通过执行批处理改变系统环境变量,java_home、catalina_home
k 自动启动tomcat服务
l 自动打开浏览器,通过url地址访问系统
m 最后,手工输入登录用户名和密码,查看系统
2. 工具介绍
2.1 版本
InstallAnywhere 2009 Enterprise build 3657
2.2 下载
官方网站 http://www.zerog.com ,注册后可下载,2009-5-30下载的版本见上
2.3 破解
我已经将破解补丁上传,免费下载 installanywhere2009破解方法及补丁
2.4 工具界面介绍
这里主要介绍project部分。
2.4.1 打开软件,能见到破解时输入的注册码
图一 启动画面
2.4.2 创建一个新的工程
图二 创建新工程1
选择“Create New Project”,选择“Basic Project Template”模版,选择“Save as”按钮,弹出保存新建工程的目录以及名称,名称的后缀为.iap_xml。
也可以通过“Open Existing Project”,打开已经存在的文件。这里新建一个项目
图三 创建新工程2
2.4.3 点击“Advanced Designer”按钮,进入高级模式info设置
图四 高级模式
从该界面中可以看到,有很多项设置,一级导航包括:Project、Installer UI、Organization、Files、Pre-Install、Post-Install、Pre-Uninstall、Post-Uninstall、Build。这里主要介绍Project。
2.4.4 进入Description设置
图五 Description设置
Description界面中设置安装包的产品可能写入注册表中的一些信息,包括:产品名称、ID、版本、以及支持、提供商等信息,可以详细的填写相关的信息,包括产品介绍等
2.4.5 File Settings
图六 File Settings界面
该界面中主要设置安装过程中,被安装的文件的时间如何处理,你可以选择保留文件本身的时间,也可以设置为安装时的时间,还可以设置成指定的时间。该界面中还可以设置当文件已经存在时,如何提示或操作。一般,使用缺省设置即可。
2.4.6 Platforms
图七 Platforms界面
我用的InstallAnywhere,支持四种操作系统平台:Mac OS X、Windows、UNIX和System i。因此,Platforms设置界面中,你可以分别对这四种操作平台的缺省安装路径和缺省快捷方式进行设置。一般使用缺省设置即可,我主要是Windows平台。
2.4.7 Locales
图八 Locales安装语言界面选择
Locales项设置安装包所支持的安装界面的语言。缺省是英文安装语言。只有选择了除英文之外的至少一种其他语言,安装包才会在安装开始时显示选择安装语言的界面。一般选择支持简体中文即可
2.4.8 Rules
图九 Rules设置
Rules项中可以配置多种安装规则,如安装前检查安装路径属性、安装平台或者其他自定义的规则。一般,我们会用到检查安装平台,如是否是指定的操作系统。
2.4.9 Config
图十 Config配置
“Config”界面“installer debug output”中有俩个文本框,大家可以在里面填上“console”,这样大家在安装文件生成后,调试安装时可以通过控制台来查看相关的提示信息。正是发布的话,清空即可。其他几项都可以使用缺省设置即可。
2.4.10 Java
图十一 Java配置
如果需要安装VM的话,就需要注意VM的安装路径
3 安装包制作过程
资料补充:
利用该工具提供的各种预安装界面和客户自定义界面来定制安装包安装流程,其中预安装界面是installanywhere提供的模板界面,而客户自定义界面是通过继承实现类
com.zerog.ia.api.pub.CustomCodePanel |
该类要实现的方法是
@Override public boolean setupUI(CustomCodePanelProxy customCodePanelProxy) { return true; } |
如果有点击事件的话还要实现ActionListener接口
@Override public void actionPerformed(ActionEvent e) { } |
界面点击下一步时触发的方法
//点击下一步按钮时触发的事件,返回true时可以进入下一步,返回false时停留在本页面 public boolean okToContinue() { return true; } |
界面点击上一步时触发的方法
//点击上一步按钮时触发的事件,返回true时可以进入下一步,返回false时停留在本页面 public boolean okToGoPrevious() { customCodePanelProxy.setVariable("$DB$", db); customCodePanelProxy.setVariable("$ENV$", env); return true; } |
传参数和取参数
//表示传参数 customCodePanelProxy.setVariable("$DB$", db); //取参数 Object dbInfo = customCodePanelProxy.getVariable("$DB$"); |
面板标题设置
//此面板显示在右上角的标题 public String getTitle() { return "获取数据库连接信息"; } |
因为自定义面板是执行的java代码,所以,应先建立一个项目,编写相关的代码。
3.1 选择安装语言环境
见2.4.7
3.2 检测操作系统平台,主要是Windows平台
见2.4.8
3.3 检测系统版本及JVM版本
3.3.1 新建类CommonEnvironmentPanel,继承CustomCodePanel
CustomCodePanel类路径为com.zerog.ia.api.pub.CustomCodePanel,在IAClasses.zip包中,该包在installanywhere的安装根目录下,拷贝到相应的地方即可。
3.3.2 编写检测系统方法及Java版本
主要通过System.getProperty("aaa")方法提取installanywhere能读取的系统环境。
常用的有java.home、java.version、os.name、os.arch、os.version等,这些可以在调试状态下通过调试窗口的启动画面看到
这里注意取默认安装路径和实际安装路径的过程,下面有批示
/** * 检测系统常用环境 * 如: * 操作系统名称、架构、版本 * JVM安装路径、版本号 * @return CommonEnvironment 常用系统参数对象 */ public CommonEnvironment getEnvDir() { env = new CommonEnvironment(); //取参数值--安装路径 InstallDirMF programDir = (InstallDirMF) customCodePanelProxy.getVariable("$USER_INSTALL_DIR$"); //得到安装产品的目录,如c:/program files MagicFolder mf = programDir.getMagicFolder(); String installRoot = mf.getPath(); //取得产品名 String pdName = (String) customCodePanelProxy.getVariable("$PRODUCT_NAME$"); //默认安装路径 String installPath = installRoot + "//" + pdName; //实际安装路径 InstallDirMF installMF = mf.getInstaller().getInstallDir(); String realPath = installMF.getPath();
//取参数值--安装路径 DoNotInstallMF donotMF = (DoNotInstallMF) customCodePanelProxy.getVariable("$DO_NOT_INSTALL$");
//测试取得java环境 //java home的路径 String javahomeDir = System.getProperty("java.home"); //java version String javaversion = System.getProperty("java.version"); //os name String osname = System.getProperty("os.name"); //os arch String osarch = System.getProperty("os.arch" |