经过长期的努力,我设法在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(原始背景文件)的大小,但是由于某些原因,当图像显示为背景时,图像会“略微”缩小。
答案 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块。