Spring boot使用javafx-maven-plugin插件打包javfx项目生成安装文件

以前开发Java FX桌面端程序,最后导报的流程一般都是先生成jar包,然后使用三方工具(exe4j等软件)转称exe文件。今天介绍一个maven的打包插件的使用,可以直接生成开发程序的安装文件。

1. 项目引入javafx-maven-plugin

<build>
	<plugins>
		<plugin>
			<groupId>com.zenjava</groupId>
			<artifactId>javafx-maven-plugin</artifactId>
			<version>8.8.3</version>
			<configuration>
                    <mainClass>启动时运行的入口类</mainClass>
                    <appName>Project Name</appName> 
                    <vendor>You Company Name</vendor> 
                </configuration>
		</plugin>
	</plugins>
</build>

这样项目就引入了javafx-maven-plugin插件。 此时在项目里就可以使用“mvn jfx:native”命令进行打包程序安装文件,如果你的电脑是Windows并且没有安装wix或者inno会报错无法生成文件。接下来在配置一些打包时的细节。在这里插入图片描述

2. 打包细节配置

Specify the used bundler found by selected bundleType. May not be installed your OS and will fail in that case.
By default this will be set to 'ALL', depending on your installed OS following values are possible for installers:
	windows.app (Creates only Windows Executable, does not bundle into Installer)
	linux.app (Creates only Linux Executable, does not bundle into Installer)
	mac.app (Creates only Mac Executable, does not bundle into Installer)
	mac.appStore (Creates a binary bundle ready for deployment into the Mac App Store)
	exe (Microsoft Windows EXE Installer, via InnoIDE)
	msi (Microsoft Windows MSI Installer, via WiX)
	deb (Linux Debian Bundle)
	rpm (Redhat Package Manager (RPM) bundler)
	dmg (Mac DMG Installer Bundle)
	pkg (Mac PKG Installer Bundle)
For a full list of available bundlers on your system, call 'mvn jfx:list-bundlers' inside your project.

从这段官方描述上可以知道,插件会根据你的系统生成对应的安装文件,我在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的我就不生成了后面会说原因),这样的英文界面非常不友好,下一步我们需要本土化称中文的界面。
在这里插入图片描述

3. 安装文件的界面本地化

由于打包依赖与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命令就可以生成中文界面的安装程序了。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章