【问题标题】:Calling Java classes from IzPack从 IzPack 调用 Java 类
【发布时间】:2010-03-19 07:05:37
【问题描述】:

如何从 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>

但是,是否可以从&lt;condition&gt; 标签以外的其他地方调用&lt;java&gt;?我希望能够从 &lt;variable&gt; 标签调用它。
另外,是否可以从 Java 类调用方法而不是读取字段的值?我希望能够将参数传递给我的班级。

【问题讨论】:

    标签: java installation izpack


    【解决方案1】:

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

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

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

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

    例如

    <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 @amir : 啊哈我认为处理面板是 IzPack 中的一个新功能,我想我以前没有注意到它...感谢您的提醒!跨度>
    • 有另一个建议.. 看看 PackJacket。 PackJacket 为 IzPack 提供了一个用于构建安装程序的 GUI。非常好的工具:packjacket.sourceforge.net
    【解决方案2】:

    【讨论】:

    • 我已经在使用 apache ant 集成和 ant Java 任务...您对我的问题有什么建议吗?
    • 想法是使用 Ant 将标注包装到您的 Java 类中(尽管这只是重复上面的建议......)
    【解决方案3】:

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

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

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

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

    干杯

    伊姆兰塔里克

    【讨论】:

      【解决方案4】:

      我已成功配置 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-07
        • 2015-06-29
        • 2012-07-05
        • 1970-01-01
        • 2020-08-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多