欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jar包打包成exe安裝包的實現(xiàn)

 更新時間:2022年07月21日 15:23:40   作者:小波波啊  
本文主要介紹了jar包打包成exe安裝包的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1.介紹

jar包啟動我們通常是部署在服務(wù)器上,用戶通過訪問服務(wù)器來使用系統(tǒng),但是如果用戶想弄成電腦本端單機版,這時候部署的問題就比較麻煩了,不可能每個用戶都部署一遍,那么這時候需要弄成exe安裝形式,或者腳本安裝形式,一鍵安裝部署!

現(xiàn)在我就介紹如何將jar包打包成exe安裝包

介紹:比如一個普通的springboot前后端分離項目,含有組件:redis,Nginx , 數(shù)據(jù)庫: Mysql        

思路:將用到的redis,Nginx,Mysql弄成windows服務(wù),并開機自啟,用戶只需雙擊程序啟動就能使用,無需等待

2.打包配置

  用到的工具: 
1.Inno Setup:Inno Setup是一個免費的安裝制作軟件,小巧、簡便、精美是其最大特點,官方網(wǎng)站同時也提供源程序免費下載。它雖不能與Installshield這類恐龍級的安裝制作軟件相比,但也當(dāng)之無愧算是后起之秀。(主要用來打包成exe文件格式)
2.Bat_To_Exe_Converter:可以將.bat格式的命令文件轉(zhuǎn)換為exe文件
3.mysql數(shù)據(jù)庫免安裝版:解壓后為文件夾形式,通過腳本設(shè)置mysql配置
4.jdk環(huán)境免安裝版:解壓后為文件夾形式
5.項目打包生成的jar包
6.redis壓縮包
7.nginx壓縮包

先在本地創(chuàng)建一個文件夾,將解壓好的mysql數(shù)據(jù)庫復(fù)制到該文件夾中

mysql配置

1、mysql_init.bat

在mysql/bin目錄中新建mysql_init.bat

@echo off
rem將工作路徑切換到當(dāng)前腳本所在目錄
cd /d %~dp0
 
rem開始安裝mysql
echo ----1.start installing Mysql ---->>../log.txt
"%cd%\mysqld.exe" --initialize-insecure --user=mysql --console 
cd ..
set "mysqlpath=%cd%">>../log.txt
cd bin
::創(chuàng)建服務(wù),名為mysql-job
mysqld install mysql-job --defaults-file="%mysqlpath%\my.ini"
 
rem設(shè)置mysql開機自啟
echo ----2. start Mysql service---- >>../log.txt
rem pause
net start mysql-job
sc config mysql-job  start= auto
net stop mysql-job 
net start mysql-job
 
rem設(shè)置mysql環(huán)境變量,并進行創(chuàng)建數(shù)據(jù)庫初始化
echo ----3.setting Mysql environment ---->>../log.txt 
cd ..
"%cd%\bin\mysqladmin" -u root password root
"%cd%\bin\mysql.exe" -uroot -proot < "%cd%\sql\create.sql"
echo %Path%
echo %Path%|find /i "%mysqlpath%" && set IsNull=true || set IsNull=false
echo %IsNull%
if not %IsNull%==true (
wmic ENVIRONMENT create name="MYSQL_HOME",username="<system>",VariableValue="%mysqlpath%"
rem 追加path變量
wmic ENVIRONMENT where "name='PATH' and username='<system>'" set VariableValue="%path%;%%MYSQL_HOME%%\bin;"
echo ----4. Mysql environment create/append success---->>/log.txt 
)
exit

2、mysql_stop.bat

在mysql/bin目錄中新建mysql_stop.bat

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

3、my.ini

在mysql目錄中新建my.ini

[mysqld]
basedir ="C:\mysql-5.7.31-winx64"
datadir ="C:\mysql-5.7.31-winx64\data"
port=3308
server_id =10
character-set-server=gbk
character_set_filesystem=gbk
max_allowed_packet=41942040
[client]
port=3308
default-character-set=gbk
[mysqld_safe]
timezone="CST"
[mysql]
default-character-set=utf8

4、新建create.sql文件,用于初始化項目數(shù)據(jù)庫

在mysql目錄中新建目錄sql,將create.sql文件放置其中

注:在create.sql頭部需要補充創(chuàng)建數(shù)據(jù)庫的語句,如

一定要先刪除存在的庫,沒有才創(chuàng)建
DROP DATABASE IF EXISTS `XXXXX`;
CREATE DATABASE XXXXX;
USE XXXXX;

3.項目配置

在新建的文件夾中(上面mysql所在的目錄),新建一個project文件夾,將解壓好的jdk以及項目jar包復(fù)制到project目錄中

1、start.bat

在project目錄中新建start.bat

@echo off
#判斷程序是否運行
tasklist | find /i "aaa.exe"
#判斷
if "%errorlevel%"=="1" (goto f) else (goto e)
:f
#沒運行就啟動,其中aaa.exe 為javaw.exe改名,目的后臺啟動jar包
start .\jdk1.8.0_121\bin\aaa.exe -jar aaa.jar
:e
#運行了就執(zhí)行端口判斷,判斷是否啟動完畢
netstat -ano |findstr "8084"
@echo off
netstat -ano |findstr "8084"
if "%errorlevel%"=="1" (goto f) else (goto e)
:f
echo 系統(tǒng)安裝初始化中,請等待兩分鐘后嘗試,按回車退出!
pause
exit
:e
start Chrome\Application\chrome.exe --app=http:\\localhost:8085
::這里用谷歌瀏覽器打開這個網(wǎng)址并且用 --app目的是為了隱藏工具欄和地址欄,達到高度類似單機版的概念

*******注:aaaa.jar名稱修改為你項目的jar包

2、將start.bat轉(zhuǎn)換為start.exe

將下載的Bat_To_Exe_Converter工具解壓,運行Bat_To_Exe_Converter_(x64).exe程序,在工具界面中直接打開start.bat,點擊轉(zhuǎn)換即可,將轉(zhuǎn)換之后的start.exe也存放于project目錄

*******************注意:因為windows命令會出現(xiàn)中文編碼問題,這里生成的快捷方式需要設(shè)置成gbk形式

 下載winsw,下文有提及到,配置nginx也需要用到

將下載的exe文件改名為aaaservice.exe,并創(chuàng)建一個文件名為:aaaservice.xml, 其中aaa為你定義的項目名

aaaservice.xml文件的內(nèi)容為

<service>
  <id>aaa</id>
  <name>aaa</name>
  <description>This service is a service created from a minimal configuration</description>
  <executable>.\jdk1.8.0_121\bin\aaa</executable>
  <arguments>-jar aaa.jar</arguments>
  <logpath>.\windows-service-logs</logpath>
  <log mode="roll"></log>
  <onfailure action="restart" />
</service>

注意 :.\jdk1.8.0_121\bin\aaa的這個文件是  javaw.exe復(fù)制一份并重名為 aaa.exe,目的是后臺啟動jar包后進程名稱為aaa,用于分辨啟動的jar包項目,這里的name標(biāo)簽是創(chuàng)建windows服務(wù)的服務(wù)名稱

創(chuàng)建regiester-service.bat

@echo off
rem將工作路徑切換到當(dāng)前腳本所在目錄
cd /d %~dp0
 
rem設(shè)置aaa開機自啟
echo ----2. start aaa service---- >> log.txt
rem pause
aaaservice.exe install
net stop aaa
net start aaa
exit

創(chuàng)建uninstall-service.bat

@echo off
::殺掉進程為aaa.exe
taskkill -f -t -im aaa.exe
 
@echo off
rem將工作路徑切換到當(dāng)前腳本所在目錄
cd /d %~dp0
::停掉aaa的windows服務(wù),并刪除
net stop aaa
sc delete aaa
exit

 至此jar包和mysql服務(wù)目前搞完了,現(xiàn)在搞用到的組件redis和nginx

3.redis

解壓redis壓縮包后,進去根目錄

修改redis配置文件,如項目中用到的redis端口和redis賬號密碼等。

在根目錄新建start.bat

@echo off
rem將工作路徑切換到當(dāng)前腳本所在目錄
cd /d %~dp0
 
rem開始創(chuàng)建redis服務(wù)
redis-server --service-install redis.windows-service.conf --loglevel verbose
rem pause
 
 
rem設(shè)置redis開機自啟
echo ----2. start redis service---- >>../log.txt
rem pause
net start redis
sc config redis  start= auto
net stop redis
net start redis
 
exit

在根目錄新建stop.bat

@echo off
rem將工作路徑切換到當(dāng)前腳本所在目錄
cd /d %~dp0
 
net stop redis
sc delete redis

 4.nginx

解壓nginx壓縮包后,進去根目錄

修改nginx配置反向代理的文件

監(jiān)聽端口,跳轉(zhuǎn)到頁面

如圖

我的頁面在nginx文件夾同級

 配置文件在這一級

則調(diào)轉(zhuǎn)頁面需要這樣配置

不要使用絕對路徑配置,具體層級自行根據(jù)位置調(diào)整 

然后注冊nginx服務(wù)并自啟

用到工具:winsw

https://github.com/winsw/winsw/releases/tag/v3.0.0-alpha.10

下載x64完整版,第一個需要聯(lián)網(wǎng)使用,但我試過了報錯不行,所以最好下載完整版,避免不必要的錯誤! 

下載完后將這個文件復(fù)制到nginx根目錄,并改名為nginxservice

 在nginx根目錄創(chuàng)建一個文件名為:  nginxservice.xml  ,并且內(nèi)容為如下

<service>
  <id>nginx</id>
  <name>nginx</name>
  <description>This service is a service created from a minimal configuration</description>
  <executable>.\nginx.exe</executable>
  <stopexecutable>.\nginx.exe -s stop</stopexecutable>
  <logpath>.\service-logs</logpath>
  <log mode="roll"></log>
</service>

其中l(wèi)ogpath為存放日志位置

具體的配置可參考github

1.新建nginx-service.bat

@echo off
rem將工作路徑切換到當(dāng)前腳本所在目錄
cd /d %~dp0
 
rem設(shè)置nginx開機自啟
echo ----2. start nginx service---- >> log.txt
rem pause
nginxservice.exe install
net stop nginx
net start nginx
exit

2.新建start.bat

@echo off
rem將工作路徑切換到當(dāng)前腳本所在目錄
cd /d %~dp0
 
rem開始創(chuàng)建redis服務(wù)
nginx.exe
rem pause
 
exit

3.新建stop.bat

@echo off
rem將工作路徑切換到當(dāng)前腳本所在目錄
cd /d %~dp0
 
net stop nginx
start nginx.exe -s stop
sc delete nginx

至此nginx配置完成

4.項目打包

先安裝好Inno steup程序,在新建的文件夾中(上面mysql所在的目錄),新建一個inno.iss文件

打開inno.iss文件,改配置內(nèi)容

; 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ì)資料請查閱幫助文檔!
 ;app名稱
#define MyAppName "aaaa"  
;app版本號
#define MyAppVersion "1.0"
;app作者
#define MyAppPublisher "rz"
;app訪問路徑
#define MyAppURL "http://localhost:8085"
;app工具名
#define MyAppExeName "aaaa.exe"
 
[Setup]
; 注: AppId的值為單獨標(biāo)識該應(yīng)用程序。
; 不要為其他安裝程序使用相同的AppId值。
; (生成新的GUID,點擊 工具|在IDE中生成GUID。)
AppId={{6CEE70A6-5DBD-43FF-9449-466A574C65E2}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
;生成的exe文件輸出路徑
OutputDir=C:\Users\HP\Desktop
;生成的exe文件名
OutputBaseFilename=violation
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: "C:\Users\HP\Desktop\新建文件夾\mysql-5.7.31-winx64\*"; DestDir: "{app}\mysql-5.7.31-winx64"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\HP\Desktop\新建文件夾\project\*"; DestDir: "{app}\project"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系統(tǒng)文件上使用“Flags: ignoreversion”
 
[Icons]
Name: "{commondesktop}\管理系統(tǒng)";Filename: "{app}\project\start.exe"; WorkingDir: "{app}\project"
 
[INI]
;修改數(shù)據(jù)庫配置文件
Filename:"{app}\mysql-5.7.31-winx64\my.ini";Section:"mysqld";Key:"basedir"; String:"{app}\mysql-5.7.31-winx64"
 
Filename:"{app}\mysql-5.7.31-winx64\my.ini";Section:"mysqld";Key:"datadir"; String:"{app}\mysql-5.7.31-winx64\data"
 
Filename:"{app}\mysql-5.7.31-winx64\my.ini";Section:"mysqld";Key:"port"; String:"3306"
 
Filename:"{app}\mysql-5.7.31-winx64\my.ini";Section:"client";Key:"port"; String:"3306"
;安裝時候執(zhí)行的命令
[Run]
Filename: "{app}\mysql-5.7.31-winx64\bin\mysql_init.bat";
Filename: "{app}\project\redis\start.bat";
Filename: "{app}\project\nginx-1.18.0\nginx-service.bat";
Filename: "{app}\project\regiester-service.bat";
;卸載時執(zhí)行的命令
[UninstallRun]
Filename: "{app}\mysql-5.7.31-winx64\bin\mysql_stop.bat";
Filename: "{app}\project\redis\stop.bat";
Filename: "{app}\project\nginx-1.18.0\stop.bat";
Filename: "{app}\project\uninstall-service.bat";
[UninstallDelete]
 
Type:filesandordirs;Name:"{app}"

注意:配置文件中的地址需要根據(jù)自己本地的實際環(huán)境進行修改

例如:

OutputDir=C:\Users\HP\Desktop (該路徑為生成exe程序的目錄)
Source: “C:\Users\HP\Desktop\新建文件夾\mysql-5.7.31-winx64*” (該路徑為本地新建的文件夾的地址)

將配置調(diào)整好之后,直接點擊運行圖標(biāo)進行程序打包

 打包完成會自動在OutputDir目錄下生成一個exe程序,并提示安裝。該程序安裝過程中,會自動安裝mysql數(shù)據(jù)庫,執(zhí)行初始化sql導(dǎo)入,安裝完成后,電腦桌面會生成程序的快捷方式,運行會執(zhí)行project中創(chuàng)建的start.exe程序,也就是將jar包運行起來,啟動項目。

到此這篇關(guān)于jar包打包成exe安裝包的實現(xiàn)的文章就介紹到這了,更多相關(guān)jar包打包成exe安裝包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 批量刪除Word中的空白段落示例代碼

    Java 批量刪除Word中的空白段落示例代碼

    這篇文章主要介紹了Java 批量刪除Word中的空白段落,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 教你用Java驗證服務(wù)器登錄系統(tǒng)

    教你用Java驗證服務(wù)器登錄系統(tǒng)

    這篇文章主要介紹了教你用Java驗證服務(wù)器登錄系統(tǒng),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • Maven2 plugin開發(fā)教程詳解

    Maven2 plugin開發(fā)教程詳解

    這篇文章主要為大家詳細(xì)介紹了Maven2 plugin的開發(fā)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • java實現(xiàn)滑動驗證解鎖

    java實現(xiàn)滑動驗證解鎖

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)滑動驗證解鎖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • java實現(xiàn)登錄驗證碼功能

    java實現(xiàn)登錄驗證碼功能

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)登錄驗證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 簡單談?wù)凧ava遍歷樹深度優(yōu)先和廣度優(yōu)先的操作方式

    簡單談?wù)凧ava遍歷樹深度優(yōu)先和廣度優(yōu)先的操作方式

    這篇文章主要介紹了簡單談?wù)凧ava遍歷樹深度優(yōu)先和廣度優(yōu)先的操作方式的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • Spring MVC集成springfox-swagger2構(gòu)建restful API的方法詳解

    Spring MVC集成springfox-swagger2構(gòu)建restful API的方法詳解

    這篇文章主要給大家介紹了關(guān)于Spring MVC集成springfox-swagger2構(gòu)建restful API的相關(guān)資料,文中介紹介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • Java中Stream流對多個字段進行排序的方法

    Java中Stream流對多個字段進行排序的方法

    我們在處理數(shù)據(jù)的時候經(jīng)常會需要進行排序后再返回給前端調(diào)用,比如按照時間升序排序,前端展示數(shù)據(jù)就是按時間先后進行排序,下面這篇文章主要給大家介紹了關(guān)于Java中Stream流對多個字段進行排序的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • SpringMVC攔截器創(chuàng)建配置及執(zhí)行順序

    SpringMVC攔截器創(chuàng)建配置及執(zhí)行順序

    這篇文章主要為大家介紹了SpringMVC攔截器創(chuàng)建配置及執(zhí)行順序,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Java Agents代理是什么

    Java Agents代理是什么

    Java代理Agents通過提供使我們能夠侵入JVM中正在運行的Java程序的服務(wù),在最底層工作。Java的這一強大但不可思議的部分具有在錯誤操作時使JVM崩潰的能力。本文簡要介紹了這個概念,并介紹了它的工作原理。需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09

最新評論