我正在为我的 java 应用程序创建一个 DMG 安装包,以便在 OSX 上使用。我有以下脚本,它创建一个资源目录,在其中放入一些文件,然后运行 jpackage 命令来实际创建 DMG。问题是 dmg 文件在安装时使用应用程序图标而不是我指定的音量图标。
这是脚本:
# create resource directory for jpackage
printf "Creating resource directory..."
mkdir resources
cp "$APP_PATH"/src/main/resources/img/build-resources/moose-app-icon.icns "$APP_PATH"/deploy/resources/moose-app-icon.icns
cp "$APP_PATH"/src/main/resources/img/build-resources/moose180-spaced.png "$APP_PATH"/deploy/resources/moose-background.png
cp "$APP_PATH"/src/main/resources/img/build-resources/moose180-spaced.png "$APP_PATH"/deploy/resources/moose-background-darkAqua.png
cp "$APP_PATH"/src/main/resources/img/build-resources/moose-volume.icns "$APP_PATH"/deploy/resources/moose-volume.icns
echo "Done."
# actually building the package
printf "Building installation package..."
$jdk/jpackage \
--resource-dir "$APP_PATH"/deploy/resources \
--type dmg \
--input . \
--main-jar moose.jar \
--name Moose \
--app-version "$version" \
--icon resources/moose-app-icon.icns \
--description "Moose" \
--verbose
echo "Done."
在第一步(移动资源)之后,"$APP_PATH"/deploy/resources/
目录如下所示:
/deploy
/resources
- moose-app-icon.icns
- moose-background-darkAqua.png
- moose-background.png
- moose-volume.icns
这是 jpackage documentation for JDK 17 中列出的流程在覆盖 jpackage 资源部分下。它提到在您的资源目录中有一个 app-name-volume.icns
文件,我确实有 (moose-volume.icns
),但它使用的是应用程序图标 (moose-app-icon.icns
)。
当我在 jpackage 命令中使用 --verbose 标志时,我从创建脚本中获得以下输出:
[21:47:08.776] Using custom package resource [icon] (loaded from file /Users/mpfthprblmtq/Git/moose/deploy/resources/moose-app-icon.icns).
[21:47:08.776] Preparing Info.plist: /var/folders/0t/hr0vs3715v15xzjpfqpmkns40000gn/T/jdk.jpackage15144647471455641486/images/image-4445575315167377480/Moose.app/Contents/Info.plist.
[21:47:08.777] Using default package resource Info-lite.plist.template [Application Info.plist] (add Info.plist to the resource-dir to customize).
[21:47:08.778] Using default package resource Runtime-Info.plist.template [Java Runtime Info.plist] (add Runtime-Info.plist to the resource-dir to customize).
[21:47:08.779] Using default package resource background_dmg.tiff [dmg background] (add Moose-background.tiff to the resource-dir to customize).
[21:47:08.779] Using custom package resource [volume icon] (loaded from file /Users/mpfthprblmtq/Git/moose/deploy/resources/moose-app-icon.icns).
[21:47:08.780] Preparing dmg setup: /var/folders/0t/hr0vs3715v15xzjpfqpmkns40000gn/T/jdk.jpackage15144647471455641486/config/Moose-dmg-setup.scpt.
[21:47:08.780] Using default package resource DMGsetup.scpt [DMG setup script] (add Moose-dmg-setup.scpt to the resource-dir to customize).
[21:47:08.781] Creating DMG file: /Users/mpfthprblmtq/Git/moose/deploy/Moose-1.4.0.dmg.
这告诉我,当我明确将 moose-volume.icns
文件与主文件处于同一级别时,jpackage 正在使用我的 moose-app-icon.icns
应用程序图标。关于如何告诉 jpackage 使用 moose-volume.icns
文件而不是应用程序图标,有什么想法吗?
我使用的是 OSX Ventura 13.2.1,我的 jpackage 版本是 17.0.3。
最佳答案
根据您自己提供的网页信息:
macOS DMG
- DMG setup script, application-name-dmg-setup.scpt.
- Applications license properties list, application-name-license.plist.
- Background file, application-name-background.tiff.
- Drive icon, application-name-volume.icns.
因此,您应该使用 moose.icns
作为应用程序图标,moose-volume.icns
作为音量图标和 - -name moose
作为您的应用程序名称(注意小写字母)。如果您选择将应用程序命名为 Moose,则将图标更新为 Moose.icns
和 Moose-volume.icns
– 它区分大小写,并且实际上适用于我的应用程序,但是 < em>application-name 部分必须完全匹配您的应用程序名称(由 --name
选项指定)。
关于java - 如何使用 Java 17 的 jpackage 实用程序设置 MacOS DMG 音量图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75818974/