InstallAnywhere的自定义PANEL

来源:互联网 发布:mdf文件恢复数据库 编辑:程序博客网 时间:2024/06/01 08:40


此博文为07年的老文章,不提供答疑解惑服务。


用install anywhere 7.0自定义ACTION和RULE例如创建数据库表。就需要自定制InstallAnywhere的行为例如Action和Rule。
由于怕以后忘了这段真挚的回忆,所以我打算把他记下来(毕竟花费了不少心血),以防以后要用的时候又要头疼。


其实我主要做的工作就是在用户安装完以后要写上配置数据库的信息然后链接数据库 ,接着建表,很简单
首先我需要新建一个自定义PANEL,当年为了建一个PANEL花了偶两天的时间,呵呵

方法如下:(偏头痛杨原创)

第一步:建工程
第二步:往工程中导入JAR包(INSTALLANYWHERE的那个主JAR包)
第三步:建一个类必须继承CustomCodePanel(我有监听事件还得实现ActionListener),
并且必须实现public boolean setupUI(CustomCodePanelProxy customCodePanelProxy)
第四步:往类里写AWT/SWING,这里需要说明一下,他们的框架最后只能实现AWT的组件,导致浪费了好多时间去研究AWT,后来发现一个非常简单的方法,建立一个AWT的PANEL,然后在用SWING去写你的显示组件,等到集成的时候用AWT的PANEL直接ADD就好了,然后把这个带着所有SWING组件的AWT PANEL放进框架的ADD()方法中就大功告成了。。哈哈

简单代码如下

public boolean setupUI(CustomCodePanelProxy customCodePanelProxy){
Panel p = new Panel();//AWT的PANEL
JTextField usernametxt = new JTextField();
JButton button = new JButton("我爱你");//这两个都是SWING的组件
p.add(button);
p.add(usernametxt);//然后都给他们ADD到PANEL中
add(p);//框架的方法,就可以看了

}
第五步:设置变量
用软件生成的变量也可以用,但是我们现在是自定义PANEL(custon panel)所以不能使用软件来帮助我们了,于是我们就要手动创建变量
具体方法如下:
customCodePanelProxy.setVariable("$USERNAME$","我爱你");

变量的作用 :用于传递值

拿变量的 方法是JTextField servername = (JTextField)customCodePanelProxy.getVariable("$SEVERNAME$");

第六步:连接数据库(这是我的逻辑了,你们可以不用看了 )
Class.forName(DBDRIVER) ;
conn = DriverManager.getConnection(URL,username.getText(),password.getText()) ;
JOptionPane.showMessageDialog(null,"数据库连接成功");

第七步:自定义ACTION(用于执行你的后台逻辑,我在这里是执行建表)
public class MyCustomCodeAction extends CustomCodeAction
首先继承CustomCodeAction并实现4个方法
public void install(InstallerProxy arg0) throws InstallException
public void uninstall(UninstallerProxy arg0) throws InstallExceptionpublic String getInstallStatusMessage()
public String getInstallStatusMessage()
public String getUninstallStatusMessage()

所有的逻辑代码写在install中
在这个类中拿变量的方法改为JTextField username = (JTextField)arg0.getVariable("$USERNAME$");

第八步:待到大家把该写的都写完了以后,下面开始打包,打包很有学问(想当初我就因为这个包的问题浪费了一天时间)

有的同志一般自己写ant脚本然后用插件build,我很佩服你们,所以我不用这种方法,我的方法是,把所有的类都编译以后,把那些类的.class文件全都拿出来,放到一个文件夹下,然后用Winrar或者其他的压缩软件进行压缩,压缩的时候请注意一定要把路径也带上,例如类路径是com.yourcompany.server.SamplePanel,那么在压缩的时候你需要创建几个文件夹来照顾路径问题,你要建3个文件夹。分别是com,yourcompany,server然后在server文件夹中把.class文件放里头
第九步:进入软件,
1.如果是PANEL的话点post_install(随便你想在哪调就写哪)-addAction -panels - panel custom code;
然后把zip包放进去 例如:path : D:\yangminghan\panel\com.zip
class:com.zerog.ia.customcode.samples.SamplePanel是类路径
最下面有个Dependencies:把你要用的其他JAR都导过来,我导的是数据库驱动JAR
2.如果是Action的话点addAction - General - Execute Custom Code 其他同上。。。。

 


另外 开发要点
自定制的Rule,例如,判断用户是否输入正确的参数
MyCustomCodeRule应继承自com.zerog.ia.api.pub.CustomCodeRule,并且必须实现boolean evaluateRule()方法
自定制的Action,如,进行数据库建表操作
MyCustomCodeAction应继承自com.zerog.ia.api.pub.CustomCodeAction
自定制的代码中如何获取用户输入?
首先使用Panel: Get User Input - Sample,创建一个输入框
将输入变量设定为$DATABASE_CONFIGURATION$
在下一步的CustomCodeAction中,使用下面代码均可得到用户输入:
InstallerProxy ip …
ip.substitute("$DATABASE_CONFIGURATION$");
ip.getVariable("DATABASE_CONFIGURATION");
ip.getVariable("$DATABASE_CONFIGURATION$");参见http://gamma.zerog.com/devnet_l/uT.jsp?page=kb/viewKB.jsp&itemID=96

如果输入数据库的URL,USER,PASS,则得到的变量值为"url…","username","password"
使用$DATABASE_CONFIGURATION_1$,$DATABASE_CONFIGURATION_2$可分别取得url和user
返回上一页Panel
一旦用户输入不合法,或者数据库无法连接,应返回上一页Panel让用户重新输入数据库参数
添加Show Message Diaglog Panel,其中一个按钮设定为Back
创建一个CustomCodeRule,检查用户输入参数是否有效,如果无效则返回*true*。
将Rule邦定到Panel
CustomCodeRule

    Rule一般是在Panel之前,而在Action之后执行。其方法 boolean evaluateRule() 是指该Rule是否被满足。如果Rule不满足,则返回true。例如检测数据库配置的Rule,一切顺利则应该返回false,如果检测失败,则返回true,弹出Diaglog窗口提示。

0 0
原创粉丝点击