【问题标题】:Netbeans Java (JavaFX) Native Packaging with additional files and folders带有附加文件和文件夹的 Netbeans Java (JavaFX) 本机打包
【发布时间】:2015-05-06 09:54:14
【问题描述】:

原生打包 Java 应用程序时如何包含额外的文件和文件夹(配置文件)?

在构建项目时,我已将构建文件设置为创建目录并将附加文件复制到 dist 目录。

我的正常构建(没有原生打包)会产生这个目录结构:

-> dist
   -> lib
   -> application.jar
   -> config folder //additional folder
   -> another additional folder //additional folder

现在,我想构建我的本机安装程序(设置),将这些附加文件夹/文件与我的应用程序和运行时一起提取。

基本上,当我的本机安装程序运行时,它会创建这些文件:

-> app
   -> lib
   -> application.jar
   -> package.cfg
-> runtime
   -> jre
-> applcation.exe
-> application.ico
-> unins000.dat
-> unins000.exe

我的附加文件和文件夹未包含在我的安装程序中。我想让我的安装程序提取这些附加文件,最好像这样

-> app
   -> lib
   -> config folder //additional folder
   -> another additional folder //additional folder
   -> application.jar
   -> package.cfg
-> runtime
   -> jre
-> applcation.exe
-> application.ico
-> unins000.dat
-> unins000.exe

顺便说一下,我正在使用 Ant Build 工具和 Inno 进行原生打包。

【问题讨论】:

  • 您找到解决方案了吗?我也通过 ant build 使用本机打包,但我的自定义文件没有被复制到部署目录。
  • 没关系。 OttPrime 解决方案有效,我刚刚意识到我的脚本将文件复制到错误的目录。
  • 你能告诉我完整的代码sn-ps吗?我实际上正在使用 NetBeans,但找不到合适的方法。 @FernandoPaz
  • @M.Ko 我没有使用 NetBeans,只是运行一个 Ant 脚本。查看这个 sn-p(可能与您唯一相关的部分是目标“do-deploy”):gist.github.com/anonymous/8398fd855637c60e8ee94d4b9f8437bb

标签: java ant javafx inno-setup setup-deployment


【解决方案1】:

我只用Wix 构建过本机包,所以我的答案基于我从那次经验中获得的知识。将目标添加到您的 Ant 构建脚本并创建一个 fx:deploy 任务。将nativeBundles 属性设置为exe。您可以通过将fx:filesets 添加到fx:application/fx:resources XPATH 来指定其他文件和文件夹。它可能看起来像这样。

<target name="deploy">
  <fx:deploy verbose="true" nativeBundles="exe" ...>
    <fx:application name="${app.title}" mainClass="${main.class}" version="${version}">
      <fx:resources>
        <fx:fileset dir="${base.dir}" includes="config/*.*" />
        <fx:fileset dir="${base.dir}" includes="data/*.*" />
      </fx:resources>
    </fx:application>
  </fx:deploy>
</target>

您可以在fx:resources 部分中指定更多内容。 Oracle 教程中有更详细的信息,尤其是Section 6

【讨论】:

  • 这是在 2015 年回答的。这个答案仍然有效吗?它对 JavaFX 有效吗?
  • @Sedrick 我在 JavaFX 工作已经有几年了,所以我不能确定它是否仍然是一种有效的方法。我希望除非对 Ant 及其 JavaFX 任务进行任何重大更改,否则这应该仍然有效,但没有任何承诺。
  • 我问是因为我无法让它工作。我找到了一个解决方法。我将文件打包在jar 中。然后,当程序加载时,它会检查其文件夹中的文件。如果找不到文件,它会从jar 中提取文件并将它们添加到文件夹中。不过感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-14
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多