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

如何使用JavaFX更改启动器的扩展?,java,javafx,javafx-gradle-plugin,Java,Javafx,Javafx Gradle Plugin,我正在构建一个JavaFX应用程序,并使用JavaFX打包工具。我正在使用这种配置生成各种启动器: jfx { mainClass = "tech.dashman.dashman.ConfiguratorApp" vendor = "Dashman" appName = "Dashman" nativeReleaseVersion = "1.0.0" secondaryLaunchers = [ [

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

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

OracleJDK/OpenJDK在将所有工具捆绑在一起时有一些非常令人困惑的方式(我仍在努力让它与JDK9兼容,但这主要是因为缺少这个项目的空闲时间)。内部javapackager lib包含一些所谓的“bundler”,它们的主要工作是准备正确的jfxjar,生成所有必需的安装程序创建文件,并使用正确的名称将本机启动器(exe文件)复制到正确的位置。这有很多限制:安装程序创建文件包含很多硬编码的内容,包括文件扩展名等

我创建了一些小示例项目,用于创建一些自己的绑定器,您需要为此重新实现:

您需要复制粘贴此文件中的某些内容:

请仔细查看使用过的模板,该模板位于资源文件夹:

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


免责声明:我是javafx gradle插件的创建者

只是想澄清一下(因为我不使用Windows)是一个
.scr
文件,除了扩展名不同之外,它与
.exe
文件的二进制文件完全相同?简短回答:不可能,开箱即用,详细回答如下;)@克里:对。@Pablo听起来像是对文件进行重命名可能会起作用?我不是Gradle专家,但我知道您可以从Gradle脚本调用常规Maven插件。您可以使用
复制重命名maven插件来执行此操作吗?:@Kerry问题在于无法在gradle中执行操作,“问题”在于javapackager/JDK,因为javapackager/javafx gradle插件需要一些特殊文件。