InstallAnywhere 制作安装包介绍 2

来源:互联网 发布:阿里云oss 七牛 编辑:程序博客网 时间:2024/06/06 20:57

做安装包的关键在于三方的交互,用户输入,InstallAnywhere 的变量,和 Java 拓展部分。


先看一个类:

/*    功能:    测试 postgres数据库 连接是否成功 */import java.sql.Connection;import java.sql.DriverManager;import com.zerog.ia.api.pub.CustomCodeRule;public class DBConnectionTest extends CustomCodeRule {    // 重写 evaluateRule方法    @Override    public boolean evaluateRule() {        // 获取用户输入        String db_ip = ruleProxy.substitute("$EA_DB_IP$");        String db_port =  ruleProxy.substitute("$EA_DB_PORT$");        String db_account =ruleProxy.substitute("$EA_DB_ACCOUNT$");        String db_password =ruleProxy.substitute("$EA_DB_PASSWORD$");        // 非空验证        // return true 表示验证不通过, DB_TEST_RESULT 向 InstallAnywhere 传递验证结果        if ("".equals(db_ip)) {            ruleProxy.setVariable("DB_TEST_RESULT", "IP地址不能为空。");            return true;        }        if ("".equals(db_port)) {            ruleProxy.setVariable("DB_TEST_RESULT", "端口号不能为空。");            return true;        }        if ("".equals(db_account)) {            ruleProxy.setVariable("DB_TEST_RESULT", "登录名不能为空。");            return true;        }        if ("".equals(db_password)) {            ruleProxy.setVariable("DB_TEST_RESULT", "密码不能为空。");            return true;        }        // 拼接 url        String url = "jdbc:postgresql://" + db_ip + ":" + db_port;        // 测试连接        Connection connection = null;        try {            Class.forName("org.postgresql.Driver");            connection = DriverManager.getConnection(url, db_account, db_password);        } catch (Exception e) {            ruleProxy.setVariable("DB_TEST_RESULT", "测试连接失败: " + e.toString());            return true;        } finally {            if (connection != null) {                try {                    connection.close();                } catch (Exception e) {                    //                }            }        }        return false;    }}

先需要导入一个包 IAClasses.zip,在 InstallAnywhere 的根目录下可以找到。

就像之前提到的规则一样,CustomCodeRule 用于现实自定义的规则,需要实现 evaluateRule 这个方法。


然后,编译这个类生成 class 文件,并把 class 文件打包为 jar 文件。


依赖的 Zip 和 Jar 先不管。


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 




Pre-Install

顾名思义,就是在执行安装之前做一些事情,比如获取用户输入。

通过点击 Add Action ,添加一个 Get User Input - Advanced 的 Action。


点击 Add Textfield, 插入四个文本框,用于获取需要信息。


输入 Label 标签和 Result Variable 用 $$ 括起来。

可以回过头看之前的代码,就是通过这个变量名来获得用户输入的。



接着插入一个 Show Message Dialog Action,用于反馈测试连接的结果。


将 Label 设置为你想要的变量名,记得在 java 代码中也是同样的, 并选择 Return Previous Panel 选项。


切换到 Rules Tab,添加一个 Evaluate Custom Rule,对,这个就是之前实现的类。




Choose Jar  文件,填写 Class 要带上包名,我这没用包。

在 Configure Dependencies 中添加依赖。

最关键的一点,class 文件需要用 1.6 的版本(我试过 1.7 和 1.8 都不行)来编译,也许是这个版本的 InstallAnywhere 太老了。

这个费了我很多时间,而 IA 本身也没任何提示信息。


然后,就可以构建项目,试一下了。 

0 0
原创粉丝点击