当前位置: 首页 > 知识库问答 >
问题:

使用JPackage制作AppImage

都浩淼
2023-03-14

我正在尝试使用JPackage创建一个应用程序图像(在使用OpenJDK 14的Ubuntu 18.04系统上)

我找到的所有例子都是这样的

jpackage --type app-image --name myappimage --input target  --main-jar myuberjar.jar  --main-class myapplication.core  --verbose

运行此命令时,会得到一个目录/myappimage/中的/myappimage/bin/我可以启动一个可执行文件来运行应用程序。但整个东西并没有像我所希望的那样绑定到一个AppImage文件中。

我错过了什么?

共有2个答案

曾明诚
2023-03-14

如果您希望在 jpackage 构建安装程序作为第二步之前修改安装目录内容的内容,或者如果您希望在不制作安装映像的情况下运行或测试发布结构,则只需真正需要使用 jpackage --type app-image

例如,在Windows上,我使用app-image到本地构建目录,如下所示:

jpackage --type app-image --dest jpackage.dir ...

然后,我将生成的EXE重命名为SCR文件,以便可以将可执行文件用作Windows屏幕保护程序。您可能需要在此处进行其他更改。如果您还通过启动为jpackage.dir\AppName\xyz[.exe]或jpackage.dir/AppName/xyz来测试应用程序映像目录中的应用程序,则可以节省时间

最后应用最终jpackage阶段,从修改后的应用程序图像结构生成安装程序:

jpackage --app-image jpackage.dir/yourappname --type exe

在您的情况下,为--type使用pkg|dmg或其他合适的值。如果您不需要进行修改,请跳过--type app-image步骤并直接打包为目标环境的存档格式。

甄成弘
2023-03-14

虽然AppImage是一种理想的格式,但JPackage(尚未)支持它。虽然JPackage文档提到了命令行选项app-image,但它的含义不同:

--app-image文件路径用于构建可安装包的预定义应用程序映像的位置(绝对路径或相对于当前目录的路径)。请参阅创建应用程序图像模式选项以创建应用程序映像。

所以app-image文件夹只是JPackage在将应用程序转换成deb/msi/dmg这样的原生包之前收集应用程序的所有片段的文件夹。因此,不要被这两个不同但名称相似的概念所混淆。

你最好的方法是使用JPackage来组装所有需要的东西(就像应用程序图像一样),然后使用 AppImage.org 提供的工具从那里获取它。更简洁:

告诉JPackage在创建应用程序映像后退出,如下所示:

jpackage --type app-image --dest app-image ...

这将使您将需要收集的所有文件都留在app-image目录中。不,不是全部。对于我的OpenJDK(build 16.0.1 9-Ubuntu-120.04),JPackage命令忘记创建启动器(*.桌面文件),并且在完成对debian包的构建时,它忘记安装该文件。看看我是如何解决这个问题的。

从这里开始,您需要遵循AppImage打包指南,在最终调用打包程序之前创建一个AppDir目录结构。我将app-image目录复制到AppDir/usr中,并在AppDir中创建了一些符号链接。还需要创建。桌面文件。最重要的是一个符号链接< code>AppDir/AppRun,它指向AppDir/usr/bin/中的可执行文件...符号链接的名称必须是AppRun。

最后,按照手动打包并运行appimagetool。关于如何运行它的信息似乎只在README.md上。我最终得到了一个扩展名为.appimage的可执行文件。

对该文件设置可执行权限并运行它。

 类似资料:
  • 我正在使用JPackage(OpenJDK 15.0.1)为Windows制作一个可移植的可执行文件。我尝试了下面的命令,但我双击了生成的exe文件,显示了安装程序窗口。它似乎不是可移植的可执行文件,而只是安装程序。 有什么办法可以用JPackage制作一个不用安装就可以使用的可执行文件?

  • FC4 的发行说明中建议用户尽量避免直接使用 Sun 提供的 Java RPM,并提供了从 JPackage.org 构建 Java 的途径。 The JPackage Project has two primary goals: To provide a coherent set of Java software packages for Linux, satisfying all qualit

  • 对于JPackage,我无法为主启动器获得--win-console选项,但我希望主启动器不输出到控制台,而是有一个这样的调试版本。 即如果我跑了 jpackage.txt J包装。属性 然后,SongKong和SongKongDebug都在没有控制台的情况下运行 我还尝试修改jpackage.properties(whicch是指名称/值对)到 但还是没用 而如果我加上 jpackage.txt

  • 我已经用JavaFX创建了我的应用程序。一切都很好,所以我使用Jpackage在Windows中制作了一个可安装的应用程序版本。 在我安装包之后,Windows计算机仍然要求安装JVM。 我的期望是,我可以使用Jpackage在任何计算机上安装我的JavaFX应用程序,并自动设置JVM。。用户只需点击图标并运行应用程序。 关于Jpackage中的正确命令的任何建议,以将我的JavaFX应用程序ja

  • 出于向后兼容的原因,我需要一个Geode Jetty服务器来使用TLSv1,而不是1.1或1.2 在< code>gemfire.properties中设置了< code > ssl-enabled-components = web 和< code > SSL-protocols = tlsv 1.0 后,当我启动Geode并使用SSL实验室检查HTTPS连接时,我会得到一个TLS结果: 我正在寻

  • 在某种情况下,我使用jpackage实用程序尝试创建一个签名的DMG文件以交付给我的用户。我需要签署这个DMG的原因是因为我想对软件进行公证。顺便说一下,我不确定是否可以使用jpackage进行公证,但我还是在尝试。 然而,我在使用jpackage的内置代码签名选项时遇到了问题,这是成功公证的先决条件。 我正在使用选项运行jpackage (我已经编辑了实际的开发人员ID,因为这是在StackOv