如何使用JavaFX更改启动器的扩展?
我正在构建一个JavaFX应用程序,并使用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 = [ [
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插件需要一些特殊文件。