使用 JPackage 制作 AppImage
Using JPackage to make an AppImage
我正在尝试使用 JPackage 创建一个 AppImage(在 Ubuntu 18.04 系统上使用 OpenJDK 14)
我找到的所有例子都是
形式
jpackage --type app-image --name myappimage --input target --main-jar myuberjar.jar --main-class myapplication.core --verbose
当我 运行 这个时,我得到一个目录 ./myappimage/
并且在 ./myappimage/bin/
中有一个我可以启动到 运行 应用程序的可执行文件。但是整个事情并没有像我希望的那样捆绑到一个 AppImage 文件中。
我在这里错过了什么?
虽然AppImage is a desireable format it is not (yet) supported by JPackage. While the JPackage Documentation提到了一个命令行选项app-image,但它的意思是不同的:
--app-image文件路径
用于构建可安装包的预定义应用程序映像的位置(绝对路径或相对于当前目录)。
请参阅创建应用程序图像模式选项以创建应用程序图像。
所以 app-image 文件夹只是 JPackage 在将应用程序转换为 deb/msi/dmg 之类的本机包之前收集应用程序的所有零碎信息的文件夹。因此,请不要被这两个不同但名称相似的概念混淆。
您最好的方法是使用 JPackage assemble 所需的一切(就像 app-image 的情况一样),然后使用 AppImage.org 提供的工具从那里获取它。越来越简洁:
像这样创建应用程序图像后告诉 JPackage 退出:
jpackage --type app-image --dest app-image ...
这将使您将所有需要的文件收集在 app-image 目录中。不,不是全部。对于我的 OpenJDK(内部版本 16.0.1+9-Ubuntu-120.04),JPackage 命令忘记创建启动程序(*.desktop 文件),并且在完成对 debian 包的构建时忘记安装该文件。看看如何 .
从这里开始,您需要按照 AppImage packaging guide 创建一个 AppDir 目录结构,然后再最终调用打包程序。我将 app-image 目录复制到 AppDir/usr 并在 AppDir 中创建了一些符号链接。还需要创建 .desktop 文件。最重要的是指向 AppDir/usr/bin/ 中的可执行文件的符号链接 AppDir/AppRun
... 符号链接的名称必须是 AppRun。
终于关注了Manual packaging and run the appimagetool. Information how to run it seems only on the README.md。我最终得到了一个文件扩展名为 .appimage.
的可执行文件
设置该文件的可执行权限并运行它。
如果您希望在 jpackage 构建安装程序作为第二步之前修改安装目录的内容,或者如果您希望 运行 或测试在不制作安装映像的情况下发布结构。
例如,在 Windows 上,我使用 app-image
将本地构建目录设置为:
jpackage --type app-image --dest jpackage.dir ...
然后我将生成的 EXE 重命名为 SCR 文件,这样我就可以将可执行文件用作 Windows 屏幕保护程序。您可能需要在此处进行其他更改。如果您还通过以 jpackage.dir\AppName\xyz[.exe]
或 jpackage.dir/AppName/xyz
启动来测试 app-image 目录中的应用程序,您以后可能会节省时间
最后应用最后的 jpackage 阶段从修改后的应用程序映像结构生成安装程序:
jpackage --app-image jpackage.dir/yourappname --type exe
在您的情况下,使用 pkg|dmg 或其他适合 --type
的值。如果您不需要进行修改,请跳过 --type app-image
步骤并直接打包为目标环境的存档格式。
我正在尝试使用 JPackage 创建一个 AppImage(在 Ubuntu 18.04 系统上使用 OpenJDK 14)
我找到的所有例子都是
形式jpackage --type app-image --name myappimage --input target --main-jar myuberjar.jar --main-class myapplication.core --verbose
当我 运行 这个时,我得到一个目录 ./myappimage/
并且在 ./myappimage/bin/
中有一个我可以启动到 运行 应用程序的可执行文件。但是整个事情并没有像我希望的那样捆绑到一个 AppImage 文件中。
我在这里错过了什么?
虽然AppImage is a desireable format it is not (yet) supported by JPackage. While the JPackage Documentation提到了一个命令行选项app-image,但它的意思是不同的:
--app-image文件路径 用于构建可安装包的预定义应用程序映像的位置(绝对路径或相对于当前目录)。 请参阅创建应用程序图像模式选项以创建应用程序图像。
所以 app-image 文件夹只是 JPackage 在将应用程序转换为 deb/msi/dmg 之类的本机包之前收集应用程序的所有零碎信息的文件夹。因此,请不要被这两个不同但名称相似的概念混淆。
您最好的方法是使用 JPackage assemble 所需的一切(就像 app-image 的情况一样),然后使用 AppImage.org 提供的工具从那里获取它。越来越简洁:
像这样创建应用程序图像后告诉 JPackage 退出:
jpackage --type app-image --dest app-image ...
这将使您将所有需要的文件收集在 app-image 目录中。不,不是全部。对于我的 OpenJDK(内部版本 16.0.1+9-Ubuntu-120.04),JPackage 命令忘记创建启动程序(*.desktop 文件),并且在完成对 debian 包的构建时忘记安装该文件。看看如何
从这里开始,您需要按照 AppImage packaging guide 创建一个 AppDir 目录结构,然后再最终调用打包程序。我将 app-image 目录复制到 AppDir/usr 并在 AppDir 中创建了一些符号链接。还需要创建 .desktop 文件。最重要的是指向 AppDir/usr/bin/ 中的可执行文件的符号链接 AppDir/AppRun
... 符号链接的名称必须是 AppRun。
终于关注了Manual packaging and run the appimagetool. Information how to run it seems only on the README.md。我最终得到了一个文件扩展名为 .appimage.
的可执行文件设置该文件的可执行权限并运行它。
如果您希望在 jpackage 构建安装程序作为第二步之前修改安装目录的内容,或者如果您希望 运行 或测试在不制作安装映像的情况下发布结构。
例如,在 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
在您的情况下,使用 pkg|dmg 或其他适合 --type
的值。如果您不需要进行修改,请跳过 --type app-image
步骤并直接打包为目标环境的存档格式。