以前开发Java FX桌面端程序,最后导报的流程一般都是先生成jar包,然后使用三方工具(exe4j等软件)转称exe文件。今天介绍一个maven的打包插件的使用,可以直接生成开发程序的安装文件。
这样项目就引入了javafx-maven-plugin插件。 此时在项目里就可以使用“mvn jfx:native”命令进行打包程序安装文件,如果你的电脑是Windows并且没有安装wix或者inno会报错无法生成文件。接下来在配置一些打包时的细节。
从这段官方描述上可以知道,插件会根据你的系统生成对应的安装文件,我在mac上试过生成的是pkg 和 dmg。下面主要看来说一下Windows上的打包配置。在windows上有两种类型的安装文件MSI(依赖WiX)和EXE(依赖InnoIDE)。这两种类型的文件在打包时都需要安装三方环境,具体的步骤可以参考https://blog.csdn.net/qq_27503061/article/details/90612455 此时打包命令执行后会在指定目录生成安装文件,直接点击就可以安装运行,但是不友好的是目前的安装界面是英文的并且点击后直接执行安装在C盘,所以我们需要加一些配置先生成一个可以选择安装目录的exe或者msi。
<plugin> <groupId>com.zenjava</groupId> <artifactId>javafx-maven-plugin</artifactId> <version>8.8.3</version> <configuration> <mainClass>com.zhy.MainApplication</mainClass> <appName>${project.build.finalName}</appName> <needShortcut>true</needShortcut><!-- 需要生成快捷方式--> <vendor></vendor> <bundleArguments> <installdirChooser>true</installdirChooser><!-- 指示用户是否可以选择应用程序安装目录的标志 --> <licenseFile>${licenseFilePath}</licenseFile> <!-- 安装时显示的用户协议 --> </bundleArguments> </configuration> </plugin>具体其他参数可以参考javapackager官方文档。 此时生成的安装文件的界面如图所示(这个是exe的安装界面,msi的我就不生成了后面会说原因),这样的英文界面非常不友好,下一步我们需要本土化称中文的界面。
由于打包依赖与wix或者inno,所以我去两个的官网找了一番都找到了各自的方式。下面先说wix的方式。
light.exe .\test.wixobj -ext WixUIExtension -ext WixUtilExtension -cultures:zh-CN是在执行light.exe这个命令时制定使用的编码,可是我在javafx-maven-plugin插件的文档描述中没有找到定义这类参数的地方,在wix的安装目录下也找到了这些字符的位置,但是我没有找到设置默认编码的地方,所以我放弃了使用MSI这种打包的方式 使用Inno打包EXE安装文件 的本地化方式 我安装的是5.6.1版本的,我刚开始安装了6.0+的版本也没有成功,需要安装unicode版本 这是官方给出的 下载位置 我用的是这个版本 innosetup-5.6.1-unicode.exe ,安装时选择语言的时候没有中文,选择英语就好了,成功后在安装目录下有一个C:\Program Files (x86)\Inno Setup 5\Default.isl 文件,我们需要把默认的语言文件从英文替换成中文。中文的语言包并不是官方提供的,在githup上有相应的地址 ,拉去文件下来后在Files\Languages\Unofficial下有一个ChineseSimplified.isl,这个就是中文的资源文件,由于我们使用的5.6.1的版本,我们需要将git仓库切换到标签 is-5_6_1上,使用master分支上的文件可能会报错导致无法生成。然后把里面的内容替换Default.isl的内容就可以了。再执行jfx:native命令就可以生成中文界面的安装程序了。