如何使用 javapackager ant 任务设置 DMG window 和背景大小
How to set DMG window and background size using javapackager ant task
经过长时间的努力,我设法在 MacOSX (Yosemite) 上生成(使用 Ant)一个 DMG(部署到 *.app
文件夹的模块化 JavaFX 应用程序),即使使用应用程序的自定义图标和DMG 卷(都作为 *.icns
文件存储在构建的 package/macosx
文件夹中)。拖放工作,它安装应用程序,应用程序启动所以一切都很好。嗯,差不多。
我也想为 DMG 制作自定义背景。它与 package/macosx
文件夹中的图标一起作为 App-background.png
文件(其中 App
部分是我的应用程序的名称,与图标一样)。而javapackager
其实是把背景捡起来的,可惜打开DMG后背景好像放在了windows的左上角,window本身就是背景的两倍大, 所以 window 的背景有 3/4 只是白色。
我尝试了不同的 PNG 尺寸,但无济于事。 DMG window 总是比图片大很多。
有什么方法可以让 javapackager
(也就是我实际使用的 fx:deploy
)通过适当的设置生成 DMG,从而使 DMG window 适合背景大小?
编辑:看起来 DMG window 实际上具有 PNG(原始背景文件)的大小,但由于某种原因图像显示为背景,"slightly" 缩小了。
经过长时间的调查,我找到了造成这种不当行为的(不是很明显也不是直接的)原因。幸运的是我也找到了解决方案。
显然,Finder 在显示 DMG 文件时处理 PNG 存在一些问题。这一切都归结为包含 3 个字段(分别为 4b、4b 和 1b 长)的块 pHYs
。它是 x 轴上的每单位像素,y 轴上的每单位像素和 0 或 1 单位(0 无单位,1 米单位)。使用这些值(通过十六进制编辑器)确实以某种方式改变了缩放行为(和 window 大小),但我无法找出正确的值。最终 我完全摆脱了这个块(从 GIMP 导出为 PNG 而不保存分辨率)并且解决了这个问题。
因此,对于遇到此问题的任何人:只要确保 PNG 文件中没有 pHYs
块。
编辑:使用 ImageMagick 可以轻松做到这一点:
$ convert image.png -define png:exclude-chunk=pHYs image.png
这会从 image.png
文件中删除 pHYs 块。
经过长时间的努力,我设法在 MacOSX (Yosemite) 上生成(使用 Ant)一个 DMG(部署到 *.app
文件夹的模块化 JavaFX 应用程序),即使使用应用程序的自定义图标和DMG 卷(都作为 *.icns
文件存储在构建的 package/macosx
文件夹中)。拖放工作,它安装应用程序,应用程序启动所以一切都很好。嗯,差不多。
我也想为 DMG 制作自定义背景。它与 package/macosx
文件夹中的图标一起作为 App-background.png
文件(其中 App
部分是我的应用程序的名称,与图标一样)。而javapackager
其实是把背景捡起来的,可惜打开DMG后背景好像放在了windows的左上角,window本身就是背景的两倍大, 所以 window 的背景有 3/4 只是白色。
我尝试了不同的 PNG 尺寸,但无济于事。 DMG window 总是比图片大很多。
有什么方法可以让 javapackager
(也就是我实际使用的 fx:deploy
)通过适当的设置生成 DMG,从而使 DMG window 适合背景大小?
编辑:看起来 DMG window 实际上具有 PNG(原始背景文件)的大小,但由于某种原因图像显示为背景,"slightly" 缩小了。
经过长时间的调查,我找到了造成这种不当行为的(不是很明显也不是直接的)原因。幸运的是我也找到了解决方案。
显然,Finder 在显示 DMG 文件时处理 PNG 存在一些问题。这一切都归结为包含 3 个字段(分别为 4b、4b 和 1b 长)的块 pHYs
。它是 x 轴上的每单位像素,y 轴上的每单位像素和 0 或 1 单位(0 无单位,1 米单位)。使用这些值(通过十六进制编辑器)确实以某种方式改变了缩放行为(和 window 大小),但我无法找出正确的值。最终 我完全摆脱了这个块(从 GIMP 导出为 PNG 而不保存分辨率)并且解决了这个问题。
因此,对于遇到此问题的任何人:只要确保 PNG 文件中没有 pHYs
块。
编辑:使用 ImageMagick 可以轻松做到这一点:
$ convert image.png -define png:exclude-chunk=pHYs image.png
这会从 image.png
文件中删除 pHYs 块。