Izpack:创建自定义面板

bgu*_*uiz 8 java izpack classpath custom-panel izpanel

我正在尝试为IzPack安装程序创建自定义面板.这意味着我必须扩展IzPanel.然而,似乎如果我这样做,扩展面板需要在com.izforge.izpack.panels包.

然后我找到了这篇文章,其中规定:

  1. 因此,您必须在自定义面板项目的构建路径中包含IzPack的lib文件夹中的installer.jar.
  2. 您的自定义面板/必须/扩展com.izforge.izpack.installer.IzPanel.
  3. 此外,它/必须/驻留在com.izforge.izpack.panels包中.
  4. 最重要的是,您的构建jar的名称/必须/与自定义面板类的非限定名称相同.

我对第1和第4点提出异议.他们暗示我必须为我创建的每个自定义IzPanel 创建一个额外的JAR文件.此外,我必须通过将这些JAR添加到其子目录之一来修改IzPack安装.

这篇文章是否已经过时(2008年)并且可以被安全地忽略,或者这仍然是正确的吗?
如果不是,我怎么能避免这种情况,而只是在类路径上使用扩展的IzPanel?

谢谢!

小智 2

好的,我认为您希望将面板放在您自己的包中的单个罐子中。

您可以这样做:

  1. 使用所有自定义面板创建您的 jar
  2. 将该 jar 复制到 IzPackStagingFolder\bin\panels
  3. 编辑安装程序描述符并在面板部分下引用您的 CustomPanels.jar

然后在 install.xml 中定义类似于以下内容的面板部分:

...
<panels>
    <panel classname="HTMLInfoPanel"          id="infopanel" encoding="ISO-8859-1" />
    <panel classname="TargetPanel"            id="targetpanel" />
    <panel classname="com.myCompany.installer.panels.MyCustomPanelOne"     id="customPanelOne" jar="bin/panels/CustomPanels.jar" />
    <panel classname="UserInputPanel"         id="userInputPanel" />
    <panel classname="InstallPanel"           id="installPanel" />
    <panel classname="ProcessPanel"           id="processPanel" />
    <panel classname="com.myCompany.installer.panels.MyCustomPanelTwo"   id="customPanelTwo" jar="bin/panels/CustomPanels.jar" />
    <panel classname="FinishPanel"            id="finishPanel" />
</panels>
...
Run Code Online (Sandbox Code Playgroud)

其中 CustomPanels.jar 可以是一个单独的 Maven 项目,在您自己的包中包含您自己的面板,其中有两个类 CustomPanelOne 和 CustomPanelTwo 都扩展了 IzPanel。

有关更多信息,请参阅 IzPack 的旧版 4.x 文档:https://izpack.atlassian.net/wiki/spaces/IZPACK/pages/491534/Creating+Panels。截至目前,较新的 IzPack 5.x 文档 wiki 缺少此部分。

另请参阅https://github.com/izpack/izpack/blob/4.3/src/dtd/installation.dtd上的 XML DTD