如何使用javapackager ant任务设置DMG窗口和背景大小

时间:2018-11-10 18:31:47

标签: dmg javapackager

经过长期的努力,我设法在MacOSX(优胜美地)上生成了DMG(使用模块化JavaFX应用程序,已部署到*.app文件夹),甚至带有应用程序的自定义图标和DMG卷(都存储为构建*.icns文件夹中的package/macosx个文件)。拖放即可工作,它会安装该应用程序,然后启动该应用程序,因此一切正常。好吧,差不多。

我很想为DMG制作自定义背景。它与图标一起作为package/macosx文件放置在App-background.png文件夹中(其中App部分是我的应用的名称,与图标一样)。 javapackager实际上会拾取背景,但不幸的是,打开DMG之后,背景似乎位于窗口的左上角,窗口本身的大小是背景大小的两倍,因此是窗口大小的3/4背景只是白色。

我尝试使用不同的PNG大小,但无济于事。 DMG窗口总是比图像大。

是否有任何方法可以使javapackager(我实际上使用的fx:deploy)具有适当的设置来生成DMG,仅使DMG窗口适合背景大小?

编辑:DMG窗口似乎实际上具有PNG(原始背景文件)的大小,但是由于某些原因,当图像显示为背景时,图像会“略微”缩小。

1 个答案:

答案 0 :(得分:1)

经过长时间的调查,我发现了这种不当行为的原因(不是那么明显,而是不是直接的)。幸运的是,我也找到了解决方案。

显然,在显示DMG文件时,Finder处理PNG时存在一些问题。全部归结为包含三个字段(分别为4b,4b和1b长)的块pHYs。它是x轴上的单位像素,y轴上的单位像素,单位为0或1(0无单位,1为米单位)。使用这些值(通过十六进制编辑器)确实改变了缩放行为(和窗口大小),但是我无法找出正确的值。最终我完全摆脱了这一块(从GIMP导出为PNG,但没有保存分辨率),这解决了问题。

所以对于那些为此感到苦恼的人:请确保PNG文件中没有pHYs

编辑:使用ImageMagick可以轻松做到这一点:

$ convert image.png -define png:exclude-chunk=pHYs image.png

这将从image.png文件中剥离pHYs块。