我正在尝试使用AppImage创建一个JPackage (在Ubuntu18.04系统上使用OpenJDK 14)
我找到的所有例子都是形式上的
jpackage --type app-image --name myappimage --input target --main-jar myuberjar.jar --main-class myapplication.core --verbose当我运行它时,我得到一个目录./myappimage/,在./myappimage/bin/中,我可以启动一个可执行文件来运行应用程序。但整件事并没有像我想的那样被捆绑到一个AppImage文件中。
我在这里错过了什么?
发布于 2022-01-18 06:41:01
虽然AppImage是一种受欢迎的格式,但JPackage还不支持它。虽然JPackage文档提到了一个命令行选项app-image,但它的含义是不同的:
--用于构建可安装包(绝对路径或相对于当前目录)的预定义应用程序映像的app映像文件路径位置。请参见创建应用程序图像模式选项以创建应用程序映像。
因此,应用程序图像文件夹只是一个文件夹,在此文件夹中,JPackage收集应用程序的所有零碎信息,然后将其转换为一个本地包,如deb/msi/dmg。因此,不要被这两个不同但命名相同的概念搞混了。
最好的方法是使用JPackage来组装所需的一切(就像应用程序映像的情况一样),然后用AppImage.org提供的工具从那里获取它。变得更简洁:
在创建了像这样的应用程序映像之后,告诉JPackage退出:
jpackage --type app-image --dest app-image ...这将留下您需要收集的所有文件在应用程序图像目录。不,不是所有的。对于我的OpenJDK (Build16.0.1+9-Ubuntu-120.04),JPackage命令忘记创建启动程序(*.desktop文件),当完成对debian包的构建时,它会忘记安装该文件。看看我绕过去了怎么做。
从这里开始,您需要遵循AppImage包装指南来创建一个AppDir目录结构,然后才能最终调用packager。我将应用程序映像目录复制到AppDir/usr中,并在AppDir中创建了几个符号链接。还需要创建.desktop文件。最重要的是指向AppDir/usr/bin/.符号链接的名称必须是AppRun。
最后,遵循人工包装并运行appimagetool。关于如何运行它的信息,似乎只在README.md上运行。最后,我得到了一个文件扩展名为.appimage的可执行文件。
设置该文件的可执行权限并运行它。
发布于 2022-01-19 16:44:54
如果您希望在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阶段,从修改后的app映像结构生成一个安装程序:
jpackage --app-image jpackage.dir/yourappname --type exe在您的情况下,请使用pkg、x、dmg或其他适合--type的值。如果您不需要进行修改,跳过--type app-image步骤并将其直接打包为目标环境的存档格式。
https://stackoverflow.com/questions/61612710
复制相似问题