springboot项目打包(exe+jdk/jre+mysql)跨平台一键安装

2023-11-18

SpringBoot项目打包(exe+jdk/jre+mysql)跨平台一键安装

1. Spring Boot将javaFX应用打包为jar包:

1.1 pom.xml安装Spring-boot-maven-plugin
<build>
      <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
       </plugins>
 </build>

Spring-boot-maven-plugin插件作用:

  1. 当运行“mvn package/ mvn clean package”进行打包时,把需要的各种依赖包都打到jar包中,使用“Java -jar”命令就可以直接运行。
  2. 一般的maven项目的打包命令,不会把依赖的jar包也打包进去的,只是会放在jar包的同目录下,能够引用就可以了,但是spring-boot-maven-plugin插件,会将依赖的jar包全部打包进去。
1.2 运行命令mvn clean package

在idea右侧maven管理栏运行打包命令,在target目录下生成jar包:
mvn package:编译代码并打包
mvn clean package:删除目标文件夹、编译代码并打包

2. exe4j将jar包打包为exe应用

建议在打包前建立用于exe4j打包的文件夹:项目名_exe4j,将生成的jar包、jre文件夹和应用的icon图标都放在该目录下,然后打开exe4j开始打包。

2.1 先百度填写有效的exe4j版本号,否则生成的exe应用会提示exe4j未激活

在这里插入图片描述

2.2 选择生成exe应用的模式

在这里插入图片描述

2.3 设置一个应用名(并非exe文件名),并指定生成的exe文件的输出位置,我这里仍然输出到刚才新建的exe4j文件夹。

在这里插入图片描述

2.4 选择打开方式、exe文件名和32位或者64运行环境

在这里插入图片描述

2.5 这一步保持默认,点击next即可

在这里插入图片描述

2.6 vm参数可根据系统项目环境要求进行配置,导入项目打包的jar,在Archive处选择预先放在exe4j目录下的jar包

-Dfile.encoding=utf-8 -XX:PermSize=512M -XX:MaxPermSize=1024M
在这里插入图片描述

2.7 设置最大运行环境和最小运行环境

在这里插入图片描述

2.8 如果电脑上之前安装过Java,默认有以下search sequence,全部删掉

在这里插入图片描述

2.9 清除掉原有的search sequence后,点击+号,加入预先放在exe4j目录下的jre,注意这里的jre是相对路径!这个.\jre目录相对路径要求:最终通过setup安装后,jre文件夹与.exe文件在同一目录,也就是这里相对路径的“根”是最终通过setup在目标电脑上安装后的根目录,运行时exe会根据这里定义的相对路径找jre,很重要!!一定要保证你定义的路径在目标电脑上的路径下有jre(这一步设置好后不需要再设置名为EXE4J_JAVA_HOME的Enviroment variable,如果要设置,也一定保证这个路径在目标电脑上是存在的)

在这里插入图片描述

2.10 选择prefered VM,然后一直next

在这里插入图片描述

2.9 此时目录下已有目标exe文件,点击可启动应用

在这里插入图片描述

3. Inno Setup将(jre+mysql+exe)打包成安装包

3.1 创建用于InnoSetup的文件夹 :项目名_InnoSetup,将安装好的jdk文件夹、mysql文件夹(我依据项目重新命名为了mymarsql)、exe文件放到该目录下

在这里插入图片描述

3.2 mymarsql配置

(a) 在mymarsql的bin目录下添加mysql_init.bat,用于数据库的安装、初始化以及环境变量配置等(运行完之后会在mysql的目录下自动生成my.ini文件)。

cd /d %~dp0
cd …
del /F %cd%\my.ini
echo 删除完成
echo [mysql]>> my.ini
echo default-character-set=utf8>> my.ini
echo [mysqld]>> my.ini
echo port = 3307>> my.ini
echo basedir=%cd%>> my.ini
echo datadir=%cd%\data>> my.ini
echo max_connections=200>> my.ini
echo character-set-server=utf8>> my.ini
echo default-storage-engine=INNODB>> my.ini
echo wait_timeout=2147483>> my.ini
echo interactive_timeout=2147483>> my.ini
echo secure_file_priv=“”>> my.ini
echo character-set-server=gbk>>my.ini
echo character_set_filesystem=gbk>>my.ini
echo my.ini生成成功
set inipath=%cd%\my.ini
cd bin
“%cd%\mysqld.exe” -remove mysqlMarried
“%cd%\mysqld.exe” -install mysqlMarried --defaults-file=“%inipath%”
“%cd%\mysqld.exe” --initialize-insecure --console
net start mysqlMarried
sc config mysqlMarried start=auto
net stop mysqlMarried
net start mysqlMarried
echo 安装完毕
“%cd%\mysqladmin.exe” -u root password 654321 -P3307
echo 修改密码完毕
cd …
“%cd%\bin\mysql.exe” -uroot -p654321 -P3307< “%cd%\initsql\myInitSql.sql”
echo 数据库初始化完成
echo 配置环境变量
echo %Path%|find /i “%cd%” && set IsNull=false || set IsNull=true
echo %IsNull%
if %IsNull%==true (
wmic ENVIRONMENT where “name=‘PATH’ and username=‘’” set VariableValue=“%path%;%cd%\bin”
)
echo 完成
exit

注:上边的配置文件分为几步:
1)生成初始化文件my.ini,定义了端口、basedir、datadir、编码等信息;
2)安装名为mysqlMarried的服务,并配置为自启动;
3)修改数据库密码;
4)导入初始化sql文件,初始化数据库;
5)配置环境变量(如果path中不含当前目录,则在path后追加当前目录下的bin目录,若存在则不追加)

(b)在mysql的bin目录下添加mysql_stop.bat,用于退出mysql服务

cd /d %~dp0
@rem %1 mshta vbscript:CreateObject(“Shell.Application”).ShellExecute(“cmd.exe”,“/c %~s0 ::”,“”,“runas”,1)(window.close)&&exit
@echo off
echo ----1.[Mysql] start uninstalling Mysql ---->>…/log.txt
sc stop mysqlMarried
sc delete mysqlMarried
echo ----2.[Mysql] uninstall Mysql finished---->>…/log.txt
echo ----3.[Mysql] delete enviroment variable---->>…/log.txt
set pathStr=%path%
set mingw=%~dp0%
set nPath=hello
setlocal enableDelayedExpansion
:Loop
for /f “delims=; tokens=1,*” %%a in (“%pathStr%”) do (
if not “%%a”= =“%mingw%” (
if “!nPath!”= =“hello” (
set nPath=“%%a”
) else (
set nPath=%nPath%;“%%a”
)
)
set pathStr=%%b
goto Loop
)
set nPath=%nPath:"=%
setx Path “%nPath%” /m
echo ----4.[Mysql] delete enviroment variable finished---->>…/log.txt
exit

注:上边的配置文件分为几步:
1)打开当前目录,停止该服务、删除该服务;
2)找到path中该环境变量,删除。

(c)在mysql目录下的initsql目录下创建myinitSql.sql初始化建表语句

create database IF NOT EXISTS myDatabase character set utf8;
set global character_set_database=utf8;
set global character_set_server=utf8;
USE myDatabase ;
SET FOREIGN_KEY_CHECKS=0;


– Table structure for user


DROP TABLE IF EXISTS user; CREATE TABLE user (
id int(10) NOT NULL AUTO_INCREMENT,
username varchar(30) DEFAULT NULL,
password varchar(30) DEFAULT NULL,
account_type int(10) DEFAULT NULL,
create_date datetime DEFAULT NULL,
PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.3 下载并安装运行软件所需要的dll文件

windows_dllFiles.exe放在项目名_InnoSetup目录下,并创建脚本init-windows_dllFiles.bat,该脚本能够下载并安装运行软件所需要的dll文件(这些文件正常来说是没有的,除非你以前装过,否则会报错)
在这里插入图片描述
init-windows_dllFiles.bat

start wait %cd%windows_dllFiles.exe q norestart
exit
3.4 Inno Setup生成iss文件,然后点击运行图标

打开Inno Setup软件按照指示生成项目对应的iss文件,然后针对生成的iss文件做部分调整。

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "TheMarried"
#define MyAppVersion "1.0"
#define MyAppPublisher "SihuiJi"
#define MyAppURL "https://www.example.com/"
#define MyAppExeName "TheMarried.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{43FDC426-E430-4C1F-B9A5-89144375AD02}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName=D:\TheMarried
ChangesAssociations=yes
DisableProgramGroupPage=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
WizardStyle=modern

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "D:\projects\TheMarried_InnoSetup\mymarsql\*"; DestDir: "{app}\mymarsql"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\projects\TheMarried_InnoSetup\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\projects\TheMarried_InnoSetup\jre\*"; DestDir: "{app}\jre"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\projects\TheMarried_InnoSetup\windows_dllFiles.exe"; DestDir: "{app}"; Flags: ignoreversion

; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[INI]
Filename:"{app}\mymarsql\my.ini";Section:"mysqld";Key:"basedir"; String:"{app}\mymarsql"
Filename:"{app}\mymarsql\my.ini";Section:"mysqld";Key:"datadir"; String:"{app}\mymarsql\data"
Filename:"{app}\mymarsql\my.ini";Section:"mysqld";Key:"port"; String:"3307"
 
[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"

[Run]
;Filename: "{app}\hide_cmd.vbs";
;Filename: "{app}\windows_dllFiles.exe";
Filename: "{app}\mymarsql\bin\mysql_init.bat";
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

[UninstallRun]
Filename: "{app}\mymarsql\bin\mysql_stop.bat";
 
[UninstallDelete]
 
Type:filesandordirs;Name:"{app}"
3.4 在 项目名_InnoSetup目录下的Output目录下生成安装包setup.exe,点击即可打开安装向导。

在这里插入图片描述

3.5 安装后的目录展示(jre、mymarsql、exe均在同一目录下)

在这里插入图片描述
至此,已实现利用exe4j和Inno setup实现将含有javafx的jar包与jre、mysql一起打包,成为可在任意电脑上使用的单机应用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot项目打包(exe+jdk/jre+mysql)跨平台一键安装 的相关文章

随机推荐

  • 瞎写

    有人说人生有两大禁忌 一忌踌躇满志 一忌心灰意冷 别人我不知道 但是对我来说 似乎一直都在这两种情绪之间跳转 说实话写这篇文章的此时我应该是处于心灰意冷这个点的 下面就随便说说当处于这个点时 自己产生的一些想法 首先 处于这个状态时整个人肯
  • 传统目标检测方法研究(一)

    1 传统算法目标检测 区域选择 gt 特征提取 gt 特征分类 1 1 区域选择 python 实现 图像滑动窗口 区域选取 首先选取图像中可能出现物体的位置 由于物体位置 大小都不固定 因此传统算法通常使用滑动窗口 Sliding Win
  • db2中各个类型互相转换处理

    给数字左侧自动占位补零 digits函数 digits 参数 digits里的参数必须是整型参数 可以是smallint int bigint decimal 其中smallint占5位 int占10位 bigint占19位 decimal
  • unity 坐标系

    https blog csdn net qq 34536551 article details 90269908
  • 什么是多态?对于多态的理解....

    什么是多态 我们都知道面向对象有四个基本特性 抽象 封装 继承 多态 概括可以理解为 抽象 封装 继承 是多态的基础 多态是抽象 封装 继承的表现 多态 是Java中非常重要的一部分 简单理解 不同类的 对象 对同一消息 做出了不同的响应就
  • 电脑重装系统(U盘)

    Windows10 1 首先需要准备一个8G或以上的U盘 空的 2 前往浏览器下载windows安装工具 网址如下 https www microsoft com zh cn software download windows10 3 下载
  • CentOS7 挂载磁盘出错mount: /dev/sdb is write-protected, mounting mount: unknown filesystem type '(null)'

    报错信息如下 root localhost mount dev sdb image mount dev sdb is write protected mounting read only mount unknown filesystem t
  • 掌握Python的X篇_19_函数的定义与调用

    文章目录 1 函数 2 函数的定义 3 函数调用 1 函数 在Python 函数是一种基本的编程接口 因为函数的调用只关心参数输入和返回值 所以使得我们可以更好地进行编程分工 以下程序的功能是得到输入的三个数字的平方值 根据前面所学的话 可
  • Blender编程入门

    在本教程中 我们将学习一些 Blender 脚本技术 比如如何使用代码处理 操作 复制和动画网格图元 要结合所有这些技术 我们将创建一个波浪形的锥形图案 一个看起来很酷的动画 你可以将其转换为循环 GIF 我将使用bpy data模块中的一
  • 一位程序员工作10年总结的13个忠告

    原文网址 http zhangxpower iteye com blog 1145448 展望未来 总结过去10年的程序员生涯 给程序员小弟弟小妹妹们的一些总结性忠告 走过的路 回忆起来是那么曲折 把自己的一些心得体会分享给程 序员兄弟姐妹
  • oracle数据库存储过程基本语法

    oracle数据库存储过程 一 基本语法 数据类型 一 字符类型 字符串数据类型还可以依据存储空间分为固定长度类型 CHAR 和可变长度类型 varchar2 nvarchar2 两种 1 char类型 定长字符串 会用空格填充来达到器最大
  • WSL 修改默认用户

    通常可以通过以下命令来指定进入 wsl 的时候使用的用户 wsl u
  • STM32驱动HX711称重模块

    使用模块如下图所示 使用单片机为STM32C8T6 引脚DT gt PB7 SCK gt PB6 使用通道A 下面是驱动程序 void GPIO Weigh Init void GPIO InitTypeDef GPIO InitStruc
  • 设计模式-单一职责原则介绍与理解

    描述 一个类应该专注于实现一个功能 好处 便于代码复用 举例 俄罗斯方块游戏 首先可以想到的是游戏逻辑与界面的分离 也就是说逻辑一个类 界面部分一个类 这样做的好处就是我们可以复用游戏逻辑的代码 例如我们用java写了一个基于PC端的俄罗斯
  • JAVA实现压缩解压文件

    1 源码运行前准备好文件夹 2 源码 package com els modules inquiry service impl import java io File import java io FileInputStream impor
  • P2PSim中重要函数的说明

    环境 RedHat9上安装的P2Psim0 3 目的 在P2Psim使用Vivaldi协议仿真 现状 主程序代码中关于vivaldi协议的部分注释掉了 思路 从主函数分析代码 找到原因 vivaldi协议主函数是vivalditest C
  • windows server 2012R2 部署安装 hmail

    windows server 2012R2 部署安装 hmail 环境说明 系统 windows server2012 R2软件版本 hMailServer 5 6 7 B2425 exe 邮件客户端 foxmail7 2版本 加密工具 h
  • Python21天打卡Day20-可变参数、关键字参数

    在 Python 中 可变参数允许函数接受任意数量的参数 这些参数被封装成一个元组 Tuple 或列表 List 并作为参数传递给函数 Python 中有两种类型的可变参数 args 用于传递可变数量的位置参数 Positional Arg
  • 【Docker系列】从头学起 Docker——docker run 命令详解

    文章目录 作用 语法格式 docker run 执行流程 options 说明 实际例子 例一 例二 例三 例四 例五 例六 例七 例八 总结 例九 作用 创建一个新的容器并运行一个命令 语法格式 docker run OPTIONS IM
  • springboot项目打包(exe+jdk/jre+mysql)跨平台一键安装

    SpringBoot项目打包 exe jdk jre mysql 跨平台一键安装 1 Spring Boot将javaFX应用打包为jar包 1 1 pom xml安装Spring boot maven plugin