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

How do I change the extension of a launcher using JavaFX?

我正在构建 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。如何在生成安装文件之前使用该名称生成它或重命名它?

开箱即用的你的请求确实是 "impossible",但有一个解决方案和一些解释。

OracleJDK/OpenJDK 有一些非常混乱的方式将所有工具捆绑在一起(而且我仍在为使其与 JDK9 兼容而努力,但这主要是因为缺少这个项目的空闲时间).内部 javapackager-libs 包含一些所谓的 "bundler",它们主要工作是准备正确的 jfx-jar,生成所有必需的安装程序创建文件并将本机启动程序(exe 文件)复制到正确的位置用正确的名字放置。这有很多限制:安装程序创建文件包含大量硬编码内容,包括文件扩展名等。

我已经创建了一些小示例项目来创建一些 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

请仔细查看使用的模板,它可以在资源文件夹中: 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

的创建者