如何使用JavaFX更改启动器的扩展名?

时间:2017-12-11 12:55:12

标签: java javafx javafx-gradle-plugin

我正在构建一个JavaFX应用程序,并通过JavaFX-Gradle-plugin使用JavaFX打包工具。我正在生成具有此配置的各种启动器:

jfx {
    mainClass = "tech.dashman.dashman.ConfiguratorApp"
    vendor = "Dashman"
    appName = "Dashman"
    nativeReleaseVersion = "1.0.0"

    secondaryLaunchers = [
            [
                    appName  : "Dashman Renderer",
                    mainClass: "tech.dashman.dashman.RendererApp",
                    needMenu : true
            ],
            [
                    appName  : "Dashman Displayer",
                    mainClass: "tech.dashman.dashman.DisplayerApp",
                    needMenu : true
            ],
            [
                    appName  : "Dashman Screensaver",
                    mainClass: "tech.dashman.dashman.WinScreensaverApp",
                    needMenu : false
            ]
    ]
}

但最后一个,要成为一个合适的Windows屏幕保护程序,它需要.scr扩展名而不是.exe。如何使用该名称生成它或在生成安装文件之前重命名它?

1 个答案:

答案 0 :(得分:2)

开箱即用你的请求确实是“不可能的”#34;但是有一个解决方案和一些解释。

OracleJDK / OpenJDK有一些非常令人困惑的方式将所有工具捆绑在一起(我仍然在努力使我的进度与JDK9兼容,但这主要是因为缺少了这个项目的业余时间)。内部javapackager-libs包含一些所谓的" bundler",它主要用于准备正确的jfx-jar,生成所有必需的安装程序创建文件并复制本机启动程序(exe文件)用正确的名字到正确的地方。这有很多限制:installer-creation-file包含很多硬编码的东西,包括文件扩展名和这些东西。

我已经创建了一些用于创建OWN捆绑器的小型示例项目,您需要为此重新实现: https://github.com/javafx-maven-plugin/javafx-maven-plugin/tree/master/src/it/23-simple-custom-bundler

您需要从此文件中复制粘贴一些内容: http://hg.openjdk.java.net/openjfx/8u-dev/rt/file/bb53ab0b66a0/modules/fxpackager/src/main/java/com/oracle/tools/packager/windows/WinExeBundler.java

请仔细查看使用过的模板,该模板位于resources-folder: http://hg.openjdk.java.net/openjfx/8u-dev/rt/file/bb53ab0b66a0/modules/fxpackager/src/main/resources/com/oracle/tools/packager/windows/template.iss#l42

请关注这些文件的许可证,我不能提供法律建议,只是在这里传播我的想法。

免责声明:我是javafx-gradle-plugin的创建者