inno setup 将jdk+mysql+jar打包成exe,在windows上一键部署:

最近看了些类似的文章,感觉很有趣,就心血来潮自己搞了一个玩玩。

一、准备工作

1、 inno setup


2、 exe4j


3、 jre 是jdk1.8.152下的
4、 jar(测试架包)

5、目录如下,先把要用的统一放在一起。


二、exe4j部分:

提示:安装和破解,不做赘述。将 jar打包成exe应用程序,可在无JDK/JRE环境下运行。
1、开始界面,点Next


2、 勾选 "JAR in EXE " mode ,在点next。


3、 Appincation info


4、勾选后,下拉Advanced Options,选择32bit or 64bit

VM Parameters 可以 添-Dappdir=${EXE4J_EXEDIR} 或者 -Dfile.encoding=utf-8,这里我用前者

然后一直下一步,最终出现如下界面  当然直接点finish也行,点击Save as 命名保存

会生成一个exe4j图标和 exe(先不运行 ,后面要用到)、1kb的exe4j图标快速打开配置过的信息,下次jar有改动,不用重复上面步骤了,直接替换jar,在点开我们命名保存的exe4j后点finish。


三、inno setup部分:

提示:安装inno setup后,创建create.iss文件。复制别人iss内容做修改,  就不打开inno setup ,关于inno setup的使用,可以参考这篇文章 https://www.jb51.net/softjc/460940.html


1、 修改后的iss文件如下

#define MyAppName "App"
#define MyAppVersion "1.5"
#define MyAppPublisher "GZH 个人工作室"
#define MyAppURL "http://www.GZHcompany.com/"
#define MyAppExeName "安装app.exe"
#define myjre "jre"

[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={{13E67407-F574-445F-9200-6EEB76C6DC43}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
OutputDir=D:\datasource\TTTTTTT
OutputBaseFilename=GZH
Compression=lzma
SolidCompression=yes

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

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

[Files]
Source: "D:\datasource\TTTTTTT\安装app.exe"; DestDir: "{app}"; Flags: ignoreversion
;拷贝jdk
Source: "D:\datasource\TTTTTTT\jre\*"; DestDir: "{app}\{#myjre}"; Flags: ignoreversion recursesubdirs createallsubdirs
;拷贝图片
Source: "D:\datasource\TTTTTTT\image\*"; DestDir: "{app}\image"; Flags: ignoreversion recursesubdirs createallsubdirs
;拷贝vcredist.exe win7系统缺少.dll文件
Source: "D:\datasource\TTTTTTT\VC\*"; DestDir: "{app}\VC"; Flags: ignoreversion recursesubdirs createallsubdirs
;拷贝mysql
Source: "D:\datasource\TTTTTTT\mysql-5.7.30-winx64\*"; DestDir:"{app}\mysql-5.7.30-winx64"; Flags:igNoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

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

[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Filename: "{app}\mysql-5.7.30-winx64\bin\mysql_init.bat"

[UninstallRun]
Filename: "{app}\mysql-5.7.30-winx64\bin\uninstallmysql.bat"

[UninstallDelete]
Type:filesandordirs;Name:"{app}"


2、mysql_init.bat

@echo off
cd /d %~dp0

"%cd%\mysqld.exe" --initialize-insecure --user=mysql --console

echo -----mysql init successfully-----

cd ..

set "mysqlpath=%cd%"

cd bin

mysqld install mysql --defaults-file="%mysqlpath%\my.ini"

echo -----mysql service install successfully-----

net start mysql

sc config mysql start= auto

net stop mysql

net start mysql

cd ..

::创建文件夹与数据库同名,如果不建会报Unkouw database xxxx, 
md %cd%\data\bookstord

"%cd%\bin\mysqladmin" -u root password root

::如果写 %cd%\bin\mysql.exe" -uroot -proot < "%cd%\bookstord.sql" 这个语句会报No database selected
"%cd%\bin\mysql.exe" -uroot -proot bookstord < "%cd%\bookstord.sql"
pause;
::配置环境变量,我试过也可以不配mysql的环境变量,项目也可运行,因为mysql服务已经自启动了
wmic ENVIRONMENT create name="MYSQL_HOME",username="<system>",VariableValue="%mysqlpath%"
wmic ENVIRONMENT where "name='PATH' and username='<system>'" set VariableValue="%path%;%%MYSQL_HOME%%\bin"
echo -----mysql service command successfully-----

3、 uninstallmysql.bat

@echo off
title 软件正在卸载中,请不要关闭
cd /d %~dp0
net stop mysql
cd ..
cd bin
mysqld --remove
wmic ENVIRONMENT where "name='MYSQL_HOME'" delete
echo 删除成功
exit

 将这两个bat文件提前放在准备的mysql-5.7bin目录下

4、 my.ini是我主机上的配置直接拿过来,basedir和datadir不需要改动,上面的create.iss文件里的 [INI]标签配置好了, 等会要在win7虚拟机上部署安装时会自动修改,不用关心。

[mysqld]

# 设置3306端口

port=3306

# 设置mysql的安装目录

basedir=E:\mysql\mysql-5.7.30-winx64

# 设置mysql数据库的数据的存放目录

datadir=E:\mysql\mysql-5.7.30-winx64\data

# 允许最大连接数

max_connections=200

# 允许连接失败的次数。

max_connect_errors=10

# 服务端使用的字符集默认为utf8mb4

character-set-server=utf8mb4

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

# 默认使用“mysql_native_password”插件认证

#mysql_native_password

default_authentication_plugin=mysql_native_password

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8mb4

[client]

# 设置mysql客户端连接服务端时默认使用的端口

port=3306

default-character-set=utf8mb4

  数据文件用 Navicat 导出放在mysql-5.7.winx64下,

这里没有手动创建data文件夹,等会集成安装会自动生成。

 


四、集成:

提示:jre 已经在exe4j时打包好了,无需在写配置文件,然后双击iss文件,进入界面。

等打包结束会生成一个应用程序如下图

打开虚拟机的共享目录,找到应用程序安装软件,由于win7虚拟机很干净,在安装数据库时会报丢失MSVCR120.dll文件,安装vcredist_x64.exe解决了。

 双击运行应用程序

安装完先不急着运行把launch App取消勾选,到安装目录看看mysql有没有生成数据和修改参数

由于没有前端页面,就写了个swing窗口来展示,卸载的话双击unins000.exe。

做了两天,总的来说还行吧。
 

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Inno Setup安装器时,我们可以将JDK 1和MySQL 5.7的JAR文件进行打包。 首先,我们需要将JDK 1的JAR文件和MySQL 5.7的JAR文件下载到本地。确保这些JAR文件与你的项目要求的版本相匹配。 然后,创建一个新的Inno Setup安装器项目。在项目中,我们需要确保正确设置了JDK 1和MySQL 5.7的安装路径。这可以通过使用`[Files]`段来完,将JAR文件添加到安装目录中。例如: ``` [Files] Source: "path_to_jdk1.jar"; DestDir: "{app}\lib"; Flags: ignoreversion Source: "path_to_mysql57.jar"; DestDir: "{app}\lib"; Flags: ignoreversion ``` 这里,`path_to_jdk1.jar`和`path_to_mysql57.jar`应该替换为实际的文件路径。 然后,我们可以在Inno Setup脚本中添加适当的代码来安装JDKMySQL。这可以通过使用`[Run]`段来实现。例如: ``` [Run] Filename: "{app}\lib\jdk1.jar"; Parameters: "install"; StatusMsg: "Installing JDK..." Filename: "{app}\lib\mysql57.jar"; Parameters: "install"; StatusMsg: "Installing MySQL..." ``` 在这个示例中,`{app}\lib\jdk1.jar`和`{app}\lib\mysql57.jar`是实际JAR文件的路径,`install`是执行安装的命令。你可以根据实际情况修改这些参数。 最后,我们可以根据需要在Inno Setup脚本中添加其他操作,如创建快捷方式、注册表项等。 完这些步骤后,我们可以编译和生Inno Setup安装程序。然后,我们可以将生的安装程序分发给用户,并安装JDK 1和MySQL 5.7的JAR文件。 希望这些步骤能帮助你功地将JDK 1和MySQL 5.7的JAR文件打包Inno Setup安装程序中。如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值