从IzPack调用Java类

时间:2010-03-19 07:05:37

标签: java installer izpack

如何从IzPack的Java类调用方法?静态方法没问题,我需要能够传递参数。

谢谢!


背景资料:

我正在尝试编写一个能够检测以前安装的应用程序版本的IzPack安装程序。在发现它并不真正支持此功能后(Windows除外),我认为唯一的方法是编写Java类并从IzPack调用它。

Tim Williscroft有previously suggested这个方法,它读取类的静态字段的值:

 <condition type="java" id="jbossEnv">
             <java> 
                 <class>au.com.codarra.ela.installer.JBossChecker</class
                 <field>hasJBossEnv</field>
             </java>
             <returnvalue type="boolean">true</returnvalue>
 </condition>

但是,是否可以从<java>标记以外的地方拨打<condition>?我希望能够从<variable>标记中调用它 此外,是否可以从Java类调用方法而不是读取字段的值?我希望能够将参数传递给我的班级。

4 个答案:

答案 0 :(得分:3)

您可以调用静态方法,但我认为您不能传入参数。 你可以创建一个新的'条件类型',但我对此没有经验,所以我无法确认它提供的灵活性......

所以,我没有直接回应,但另一个可能有帮助的建议:

我倾向于将任何复杂的后处理传递给单独的进程。

你有没有调查过处理面板? 您可以启动任何流程,并传入变量..

e.g。

<processing>
  <job name="do xyz">
    <os family="windows" />
    <executefile name="$INSTALL_PATH/scripts/xyz.bat">
      <arg>doit</arg><arg>$variable</arg>
    </executefile>
  </job>
  <job name="do xyz">
    <os family="unix" />
    <executefile name="$INSTALL_PATH/scripts/xyz.sh">
      <arg>doit</arg><arg>$variable</arg>
    </executefile>
  </job>
</processing>

我用它来设置服务并立即启动。那种事。只需确保您的脚本干净利落,否则IzPack将会挂起。

见这里: http://izpack.org/documentation/panels.html#processpanel

答案 1 :(得分:0)

答案 2 :(得分:0)

您好 在下面的链接中,您将找到关于izpack安装程序的一个很好的帮助。

http://www.imrantariq.com/blog/?p=89

下面的链接包含一个详细的pdf,用于安装izpack。

http://www.imrantariq.com/blog/?attachment_id=112

欢呼声

Imran tariq

答案 3 :(得分:0)

我已成功配置一个IzPack安装程序,在安装过程中执行“bat”文件(带一个参数)以生成许可证请求代码。首先,我必须确保将bat文件复制到用户选择的$ INSTALL_PATH,并且在IzPack install.xml中我在InstallPanel之后添加了一个ProcessPanel(这是所有文件,包括“bat”文件被复制的地方) )。我的ProcessPanel.Spec.xml如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<izpack:processing version="5.0"
xmlns:izpack="http://izpack.org/schema/processing" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://izpack.org/schema/processing 
http://izpack.org/schema/5.0/izpack-processing-5.0.xsd">

<job name="initialize license">
  <executefile name="$INSTALL_PATH/initialize.bat" workingDir="$INSTALL_PATH" onError="fail">
    <arg>license</arg>
  </executefile>
</job>
<onFail previous="false" next="false" />
<onSuccess previous="false" next="true" />
</izpack:processing>