您的位置:首頁(yè) > 軟件教程 > 教程 > 如何打包Java應(yīng)用和Mysql數(shù)據(jù)庫(kù)成一個(gè)安裝包

如何打包Java應(yīng)用和Mysql數(shù)據(jù)庫(kù)成一個(gè)安裝包

來源:好特整理 | 時(shí)間:2024-05-13 15:49:52 | 閱讀:74 |  標(biāo)簽: T VA 一個(gè) AVA v S in 配置 應(yīng)用 AV java 數(shù)據(jù)庫(kù)   | 分享到:

前言 出現(xiàn)有需要打包 Java 應(yīng)用和 Mysql數(shù)據(jù)庫(kù)成一個(gè)安裝包給出去的需求,這里我把整個(gè)打包的流程整理一下。 環(huán)境 JDK17; MySQL 5.7; 流程 Jpackage打包EXE Jpackage是JDK14后加入的一個(gè)用于獨(dú)立打包的工具,能夠?qū)?yīng)用打包成exe,有了Jpackage就不

出現(xiàn)有需要打包 Java 應(yīng)用和 Mysql數(shù)據(jù)庫(kù)成一個(gè)安裝包給出去的需求,這里我把整個(gè)打包的流程整理一下。

JDK17;

MySQL 5.7;

Jpackage打包EXE

Jpackage是JDK14后加入的一個(gè)用于獨(dú)立打包的工具,能夠?qū)?yīng)用打包成exe,有了Jpackage就不需要用exe4j這種打包工具,省去打包的繁瑣流程。

首先在idea里面打好Jar包,記下jar包的名字,比如是application.jar。打完后Jar包的目錄一般是在target文件夾下,進(jìn)到項(xiàng)目的目錄,在上方的輸入欄里輸入打包命令,回車。

如何打包Java應(yīng)用和Mysql數(shù)據(jù)庫(kù)成一個(gè)安裝包

打包命令:

jpackage --type app-image --name application --input target --main-jar application.jar --win-console --dest dist

打包完成后可以在dist文件夾里面看到對(duì)應(yīng)的項(xiàng)目,雙擊exe就可以運(yùn)行起項(xiàng)目。

jpackage命令詳情:

  • --type :指定要?jiǎng)?chuàng)建的安裝程序的類型,如 exe 、 msi (僅限 Windows)、 pkg (僅限 macOS)、 deb 、 rpm 等。
  • --input :指定要打包的輸入文件或目錄的路徑。
  • --dest :指定生成安裝程序的目標(biāo)目錄。
  • --name :指定應(yīng)用程序的名稱。
  • --app-version :指定應(yīng)用程序的版本號(hào)。
  • --main-jar :指定應(yīng)用程序的主 JAR 文件。
  • --main-class :指定應(yīng)用程序的主類。
  • --icon :指定應(yīng)用程序的圖標(biāo)文件。
  • --vendor :指定應(yīng)用程序的供應(yīng)商名稱。
  • --runtime-image :指定自定義的運(yùn)行時(shí)鏡像目錄--runtime-image
  • --java-options "-D..." :指定自定義VM運(yùn)行參數(shù)。

MySQL打包準(zhǔn)備

下載MySQL

進(jìn)入MySQL官網(wǎng),MySQL :: Download MySQL Community Server (Archived Versions),選擇合適的打包,下載Zip版本。

如何打包Java應(yīng)用和Mysql數(shù)據(jù)庫(kù)成一個(gè)安裝包

下載完成后解壓,打開解壓的文件夾,這里我采用將設(shè)置好賬戶和創(chuàng)建好相應(yīng)表的數(shù)據(jù)庫(kù)對(duì)應(yīng)的data文件夾復(fù)制到剛剛解壓的MySQL根目錄下,這樣子我只需要用命令行初始化MySQL,不需要去執(zhí)行其他創(chuàng)建表和賬戶權(quán)限的語句,即可實(shí)現(xiàn)數(shù)據(jù)庫(kù)的開箱即用。也可以是在初始化的bat文件里執(zhí)行相關(guān)的sql語句,對(duì)應(yīng)下面的myinit_admin.bat文件。

配置MySQL

在根目錄下創(chuàng)建my.ini,輸入以下內(nèi)容:

[client]
port=3306
[mysql]
default-character-set=utf8
[mysqld]
port=3306
character-set-server=utf8
default-storage-engine=INNODB
max_connections=100
table_open_cache=256
tmp_table_size=35M
thread_cache_size=8
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=69M
key_buffer_size=50M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=96M
innodb_log_file_size=20M
innodb_thread_concurrency=18

創(chuàng)建兩個(gè)bat文件, 并且在執(zhí)行bat的時(shí)候獲取系統(tǒng)的管理員權(quán)限 ,如果沒有管理員權(quán)限會(huì)無法初始化。

創(chuàng)建myinit_admin.bat文件,流程是先往my.ini里面寫入mysql的路徑和data文件對(duì)應(yīng)的路徑,獲取管理員的權(quán)限進(jìn)行MySQL初始化命令的執(zhí)行。 這個(gè)文件是在安裝的時(shí)候執(zhí)行。

echo
set CURRENT_DIR=%~dp0
set CURRENT_DIR=%CURRENT_DIR:\=/%
echo basedir="%CURRENT_DIR%">%CURRENT_DIR%my.ini
echo datadir="%CURRENT_DIR%data/">%CURRENT_DIR%my.ini

@echo off
 
:: 開始獲取管理員權(quán)限
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
    echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
    echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
    echo WScript.Quit >>"%temp%\%uac%.vbs"
    "%temp%\%uac%.vbs" /f
    del /f /q "%temp%\%uac%.vbs" & exit )
endlocal

echo

cd /d %~dp0 

cd bin
 
"%cd%\mysqld.exe" --initialize-insecure --user=mysql --console
echo -----mysql init succee-----
 
mysqld install mysql 
echo -----mysql service install succee-----
 
net start mysql
sc config mysql start=auto 
net stop mysql
net start mysql
echo Installation complete 
 


timeout /nobreak /t 10
exit

創(chuàng)建mystop_admin.bat文件,同樣需要獲取管理員權(quán)限。 這個(gè)文件是在MySQL卸載的時(shí)候執(zhí)行。

@echo off
 
:: 開始獲取管理員權(quán)限
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
    echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
    echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
    echo WScript.Quit >>"%temp%\%uac%.vbs"
    "%temp%\%uac%.vbs" /f
    del /f /q "%temp%\%uac%.vbs" & exit )
endlocal


@echo off
cd /d %~dp0
echo ----1.[Mysql] start uninstalling Mysql ---->>../log.txt
sc stop mysql
sc delete mysql
echo ----2. [Mysql] uninstall finished---- >>../log.txt
exit

Inno Setup的安裝和配置

進(jìn)入Inno Setup Downloads (jrsoftware.org),進(jìn)行下載安裝。

創(chuàng)建一個(gè)文件夾,將MySQL和打包后的Java應(yīng)用文件夾都放到一起,Java程序放在project文件夾下。

如何打包Java應(yīng)用和Mysql數(shù)據(jù)庫(kù)成一個(gè)安裝包

創(chuàng)建Inno.iss文件,用inno Setup打開,在里面輸入:

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 
[Setup]
 
; 腳本由 Inno Setup 腳本向?qū)?生成!
; 有關(guān)創(chuàng)建 Inno Setup 腳本文件的詳細(xì)資料請(qǐng)查閱幫助文檔!
 
#define MyAppName "Application"
#define MyAppVersion "1.0"
#define MyAppPublisher "zh"
#define MyAppExeName "application.exe"
 
[Setup]
; 注: AppId的值為單獨(dú)標(biāo)識(shí)該應(yīng)用程序。
; 不要為其他安裝程序使用相同的AppId值。
; (生成新的GUID,點(diǎn)擊 工具|在IDE中生成GUID。)
AppId={{6CEE70A6-5DBD-43FF-9449-466A574C65E1}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}                                            
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
; 輸入你要生成exe安裝包的路徑
OutputDir=E:\xxxx
; 輸入程序安裝后的文件名
OutputBaseFilename=Application
Compression=lzma
SolidCompression=yes
;AlwaysRestart=yes
;PrivilegesRequired=admin

[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
 
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
 
[Files]
Source: "E:\xxx\mysql-5.7.41-winx64\*"; DestDir: "{app}\mysql-5.7.41-winx64"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "E:\xxx\project\*"; DestDir: "{app}\project"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系統(tǒng)文件上使用“Flags: ignoreversion”
 
; Java exe對(duì)應(yīng)的目錄
[Icons]
Name: "{commondesktop}\Application";Filename: "{app}\project\applicaiton.exe"; WorkingDir: "{app}\project"
 
[INI]
;修改數(shù)據(jù)庫(kù)配置文件(注意這個(gè)步驟,在上面的myinit_admin.bat已經(jīng)獲得了數(shù)據(jù)庫(kù)和data的路徑,但是不知道為什么我獲取的路徑會(huì)有點(diǎn)問題,在這個(gè)步驟也可以寫入相應(yīng)的路徑。
;Filename:"{app}\mysql-5.7.41-winx64\my.ini";Section:"mysqld";Key:"basedir"; String:"{app}\mysql-5.7.41-winx64"
;Filename:"{app}\mysql-5.7.41-winx64\my.ini";Section:"mysqld";Key:"datadir"; String:"{app}\mysql-5.7.41-winx64\data"
 
 
; 安裝的時(shí)候會(huì)執(zhí)行
[Run]
Filename: "{app}\mysql-5.7.41-winx64\myinit_admin.bat";
 
; 卸載的時(shí)候會(huì)執(zhí)行
[UninstallRun]
Filename: "{app}\mysql-5.7.41-winx64\mystop_admin.bat";
 
[UninstallDelete]
 
Type:filesandordirs;Name:"{app}"

在軟件左上方點(diǎn)擊run

如何打包Java應(yīng)用和Mysql數(shù)據(jù)庫(kù)成一個(gè)安裝包

執(zhí)行完成生成了一個(gè)exe安裝包,雙擊這個(gè)安裝包選擇相應(yīng)路徑進(jìn)行安裝。只要Java程序已經(jīng)配置好了相應(yīng)的數(shù)據(jù)庫(kù)連接,則安裝后軟件即可進(jìn)行使用。

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號(hào)!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]

湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2024 haote.com 好特網(wǎng)