(已解决,超详细)Springboot项目打包成jar包,在windows上一键安装部署(含mysql+jdk)_Daniel__Wu的博客-CSDN博客_springboot打包成jar部署到windows

       业务需求:需要把开发的程序部署到任意一台windows上运行,操作简单,只需要点下一步,就能安装,而且第一次初始化后每次开机自动启动服务,直接访问网址即可.

最终生成文件样式:

文件路径很重要,下面所有的文件都是如图的路径,基本上所有文件,工具下载路径在底部链接

1,下载打包工具Inno Setup

InnoSetup 是一个免费的 Windows 安装程序制作软件,用来打包各个文件的,并将它们联系起来
下载地址:官网地址

inno setup代码如下,代表着打包的整体流程,调用了各个初始化脚本

#define MyAppName "工资管理系统"        #define MyAppVersion "V1.0"           #define MyAppPublisher "自定义程序出版商"#define MyAppURL "http://localhost/login" ; 基本配置[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={{0167D65D-549A-4BA3-B88A-4814EC5A1D35}AppName={#MyAppName}AppVersion={#MyAppVersion}AppPublisher={#MyAppPublisher}AppPublisherURL={#MyAppURL}AppSupportURL={#MyAppURL}AppUpdatesURL={#MyAppURL}; 默认安装路径DefaultDirName=D:\Afu_SalarySystemDefaultGroupName={#MyAppName}; 软件名称OutputBaseFilename=阿福家工资管理系统; 软件图标SetupIconFile=D:\afu_jjgl_InnoSetupFile\afu.ico ; 压缩方式  Compression=lzma; yes 可以使文件更小SolidCompression=yes; 必需有管理员权限才能安装PrivilegesRequired=admin; 安装密码;Password=itdragon; 开启加密,可能还需要一个dll文件;Encryption=yes ; 语言配置 [Languages]Name: "english"; MessagesFile: "compiler:Default.isl" ; 安装文件[Files]; 安装部署的源文件路径Source: "D:\afu_jjgl_InnoSetupFile\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; NOTE: Don't use "Flags: ignoreversion" on any shared system files ; 快捷键[Icons]Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}";Name: "{commondesktop}\快捷HTTP地址"; Filename: http://localhost/login;Name: "{commondesktop}\Mysql数据初始化脚本"; Filename: "{app}\mysql\init-data.bat" ;Name: "{commondesktop}\安装须知"; Filename: "{app}\安装须知.doc"  ; 程序安装成功后执行脚本[Run]  ;Filename: "{app}\hide_cmd.vbs"; Filename: "{app}\init-windows_dllFiles.bat";   Filename: "{app}\init-jdk.bat"; Filename: "{app}\mysql-8.0.21-winx64\bin\init-mysql.bat";Filename: "{app}\myService\init-afu.bat ";;Filename: "{app}\dll-file\dll-move.bat"; 

复制粘贴代码,修改其中你的文件名字和路径(建议都改成我的文件名,省事)

2,安装jdk脚本的制作

@echo offclsecho. set myjavapath=%cd%\ConfigFiles\Java\jdk-8u162-windows-x64 IF EXIST "%myjavapath%"\bin\jdk-8u162-windows-x64.exe ( echo.  echo 发现已经安装java程序,注册环境变量请按任意键 echo. echo. goto SETENV ) echo. echo 正在安装jdk,请不要执行其他操作 echo. echo 请稍等,这个时间大约需要二、三分钟 echo. start /WAIT %cd%\jdk-8u162-windows-x64.exe /qn INSTALLDIR="%cd%\ConfigFiles\Java\jdk-8u162-windows-x64"echo 程序安装完毕,正在注册环境变量 echo. goto SETENV :SETENV echo::如果有的话,先删除ClASS_PATH wmic ENVIRONMENT where "name='CLASS_PATH'" delete ::创建JAVA_HOMEwmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%myjavapath%" ::创建CLASS_PATHwmic ENVIRONMENT create name="CLASS_PATH",username="<system>",VariableValue=".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;" ::在环境变量path中,剔除掉变量java_home中的字符,回显剩下的字符串call set xx=%Path%;%%%%JAVA_HOME%%%%\jre\bin;%%%%JAVA_HOME%%%%\bin ::echo %xx% ::将返回显的字符重新赋值到path中wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="%xx%"echo. echo JDK环境变量设置成功  echo. echo. :END exit

复制粘贴代码,修改其中你的文件名字和路径,初始化安装jdk脚本文件名为init-jdk.bat,放在该路径下(D:\afu_jjgl_InnoSetupFile\init-jdk.bat)

tips:我下载的jdk,mysql都是免安装版本,所以目标电脑上不用设置jdk,mysql环境变量也能运行.

3.初始化安装MySQL脚本文件的制作

cd /d %~dp0 cd ..del /F %cd%\my.iniecho 删除完成echo [mysql]>> my.iniecho default-character-set=utf8>> my.iniecho [mysqld]>> my.iniecho port = 3306>> my.iniecho basedir=%cd%>> my.iniecho datadir=%cd%\data>> my.iniecho max_connections=200>> my.iniecho character-set-server=utf8>> my.iniecho default-storage-engine=INNODB>> my.iniecho wait_timeout=2147483>> my.iniecho interactive_timeout=2147483>> my.iniecho my.ini生成成功set inipath=%cd%\my.inicd bin"%cd%\mysqld.exe" -install mysql --defaults-file="%inipath%""%cd%\mysqld.exe" --initialize-insecure --user=mysql --consolenet start mysqlsc config mysql start=auto net stop mysqlnet start mysqlecho 安装完毕 "%cd%\mysqladmin.exe" -u root password 123456echo 修改密码完毕 cd .. "%cd%\bin\mysql.exe" -uroot -p123456 < "%cd%\initsql\myInitSql.sql" echo 数据库初始化完成 exit;

复制代码,将文件命名为init-mysql.bat,放在D:\afu_jjgl_InnoSetupFile\mysql-8.0.21-winx64\bin

3.1安装msql时候顺便讲开发阶段的数据库导入进去(通过执行sql语句的方式)

通过navicat或者sqlyog导出sql语句,把下面代码加到你sql文件的开头:

create database IF NOT EXISTS myDatabase character set utf8;
set global character_set_database=utf8;
set global character_set_server=utf8;
USE myDatabase ;

create database IF NOT EXISTS myDatabase character set utf8;set global character_set_database=utf8;set global character_set_server=utf8;USE myDatabase ; SET FOREIGN_KEY_CHECKS=0; -- ------------------------------ Table structure for `t_handwriting_image`-- ----------------------------DROP TABLE IF EXISTS `t_handwriting_image`;CREATE TABLE `t_handwriting_image` (  `image_number` int(30) unsigned NOT NULL AUTO_INCREMENT,  `user_name` varchar(30) DEFAULT NULL,  `id_number` varchar(20) DEFAULT NULL,  `image_type` int(10) DEFAULT NULL,  `image_dimension` varchar(10) DEFAULT NULL,  `image_digits` int(20) DEFAULT NULL,  `image_status` int(10) DEFAULT NULL,  `image` mediumblob,  `department_id` int(30) DEFAULT NULL,  `creat_timestamp` datetime DEFAULT NULL,  PRIMARY KEY (`image_number`)) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8; -- ------------------------------ Records of t_handwriting_image-- ---------------------------- 

代码开头创建数据库语句的数据库名字改成你的数据库名.

创建文件夹initsql,放在mysql根目录下,

将初始化数据库sql语句命名为myInitSql.sql,放在D:\afu_jjgl_InnoSetupFile\mysql-8.0.21-winx64\initsql

4,winsw使用

用途:使用Spring Boot开发的Web项目,打包生成了一个jar包,部署在Windows服务器中,设置为开机启动
下载地址:GitHub
我使用的是winsw-v2.2.0,将Git Hub中下载的WinSW.NET4.exe和sample-minimal.xml文件及springboot项目的jar包放在同一个文件夹中

将winsw执行程序跟xml改成同样的名字

4.1编辑myProjectService.xml文件

<configuration>      <!--安装成Windows服务后的服务名-->    <id>afuService</id>    <!--显示的服务名称-->    <name>afuService</name>    <!--对服务的描述-->    <description>阿福计件管理系统</description>    <!--这里写java的路径,如何配置了环境变量直接写"java"就行-->    <executable>java</executable>    <!--Xmx256m 代表堆内存最大值为256MB -jar后面的是项目名-->    <arguments>-Xmx256m -jar afu.jar</arguments>    <!--日志模式-->    <logmode>rotate</logmode> </configuration>

4.2创建初始化启动服务批处理文件init-afu.bat

echo -------afuService begin--------"%cd%\afuService.exe" install afuServiceecho -------afuService install end------------------sc config afuService start= autonet start afuServiceexit

放在D:\afu_jjgl_InnoSetupFile\myService下

5,下载并安装运行软件所需要的dll文件(这些文件正常来说是没有的,除非你以前装过,否则会报错)

dll文件下载地址:文章底部链接

5.1创建自动安装dll文件的脚本init-windows_dllFiles.bat

start /wait %cd%\windows_dllFiles.exe /q /norestartexit

放在D:\afu_jjgl_InnoSetupFile

6编译成安装包

上面全部没问题后,点击inno setup上的编译

会在同级目录下生成output文件夹里面放的就是安装包

7其他

jdk,msql我用的绿色免安装版本,所以不需要环境变量,下载链接在底部

关于web项目怎么打包成一键部署的exe文件,多一步把tomcat加进去,我没有试过,感兴趣的小伙伴可以自己尝试一下

链接:https://pan.baidu.com/s/1jR-BfNYRIYGHC3RwOZXeNg?pwd=1234 

提取码:1234


原网址: 访问
创建于: 2022-12-21 15:40:48
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论