前言:公司项目需要,需要把开发的网站平台打包成exe安装包,并能实现一键安装,安装完成后数据库和网站能自动启动,并且能开机自启动,这样做可以让不懂网络布置和数据库安装的售后人员一键部署网站(其实这种需求对于很多小型网络平台是很常见的),
一.准备资料
1. 网站开发完导出的jar包:yiyao.jar(我是用的spring boot + vue模式开发的)
2 .WinSW.NET4.exe,点我去下载(我用的是2.10.3这个是用来将jar包转换成系统服务的,这样你的网站就成了系统服务,不必在cmd黑框里面显示,是不是很nice?)
2. jdk 1.8免安装版(jdk是java运行环境,懂的都懂,哈哈哈,用户电脑一般没有java环境变量,这个得要),点我去下载
3. mysql-5.7.26 32位免安装版本(鬼知道用户电脑是多少位的,32最好,记得在mysql目录下创建data文件夹,存放数据库),点我去下载
4. Inno Setup5.0汉化版(这软件有汉化版的,网上能搜到),点我去下载
5.create.sql(数据库的sql文件,这个就是你的网站的数据库表文件,直接放在mysql的sql文件下面,自己创建sql文件夹哦,这个存储的就是数据表结构了,当然如果你网站没有数据库或者是自动创建数据库表的话,那就当我没说,哈哈哈哈哈)
6.几个初始化的bat 文件:mysql_init.bat、mysql_stop.bat、my.ini、autoInstallJDK.bat、platform_init.bat、启动服务.bat、删除服务.bat、停止服务.bat、yiyao.xml、yiyao.iss下面依次贴出来,客官不要急,往下看~
二.目录结构(platform是放网站jar包的和WinSW.NET4的)
三.相关脚本
1.mysql_init.bat(这个用来在安装过程中启动mysql服务的,放在mysql的bin目录下)
cd /d %~dp0
"%cd%\mysqld.exe" --initialize-insecure --user=mysql --console
echo -----mysql init succee-----
cd ..
set "MYSQL_HOME=%cd%"
cd bin
mysqld install mysql --defaults-file="%MYSQL_HOME%\my.ini"
echo -----mysql service install succee-----
net start mysql
sc config mysql start= auto
net stop mysql
net start mysql
echo 安装完毕
cd ..
"%cd%\bin\mysqladmin" -u root password sopen
echo 修改密码完毕
"%cd%\bin\mysql.exe" -uroot -psopen < "%cd%\sql\create.sql"
echo 建表完毕
echo 建立新用户完毕
2.mysql_stop.bat(这个用来在客户卸载软件的时候停止mysql的,放在mysql的bin目录下)
@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
3.my.ini(这是数据库的配置信息, 比如连接数,延时等等,玩数据库的铁子们应该懂)
[mysqld]
basedir ="C:\mysql-5.7.26-win32"
datadir ="C:\mysql-5.7.26-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
4.autoInstallJDK.bat(这个是在安装完成后自动为系统配置java环境变量的,放在jdk的bin目录下)
@echo off
echo ------begin----
rem 返回上一级目录,即jdk根目录
cd ..
echo "%~dp0"
echo "%cd%"
set jdkpath=%cd%
echo %jdkpath%
rem 设置JAVA_HOME环境变量
setx JAVA_HOME "%jdkpath%" -m
rem 设置CLASSPATH环境变量
setx CLASSPATH ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar" -m
echo %Path%
echo %Path%|find /i "%java_home%" && set IsNull=true || set IsNull=false
echo %IsNull%
if not %IsNull%==true (
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%Path%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin" /f
rem 追加path变量
setx Path "%%JAVA_HOME%%\bin;%Path%"
)
exit
5.platform_init.bat(这个是在安装完成后启动你的网站服务的,就是jar包的那个,放在platform的platform目录下)
cd /d %~dp0
start yiyao.exe install
echo 初始化完成,欢迎使用!
6.启动服务.bat(这个是启动服务的bat文件,用于安装完成后自动调用的,平时网站意外停止的时候也可以双击这个启动它,放在platform的platform目录下)
net start yiyao
echo ---服务启动成功,3秒后退出---
timeout /t 3
7.删除服务.bat(卸载软件时调用的,用来删除服务,做事有始有终,卸载干干净净,虽然只有一行代码,哈哈哈,放在platform的platform目录下)
net stop yiyao
yiyao.exe uninstall
echo ---服务已删除,欢迎再次使用---
timeout /t 3
8.停止服务.bat(停止服务的文件,如果有一天你想把网站关一下,干它就完了,放在platform的platform目录下)
net stop yiyao
echo ---服务已停止,3秒后退出---
timeout /t 3
9.yiyao.xml(这个要和jar包名字一样,并且要把WinSW.NET4.exe名字也改成yiyao.exe,放在platform的platform目录下)
<configuration>
<id>yiyao</id>
<name>yiyao</name>
<description>平台网站</description>
<env name="JAVA_HOME" value="%JAVA_HOME%"/>
<executable>java</executable>
<arguments>-jar yiyao.jar</arguments>
<startmode>Automatic</startmode>
<logpath>%BASE%\log</logpath>
<logmode>rotate</logmode>
</configuration>
10.yiyao.iss(这个就是InnoSetup的脚本文件,以上所有的脚本文件大都归它使唤,牛逼Plus,哈哈哈)
; 脚本由 Inno Setup 脚本向导 生成!
; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!
#define MyAppName "yiyao_platform"
#define MyAppVersion "1.2"
#define MyAppPublisher "****科技公司"
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "yiyao.exe"
[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{12CEFBAE-5AD1-46E0-A5D6-BBEC398A0550}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
LicenseFile=C:\Users\Administrator\Desktop\package_yiyao\协议.txt
InfoBeforeFile=C:\Users\Administrator\Desktop\package_yiyao\版本说明.txt
InfoAfterFile=C:\Users\Administrator\Desktop\package_yiyao\安装完成.txt
OutputDir=C:\Users\Administrator\Desktop\package_yiyao\output
OutputBaseFilename=医药平台(v1.2)
SetupIconFile=C:\Users\Administrator\Desktop\package_yiyao\favicon.ico
Compression=lzma
SolidCompression=yes
[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
[Files]
Source: "C:\Users\Administrator\Desktop\package_yiyao\mysql-5.7.26-win32\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\Administrator\Desktop\package_yiyao\jdk\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\Administrator\Desktop\package_yiyao\platform\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”
[Icons]
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
[INI]
;修改数据库配置文件
Filename:"{app}\my.ini";Section:"mysqld";Key:"basedir"; String:"{app}\data"
Filename:"{app}\my.ini";Section:"mysqld";Key:"datadir"; String:"{app}\data\data"
Filename:"{app}\my.ini";Section:"mysqld";Key:"port"; String:"3308"
Filename:"{app}\my.ini";Section:"client";Key:"port"; String:"3308"
[Run]
Filename: "{app}\bin\autoInstallJDK.bat";
Filename: "{app}\bin\mysql_init.bat"
Filename: "{app}\platform\platform_init.bat"
Filename: "{app}\platform\启动服务.bat"
[UninstallRun]
Filename: "{app}\bin\mysql_stop.bat"
Filename: "{app}\platform\删除服务.bat"
四.编译运行
双击绿色播放按钮进行编译,然后你去喝杯咖啡,就好了~
然后你就会发现在output文件夹下面多了个这:
不要犹豫,双击它就是熟悉的傻瓜式安装了,是不是很简单呢?
哦对了,这个安装过程中杀毒软件会刀它,记得提醒安装人员放行
第一次写博客,写得不好,老铁们多多指教~
引用文章:三、jdk+mysql+jar打包整合成exe文件,Windows下一键安装_咸鱼最牛逼的博客-CSDN博客_mysql打包exe