目录
简介
将java项目打包在windows系统上运行,spring boot+redis+mysql+jdk(亲测,已成功)
笔者将环境和jar包分开打成两个exe文件进行打包,便于后期项目的迭代更新不会影响到项目的环境
Inno Setup
下载
需要使用Inno Setup 工具进行打包
下载地址:[官网地址](https://jrsoftware.org/isinfo.php)
笔者使用的是6.1.2版本
打包成功后会将.exe写入到此文件夹中
配置
新建.iss文件
笔者将项目环境放在D:\project\tool目录下
jar包和logo图放在D:\project\park目录下
环境的iss文件
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppId "hytc.jar"
#define MyAppName "项目运行环境"
#define MyAppVersion "1.0"
#define MyAppPublisher "Nonstandard Automation Technology Co., Ltd"
#define MyAppURL "http://localhost:8080"
#define MyAppExeName "hytc.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={#MyAppId}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName=D:\park
SetupIconFile=D:\project\park\favicon.ico
DisableProgramGroupPage=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputBaseFilename={#MyAppName}
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:\project\tool\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
; 快捷键
;[Icons]
;Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}";
; 程序安装成功后执行脚本
[Run]
Filename: "{app}\init-windows_dllFiles.bat";
Filename: "{app}\install.bat";
Filename: "{app}\redis\redis_x64\init-redis.bat";
Filename: "{app}\redis\redis_x64\start-redis.bat";
;程序御载后执行脚本
[UninstallRun]
Filename: "{app}\unload.bat";
jar包的iss文件
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppId "hytc.jar"
#define MyAppName "智慧停车"
#define MyAppVersion "1.0"
#define MyAppPublisher "Nonstandard Automation Technology Co., Ltd"
#define MyAppURL "http://127.0.0.1:10086"
#define MyAppExeName "hytc.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={#MyAppId}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName=D:\park
SetupIconFile=D:\project\park\favicon.ico
DisableProgramGroupPage=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputBaseFilename={#MyAppName}
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:\project\park\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
; 快捷键
[Icons]
;Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}";
Name: "{commondesktop}\{#MyAppName}"; Filename: http://127.0.0.1:10086 ;IconFilename : {app}\favicon.ico
; 程序安装成功后执行脚本
[Run]
Filename: "{app}\source\init-park.bat";
Filename: "{app}\start-park.bat";
;程序御载后执行脚本
[UninstallRun]
Filename: "{app}\unload.bat";
环境
下载redis+jdk+mysql
笔者下载的全是绿色免安装的,直接去官网下载即可
脚本制作
初始化jdk和mysql的脚本
位置:D:\project\tool\install.bat
@echo off
title 软件配置安装中,请不要手动关闭
color 0a
echo 配置安装环境中...
setx /M JAVA_HOME "%~dp0%jdk/JDK8"
setx /M MYSQL_HOME "%~dp0%mysql\mysql-5.7.23-winx64"
setx /M REDIS_HOME "%~dp0%redis\redisbin_x64"
setx /M CLASS_PATH ".;%%JAVA_HOME%%\lib;"
setx /M PATH "%PATH%;%%JAVA_HOME%%\bin;%%MYSQL_HOME%%\bin;%%TOMCAT_HOME%%\bin;%%REDIS_HOME%%"
echo 环境变量配置成功
cd "%~dp0%"
echo 开始安装数据库
cd mysql\mysql-5.7.23-winx64
bin\mysqld.exe install
bin\mysqld.exe --initialize-insecure --user=mysql
net start MySQL
sc config MySQL start= auto
echo 数据库启动中...
ping -n 3 127.1>nul
echo 初始化数据库...
bin\mysqladmin.exe -u root password 777777
echo 初始化数据库表
bin\mysql.exe -u root -p777777 < initsql\hytcV2.sql
echo 数据库安装完成
echo 安装完成
ping -n 3 127.1>nul
安装注册成功后也一起将数据库也初始化了
设置数据库的密码
bin\mysqladmin.exe -u root password 777777
-p:使用此密码,初始化数据库hytcV2.sql是sql语句,需要自己写,目录:D:\project\tool\mysql\mysql-5.7.23-winx64\initsql\hytcV2.sql
bin\mysql.exe -u root -p777777 < initsql\hytcV2.sql
业务有数据库定时任务需要执行
在安装目录新建my.ini文件
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
# basedir=D:\\project\\tool\\mysql\\mysql-5.7.23-winx64
# 允许最大连接数
max_connections=500
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 开启定时器
event_scheduler = on
初始化redis脚本
init-redis.bat
位置:D:\project\tool\redis\redis_x64
@echo off
redis-server --service-install
redis.windows-service.conf --loglevel verbose
start-redis.bat
@echo off
net start Redis
在redis.windows-service.conf 文件中加入daemonize yes
redis的脚本很简单,就是将redis先注册为服务,在启动
下载并安装运行软件所需要的dll文件(这些文件正常来说是没有的,除非你以前装过,否则会报错)
dll文件下载地址:文章底部链接
创建自动安装dll文件的脚本init-windows_dllFiles.bat
start /wait %cd%\windows_dllFiles.exe /q /norestart
exit
至此,环境配置完成
项目
目录结构
WinSw
用途:使用Spring Boot开发的Web项目,打包生成了一个jar包,部署在Windows服务器中,设置为开机启动
下载地址:GitHup
将Git Hub中下载的WinSW.NET4.exe及springboot项目的jar包放在同一个文件夹中
新建一个xml文件放在winsw同级目录
将winsw执行程序跟xml改成同样的名字
xml内容
<service>
<id>park</id>
<name> park </name>
<description>This is park service.</description>
<env name="JAVA_HOME" value="%JAVA_HOME%"/>
<executable>java</executable>
<arguments>-Xms1500m -Xmx1500m -Dfile.encoding=UTF-8 -jar "%BASE%\park.jar" --server.port=10086</arguments>
<startargument>-Dfile.encoding=UTF-8</startargument>
<startmode>Automatic</startmode>
<logpath>%BASE%\log</logpath>
<log mode="roll-by-time">
<pattern>yyyyMMdd</pattern>
</log>
</service>
“roll-by-time” 代表日志按照’标签中的格式生成
init-park.bat 初始化项目脚本
位置:D:\project\park\source\init-park.bat
echo -------park stop---------
net stop park
echo -------park delete-------
sc delete park
echo -------park begin--------
park.exe install
echo -------park end------------------
考虑到迭代更新,所以先将服务停掉删除,在安装服务
start-park.bat 启动项目脚本
位置:D:\project\park
@echo off
net start park
echo ---智慧停车启动中,请等待---
ping -n 20 127.0.0.1>nul
echo ---智慧停车启动成功--------
至此,项目配置完成
打包
由于笔者是将环境和项目分开了,所以需要打包两次,可根据实际情况来选择
打包完成后生成的两个exe文件,以管理员身份运行,直接无脑下一步即可
参考https://blog.csdn.net/Daniel__Wu/article/details/108327473#comments_15474215
其他
winsw下载
下载地址链接:https://pan.baidu.com/s/16-oLkKySz5uQ9E0KAlXiyA
提取码:mbv3
注
笔者亲测windows10系统安装没问题
windows7需要在安装项目环境之前先安装4.6的.net才可安装成功
下载地址 .net4.6
可根据实际情况来选择