使用InnoSetup制作springboot一键部署项目

使用InnoSetup制作springboot一键部署项目

准备工作

工程目录D:\project\chuanbo

  1. D:\project\chuanbo\backup 数据备份目录
  2. D:\project\chuanbo\bin 项目脚本目录
  3. D:\project\chuanbo\dist 前端资源文件目录
  4. D:\project\chuanbo\target 编译后的项目jar包

工具/插件目录:D:\project\tool

  1. D:\project\tool\jdk 绿色版jdk1.8
  2. D:\project\tool\mongodb 绿色版mongodb
  3. D:\project\tool\mysql 绿色版mysql

制作exe完成后,需安装vc_redist_2013_x64,否则可能造成注册mysql服务失败、注册环境变量失败
vc_redist_2013_x64 下载地址

注册服务及设置环境变量,需要设置InnoSetup的权限为管理员权限
设置InnoSetup安装程序管理员权限

1.backup数据备份目录

  1. 还原的数据库脚本文件chuanbo_init.sql
  2. 部署手册.pdf

2. bin 项目脚本目录

2.1 环境变量注册脚本setPath.bat

@echo off
set base={appPath}
set jdkpath=%base%\jdk
echo %jdkpath%
setx JAVA_HOME  "%jdkpath%"  -m
setx CLASSPATH  ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar" -m
set mysqlpath=%base%\mysql
echo mysql_home:%mysqlpath%
setx MYSQL_HOME  "%mysqlpath%"  -m
set mongodbpath=%base%\mongodb
echo mongodb_home:%mongodbpath%
setx MONGODB_HOME  "%mongodbpath%"  -m
setx /M PATH "%PATH%;%%JAVA_HOME%%\bin;%%MYSQL_HOME%%\bin;%%MONGODB_HOME%%\bin"
exit

2.2 mysql服务注册脚本register_mysql.bat

@echo off
set base={appPath}
set mysqlpath=%base%\mysql
echo mysql_home: %mysqlpath%
setx MYSQL_HOME  "%mysqlpath%"  -m
setx /M PATH "%PATH%;%%MYSQL_HOME%%\bin"
cd /d %~dp0
cd ..
cd mysql
cd bin
"%cd%\mysqld.exe" -install mysql
"%cd%\mysqld.exe" --initialize-insecure --user=mysql --console
net start mysql
sc config mysql start=auto
net stop mysql
net start mysql
echo ---Installation completed---
"%cd%\mysqladmin.exe" -u root password root
echo ---Password change completed---
exit

2.3 还原mysql数据库脚本init_data.bat

echo off
set base={appPath}
cd /d %~dp0
cd ../mysql
"%cd%\bin\mysql.exe" -uroot -proot < "%base%\backup\chuanbo_init.sql"
echo ---Database initialization complete---
ping 127.1 -n 5 >nul

2.4 mongodb服务注册脚本register-mongodb.bat

@echo off
set base={appPath}
set mongodbpath=%base%\mongodb
echo mongodb_home: %mongodbpath%
setx MONGODB_HOME  "%mongodbpath%"  -m
setx /M PATH "%PATH%;%%MONGODB_HOME%%\bin"
cd /d %~dp0
cd ..
cd mongodb
cd bin
mongod.exe --config %base%\mongodb\mongo.conf --install --serviceName MongoDB
net start MongoDB
mongo use chuanbo
ping 127.1 -n 5 >nul
exit

2.5 mongodb数据库初始化脚本init-mongodb.bat

echo off
set base={appPath}
cd /d %~dp0
cd ../mongodb
"%cd%\bin\mongo.exe" use chuanbo
ping 127.1 -n 5 >nul

2.6 项目生产包启动脚本start-pro.bat

echo off
set APP_NAME=chuanbo-web.jar
setlocal enabledelayedexpansion
set port=80
echo find run port:  %port% process
for /f "tokens=1-5" %%a in ('netstat -ano ^| find ":%port%"') do (
    if "%%e%" == "" (
        set pid=%%d
        echo The process pid '!pid!' has been released
    ) else (
        set pid=%%e
        echo the process pid for the current port is '!pid!'
    )
    echo !pid!
    taskkill /f /pid !pid!
)
:::pause
echo 5 seconds close this bat
echo Starting program %APP_NAME% -pro
java -Xms2048m -Xmx5120m -server -jar ../target/%APP_NAME% --spring.profiles.active=pro
echo run %APP_NAME% Success
pause

3.dist 前端资源文件目录

前后端分离,编译后的前端文件

4. jdk 绿色版jdk

jdk-8u60-windows-x64 下载地址

5. mongodb 绿色版mongodb

mongodb-win32-x86_64-2012plus-4.2.6 下载地址
下载接口后,创建data目录、log目录
创建mongo.conf配置文件

dbpath={appPath}\mongodb\data
logpath={appPath}\mongodb\log\mongo.log
logappend = true
port = 27017

6. mysql 绿色版mysql

mysql-5.7.23-winx64 下载地址
下载解压后,创建data目录和logs目录
创建my.ini配置文件,内容如下

[mysql]  
# 设置mysql客户端默认字符集  
default-character-set=utf8  
[mysqld]  
#设置3306端口  
port = 3306  
# 设置mysql的安装目录  
basedir={appPath}\mysql
# 设置mysql数据库的数据的存放目录  
datadir={appPath}\mysql\data  
# 允许最大连接数  
max_connections=200  
# 服务端使用的字符集默认为8比特编码的latin1字符集  
character-set-server=utf8  
# 创建新表时将使用的默认存储引擎  
default-storage-engine=INNODB

#开启日志
log_bin={appPath}\mysql\logs\mysql-bin.log
log_error={appPath}\mysql\logs\mysql.err
long_query_time=0.1
slow_query_log=ON
slow_query_log_file={appPath}\mysql\logs\mysql-slow.log
general_log=ON
general_log_file={appPath}\mysql\logs\logmysql.log
server-id=1


skip-grant-tables

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

7. target 编译后的项目jar包

编译后的jar文件chuanbo-web.jar

InnoSetup的工程配置iss

#define MyAppId "chuanbo-v1"
#define MyAppName "xxx系统"        
#define MyAppVersion "V20200911001"           
#define MyAppPublisher "xxx公司"
#define MyAppURL "http://www.xxxx.com/"

; 基本配置
[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.)
; 单独标识,可以通过innosetup-QSP-5.6.1.exe 工具自动生成
AppId={#MyAppId}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
; 默认安装路径
DefaultDirName=D:\chuanbo\
DefaultGroupName={#MyAppName}
; 软件名称
OutputBaseFilename={#MyAppId}_{#MyAppVersion}
; 软件图标
SetupIconFile=D:\project\chuanbo\dist\favicon.ico 
; 压缩方式  
Compression=lzma
; yes 可以使文件更小
SolidCompression=yes
; 必需有管理员权限才能安装
PrivilegesRequired=admin
; 安装密码
;Password=itdragon
; 开启加密,可能还需要一个dll文件
;Encryption=yes

; 语言配置 
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

; 安装文件
[Files]
; 安装部署的源文件路径
Source: "D:\project\chuanbo\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\project\tool\jdk\*"; DestDir: "{app}\jdk"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\project\tool\mysql\*"; DestDir: "{app}\mysql"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\project\tool\mongodb\*"; DestDir: "{app}\mongodb"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\project\tool\nginx\*"; DestDir: "{app}\nginx"; Flags: ignoreversion recursesubdirs createallsubdirs

; 快捷键
[Icons]
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\打开程序"; Filename: http://localhost
Name: "{commondesktop}\启动程序"; Filename: "{app}\bin\start-pro-v1.bat"
Name: "{commondesktop}\部署手册"; Filename: "{app}\backup\部署手册.pdf" 

; 程序安装成功后执行脚本
[Run]    
Flags:  shellexec postinstall waituntilterminated runascurrentuser
Filename: "{app}\bin\register_mysql.bat"; Description: "注册mysql服务"; Flags:  shellexec postinstall waituntilterminated runascurrentuser
Filename: "{app}\bin\init_data-v1.bat"; Description: "还原mysql数据库"; Flags:  shellexec postinstall waituntilterminated runascurrentuser
Filename: "{app}\bin\register_mongodb.bat"; Description: "注册mongodb服务"; Flags:  shellexec postinstall waituntilterminated runascurrentuser
Filename: "{app}\bin\init_mongodb-v1.bat"; Description: "还原mongodb数据库"; Flags:  shellexec postinstall waituntilterminated runascurrentuser
Filename: "{app}\bin\setPath_java.bat"; Description: "注册java环境变量"; Flags:  shellexec postinstall waituntilterminated runascurrentuser


; 在安装的时候输入IP地址,动态将localhost修改为输入值
[Code]
var
myPage:TwizardPage;//自定义窗口
ed1:TEdit;//自定义输入框
Lbl1: TNewStaticText;//自定义标题

//初始化引导窗口
procedure InitializeWizard();
begin
myPage:=CreateCustomPage(wpWelcome, '配置服务IP地址', '请输入正确的IP地址,已确保服务的正常使用');
Lbl1 := TNewStaticText.Create(myPage);
Lbl1.Left := ScaleX(5);
Lbl1.Top := ScaleY(5);
Lbl1.Width := ScaleX(250);
Lbl1.Height := ScaleY(50);
Lbl1.Caption := 'IP地址输入框标题';
Lbl1.Parent := myPage.Surface;
ed1:=TEdit.Create(myPage);
ed1.Width:=ScaleX(410);
ed1.Top := ScaleY(25);
ed1.Text :='127.0.0.1';
ed1.Parent:=myPage.Surface;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
    fileName:String;
    svArray: TArrayOfString;
    nLines,i:Integer;
    
begin
  //修正mysql配置
  if CurStep = ssPostinstall then
  begin
  fileName := ExpandConstant('{app}\mysql\my.ini');
  LoadStringsFromFile(fileName, svArray);//读取文件
  nLines := GetArrayLength(svArray);
  for i := 0 to nLines - 1 do
    if (0 < Pos('{appPath}', svArray[i])) then//查找目标
    StringChange(svArray[i], '{appPath}', ExpandConstant('{app}'));
    SaveStringsToFile(fileName, svArray, false);
  end;

  //修改mongo配置
   if CurStep = ssPostinstall then
  begin
  fileName := ExpandConstant('{app}\mongodb\mongo.conf');
  LoadStringsFromFile(fileName, svArray);//读取文件
  nLines := GetArrayLength(svArray);
  for i := 0 to nLines - 1 do
    if (0 < Pos('{appPath}', svArray[i])) then//查找目标
    StringChange(svArray[i], '{appPath}',ExpandConstant('{app}'));
    SaveStringsToFile(fileName, svArray, false);
  end;
  //修改mysql数据库初始化配置
  if CurStep = ssPostinstall then
  begin
  fileName := ExpandConstant('{app}\bin\init_data.bat');
  LoadStringsFromFile(fileName, svArray);//读取文件
  nLines := GetArrayLength(svArray);
  for i := 0 to nLines - 1 do
    if (0 < Pos('{appPath}', svArray[i])) then//查找目标
    StringChange(svArray[i], '{appPath}', ExpandConstant('{app}'));
    SaveStringsToUTF8File(fileName, svArray, false);
  end;
    //修改mongo数据库初始化配置
  if CurStep = ssPostinstall then
  begin
  fileName := ExpandConstant('{app}\bin\init_mongodb.bat');
  LoadStringsFromFile(fileName, svArray);//读取文件
  nLines := GetArrayLength(svArray);
  for i := 0 to nLines - 1 do
    if (0 < Pos('{appPath}', svArray[i])) then//查找目标
    StringChange(svArray[i], '{appPath}', ExpandConstant('{app}'));
    SaveStringsToUTF8File(fileName, svArray, false);
  end;
  //修改环境变量注册配置
  if CurStep = ssPostinstall then
  begin
  fileName := ExpandConstant('{app}\bin\init_path.bat');
  LoadStringsFromFile(fileName, svArray);//读取文件
  nLines := GetArrayLength(svArray);
  for i := 0 to nLines - 1 do
    if (0 < Pos('{appPath}', svArray[i])) then//查找目标
    StringChange(svArray[i], '{appPath}', ExpandConstant('{app}'));
    SaveStringsToUTF8File(fileName, svArray, false);
  end; 
   //修改java环境变量注册配置
  if CurStep = ssPostinstall then
  begin
  fileName := ExpandConstant('{app}\bin\setPath.bat');
  LoadStringsFromFile(fileName, svArray);//读取文件
  nLines := GetArrayLength(svArray);
  for i := 0 to nLines - 1 do
    if (0 < Pos('{appPath}', svArray[i])) then//查找目标
    StringChange(svArray[i], '{appPath}', ExpandConstant('{app}'));
    SaveStringsToUTF8File(fileName, svArray, false);
  end;  //修改mysql注册配置
  if CurStep = ssPostinstall then
  begin
  fileName := ExpandConstant('{app}\bin\register_mysql.bat');
  LoadStringsFromFile(fileName, svArray);//读取文件
  nLines := GetArrayLength(svArray);
  for i := 0 to nLines - 1 do
    if (0 < Pos('{appPath}', svArray[i])) then//查找目标
    StringChange(svArray[i], '{appPath}', ExpandConstant('{app}'));
    SaveStringsToUTF8File(fileName, svArray, false);
  end; 
   //修改mongodb注册配置
  if CurStep = ssPostinstall then
  begin
  fileName := ExpandConstant('{app}\bin\register_mongodb.bat');
  LoadStringsFromFile(fileName, svArray);//读取文件
  nLines := GetArrayLength(svArray);
  for i := 0 to nLines - 1 do
    if (0 < Pos('{appPath}', svArray[i])) then//查找目标
    StringChange(svArray[i], '{appPath}', ExpandConstant('{app}'));
    SaveStringsToUTF8File(fileName, svArray, false);
  end;
end;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值