抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年
人们总是混淆了欲望和理想

使用 jpackage 将 JavaFx jar 封装为 MacOS DMG 安装器 – 例 NS-USBloader

常用 Switch 的朋友,可能知道有一个工具叫 ns-usbloader,github 地址:https://github.com/developersu/ns-usbloader

因作者仅提供了 jar 运行方式,无法在启动菜单留存,使用略有不便,于是就自己打个包套个壳。

适用于所有 Java 环境下双击 jar 就能运行的程序。示例:

jpackage \
--name NS-USBloader \
--input ./jar \
--main-jar ns-usbloader-7.2-m1.jar \
--type dmg \
--dest ../ \
--icon ./app.icns \
--app-version 7.2 \
--jlink-options "--strip-debug --compress=2 --no-header-files --no-man-pages"

可编辑的部分:

--name       应用程序名
--input jar 所在位置,打包时会将该文件夹内所有文件打包
--main-jar jar 文件名
--type dmg 打包为 dmg,当然也可以是 app-image 等其他
--dest 输出目录位置
--icon 图标位置,MacOS 的图标格式为 icns
--app-version 版本号
--jlink-options 本来是想精简下成包体积,但 DMG 特有的压缩算法,只能图个安慰

由于 jpackage 会默认打包完整的 jre ,好处不用配置环境,坏处文件体积略大,尝试了自打包,解包再打包,总而言之,言而总之,jpackage 自带的打包算法已经是最优。

关于生成的 APP:可在 NS-USBloader.app/Contents/app 中找到 Jar 对比 github 上的原文件。此外,文件结构应清晰明了无多余文件:

/Applications/NS-USBloader.app ❯ tree -L 3
.
└── Contents
├── Info.plist
├── MacOS
│   └── NS-USBloader
├── PkgInfo
├── Resources
│   └── NS-USBloader.icns
├── _CodeSignature
│   └── CodeResources
├── app
│   ├── NS-USBloader.cfg
│   └── ns-usbloader-7.2-m1.jar
└── runtime
└── Contents

8 directories, 7 files

包括生成的安装器,也是精细布局过的,倒是有点不像 Java 的风格。

打包的 NS-USBloader-7.2.dmg 也分享一下,也许有朋友用得着。

下载地址

链接: https://pan.baidu.com/s/1iMjTJ3An1jxU243OR3wzww 提取码: ts9f

免责声明:请勿从其他地方获取该安装器,因此遭遇的风险自行承担,图标资源来自 GPT 自动生成。

以上。


本站广告由 Google AdSense 提供

0条评论

发表评论

在 TA 离去的那一刻

“仍在努力工作”