最近看了些类似的文章,感觉很有趣,就心血来潮自己搞了一个玩玩。
一、准备工作
1、 inno setup
![](https://i-blog.csdnimg.cn/blog_migrate/725ea38fda0a1d1deccfb2bad5fca3e3.png)
2、 exe4j
![](https://i-blog.csdnimg.cn/blog_migrate/d618e2870754bb71b978470e784cee41.png)
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
![](https://i-blog.csdnimg.cn/blog_migrate/ca4cd9a7c4a50a46ab9564c78f9e4ad7.png)
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文件夹,等会集成安装会自动生成。