我使用Oracle“自包含应用程序打包”工具为JavaFX 8桌面应用程序创建可安装的包。我包含一个带图标的文件关联。这适用于Mac和Windows,但在Linux上,图标不会显示使用文件关联创建的文件。
我从一个简单的Ant脚本运行打包工具。构建的其余部分是Gradle,所以我从Gradle调用Ant。以下是Ant脚本的相关部分:
<project name="VocabHunter Packaging" basedir=""
xmlns:fx="javafx:com.sun.javafx.tools.ant">
...
<target name="jfxbundle" description="Build the application bundle">
<taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
uri="javafx:com.sun.javafx.tools.ant"
classpath="${JAVA_HOME}/lib/ant-javafx.jar"/>
<fx:deploy outdir="${basedir}/build"
nativeBundles="${packageType}">
...
<fx:info title="VocabHunter">
<fx:association description="VocabHunter session"
extension="wordy"
mimetype="application/x-vnd.VocabHunterSession"
icon="${sessionIcon}"/>
</fx:info>
...
</fx:deploy>
</target>
</project>
Gradle版本为${sessionIcon}
变量分配值icons/Doc1024.png
。
您可以在上下文here中看到完整的脚本。
如果我将verbose="true"
添加到<fx:deploy>
元素,然后使用-info
标记运行Gradle,我可以看到它选择了应用程序图标但不是文件关联图标:
Using custom package resource [menu icon] (loaded from file /VocabHunter/package/icons/App1024.png)
Using default package resource [Menu shortcut descriptor] (add package/linux/VocabHunter.desktop to the class path to customize)
Using default package resource [DEB control file] (add package/linux/control to the class path to customize)
Using default package resource [DEB preinstall script] (add package/linux/preinst to the class path to customize)
Using default package resource [DEB prerm script] (add package/linux/prerm to the class path to customize)
Using default package resource [DEB postinstall script] (add package/linux/postinst to the class path to customize)
Using default package resource [DEB postrm script] (add package/linux/postrm to the class path to customize)
Using default package resource [DEB copyright file] (add package/linux/copyright to the class path to customize)
有谁知道如何让文件关联图标适用于Linux?
在Linux上,生成的文件类型为.deb
。我在Ubuntu 16.04上使用JDK 1.8.0_91进行测试。