8

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

谢谢!


背景资料:

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

Tim Williscroft之前建议过这种方法,它读取类的静态字段的值:

 <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

4 回答 4

3

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

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

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

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

例如

<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

于 2011-04-14T22:46:59.630 回答
0

您好在下面的链接中,您将找到有关 izpack 安装程序的不错帮助。

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

下面的链接包含使用 izpack 制作安装程序的详细 pdf。

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

干杯

伊姆兰塔里克

于 2011-03-15T13:12:29.210 回答
0

考虑使用 IzPack Ant 集成

http://izpack.org/documentation/advanced-features.html#apache-ant-integration

和 Ant Java 标注任务

http://ant.apache.org/manual/Tasks/java.html

于 2011-03-14T14:00:36.297 回答
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>
于 2017-12-15T09:49:13.260 回答