2

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

4

1 回答 1

2

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

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-bundle

您需要从该文件中复制粘贴一些内容: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 的创建者

于 2017-12-11T13:37:49.640 回答