InstallAnywhere 制作安装包介绍 2

做安装包的关键在于三方的交互,用户输入,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 先不管。


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


InstallAnywhere 制作安装包介绍 2_第1张图片


Pre-Install

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

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

InstallAnywhere 制作安装包介绍 2_第2张图片

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

InstallAnywhere 制作安装包介绍 2_第3张图片

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

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


InstallAnywhere 制作安装包介绍 2_第4张图片

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

InstallAnywhere 制作安装包介绍 2_第5张图片

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


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

InstallAnywhere 制作安装包介绍 2_第6张图片


InstallAnywhere 制作安装包介绍 2_第7张图片

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

在 Configure Dependencies 中添加依赖。

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

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


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

你可能感兴趣的:(InstallAnywhere 制作安装包介绍 2)