如何使用 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
的创建者
我正在构建 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
的创建者