Inno Setup打包 mysql+jdk+jar成exe文件,进行一键安装

因项目要求,需将开发的jar包以及相关运行环境打包成exe进行发布,最终要实现的目标是,通过双击发布的exe包引导用户进行软件的简明安装,安装完成后桌面出现软件快捷方式,用户通过双击快捷方式即可运行jar包。为此,exe安装包需要具备以下功能:

  1. mysql数据库安装完成及启动(包含开机自启),并完成初始化(如通过sql文件创建jar包工程中用到的数据库)
  2. jdk运行环境;
  3. 运行jar包及创建桌面快捷方式。

查找资料后决定采用Inno Setup软件进行安装部署,主要参考文献为:三、jdk+mysql+jar打包整合成exe文件,Windows下一键安装,在该文章基础上结合项目需求进行了适当修改。

一、软件准备

考虑到用户环境的不确定性(32位、64位均存在),决定采用32位的免安装的mysql及jdk,下载地址如下:

  1. mysql官网下载地址mysql5.8官网下载地址
  2. jdk官网下载地址jdk1.8官网下载地址
  3. Inno setup官网下载地址Inno Setup官网下载地址

此外,还用到了BatToExeConverter32软件,用于将bat文件转换为exe文件。

 

二、相关脚本

(1)mysql脚本

mysql安装总共需要准备4个文件:

  1. mysql_init.bat脚本,在软件安装过程中调用,进行mysql安装配置。放置位置为:mysql的bin目录下。
  2. my.ini配置文件,在mysql_init.bat中进行调用,进行mysql端口、时区等信息的相关配置,放置位置为:mysql目录下。
  3. mysql_stop.bat脚本,在软件卸载过程中调用,放置位置为:mysql的bin目录下。
  4. create.sql脚本,用于进行安装过程的初始化过程,放置位置为:mysql的sql目录下(自己创建的)。

说明:考虑到用户电脑可能本身就已经安装了mysql数据库,为避免使用冲突,将本次软件安装的mysql启动服务名称改为mysql-job,占用端口改为3308。具体脚本如下:

  • mysql_init.bat
@echo off
rem将工作路径切换到当前脚本所在目录
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
mysqld install mysql-job --defaults-file="%mysqlpath%\my.ini"

rem设置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设置mysql环境变量,并进行创建数据库初始化
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="",VariableValue="%mysqlpath%"
rem 追加path变量
wmic ENVIRONMENT where "name='PATH' and username=''" set VariableValue="%path%;%%MYSQL_HOME%%\bin;"
echo ----4. Mysql environment create/append success---->>/log.txt 
)
exit
  • my.ini
[mysqld]
basedir ="C:\mysql-5.7.30-win32"
datadir ="C:\mysql-5.7.30-win32\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
  • 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

(2)运行jar包脚本

此处需要进行两个步骤:

  1. 通过bat运行jar包。
  2. 将bat转换为exe。

说明:直接采用安装目录下jdk下的java进行脚本运行,因而不需要在系统环境变量中配置jdk的相关环境变量。

  • 运行jar包脚本
cd /d %~dp0
cd src
.\jdk1.8.0_211\bin\java -jar excel-table-1.jar
pause

(3)Inno Setup脚本

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

[Setup]

; 脚本由 Inno Setup 脚本向导 生成!
; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!

#define MyAppName "lesson"
#define MyAppVersion "1.0"
#define MyAppPublisher "cetc"
#define MyAppURL "http://localhost:8899"
#define MyAppExeName "MyProg.exe"

[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={
    {6CEE70A6-5DBD-43FF-9449-466A574C65E1}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=D:\temp
OutputBaseFilename=SJCJsetup
Compression=lzma
SolidCompression=yes
;AlwaysRestart=yes
;PrivilegesRequired=admin

[Languages]
;Name: "English"; MessagesFile: "compiler:Default.isl"
Name: "CN"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"

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

[Files]
;Source: "D:\test\java\jdk1.8.0_211\*"; DestDir: "{app}\java\jdk1.8.0_211"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\test\mysql-5.7.30-win32\*"; DestDir: "{app}\mysql-5.7.30-win32"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\test\2020-06-20web\*"; DestDir: "{app}\web"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”

[Icons]
Name: "{commondesktop}\数据采集";Filename: "{app}\web\SJCJ.exe"; WorkingDir: "{app}\web"

[INI]
;修改数据库配置文件
Filename:"{app}\mysql-5.7.30-win32\my.ini";Section:"mysqld";Key:"basedir"; String:"{app}\mysql-5.7.30-win32"

Filename:"{app}\mysql-5.7.30-win32\my.ini";Section:"mysqld";Key:"datadir"; String:"{app}\mysql-5.7.30-win32\data"

Filename:"{app}\mysql-5.7.30-win32\my.ini";Section:"mysqld";Key:"port"; String:"3308"

Filename:"{app}\mysql-5.7.30-win32\my.ini";Section:"client";Key:"port"; String:"3308"

[Run]
Filename: "{app}\mysql-5.7.30-win32\bin\mysql_init.bat";

[UninstallRun]
Filename: "{app}\mysql-5.7.30-win32\bin\mysql_stop.bat";

[UninstallDelete]

Type:filesandordirs;Name:"{app}"

 

你可能感兴趣的:(windows一键安装,Debug过程)