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命令就可以生成中文界面的安裝程序了。
在這裏插入圖片描述

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