前后端分离javaweb项目 用innosetup打包成软件安装包 教程

写个前言:

由于客户要求用桌面应用程序,所以javaweb项目要打成软件安装包,然后一键傻瓜式安装之后成桌面应用exe程序,点击即可运行那种。为此折腾了好几天,自己从网上找了各种办法。也是请教了公司里的很多大佬,可算是搞出来了。在 此处非常感谢各位帮助过我得大佬们。废话不多说,下面进入正题。
项目:前后端分离
前端electron-vue项目
后端springmvc架构
mysql数据库
tomcat9
jdk8
制作安装包工具 Innosetup6.0.5
以下内容的xxx 是公司名 我给屏蔽了

准备工作:

首先建议大家在虚拟机上来打包,因为会有些环境变量得改变。
虚拟机我用的是 : orcal vm virtualbox ,大家可以从网上下载 不细说了
系统win10,网上也有,怎么跑虚拟机,不细说了 我是公司一个大佬直接拷给了我一个系统
😒 别说我懒哈 时间不允许。
下面看一下我得打包目录:
在这里插入图片描述

app:里面放入整个项目

在这里插入图片描述

client里面是用的vue打包好的前端
注意事项: 我这里的前端是electron-vue 打包好生成的 如下图:
在这里插入图片描述
直接点击这个exe就可运行前端。
注意 这个exe的名字要和iss脚本文件的快捷方式名字要一样!否则打完 找不到快捷方式!
在这里插入图片描述

server里面放的是 后端打好得war包,如果是这么放的这个地方要注意配tomcat得service.bat里面的东西哦 如下图
在这里插入图片描述

也可以将后端得war包放在tomcat得webapp文件夹下,都可以,这样就不用在改service.bat里面得东西了。

other:里面放入mysql tomcat 得安装启动脚本

在这里插入图片描述
initMysqlconf.bat:

@echo off
set "pth=%~dp0"
set "pth=%pth:\=/%"
set "pth=%pth:~,-1%"
(for /f "tokens=1,2* delims=:=" %%a in ('findstr /n .* my.ini') do (
  if "%%c" neq "" (
    if /i not "%%b"=="basedir" (
      if /i not "%%b"=="datadir" (echo,%%b=%%c
      ) else echo,%%b="%pth%/software/mysqldata/"
    ) else echo,%%b="%pth%/software/mysql"
  ) else echo,%%b
))>$
move $ my.ini

install.bat:

@echo off
title 软件配置安装中,请不要手动关闭
color 0a
cd /d %~dp0
echo 配置Java、MySQL、Tomcat环境中...
set XXX_APP_HOME=%~dp0%
set XXX_MYSQL_HOME=%XXX_APP_HOME%software\mysql
set CATALINA_HOME=%XXX_APP_HOME%software\tomcat
set XXX_JAVA_HOME=%XXX_APP_HOME%software\jdk
echo 环境变量配置成功

echo MySQL安装中...
xcopy "%XXX_APP_HOME%\my.ini" "%XXX_MYSQL_HOME%" /y
del "%XXX_APP_HOME%\my.ini"
call "%XXX_MYSQL_HOME%\bin\mysqld.exe" install XXX-mysql --defaults-file="%XXX_MYSQL_HOME%\my.ini"
echo 开始启动MYSQL...
sc config XXX-mysql start=auto
net start XXX-mysql

echo Tomcat安装中...
call "%CATALINA_HOME%\bin\service.bat" install tomcat-XXX
echo 开始启动Tomcat...
sc config tomcat-XXX start=auto
net start tomcat-XXX
echo 安装完成,祝使用愉快~

uninstall.bat:

@echo off
title 删除环境配置中,请不要手动关闭
color 0a
echo 删除Java、MySQL、Tomcat中... 
echo ֹͣ关闭Tomcat
net stop tomcat-xxx
sc delete tomcat-xxx
echo ֹͣ关闭MySQL
net stop xxx-mysql 
sc delete xxx-mysql
echo 删除完成

my.ini 由于是乱码显示 我就不写在这里,想要的可以留言
在这里插入图片描述

output:文件输出目录,

就是放入打好得安装包

software:tomcat mysql jdk 以及数据库数据

在这里插入图片描述

xxx.iss :最关键得东西!就是我们要执行得打包脚本

具体代码如下

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

;软件相关信息描述如下
#define MyAppName "xxx"
#define MyAppChineseName "某软件"
#define MyAppVersion "1.0.0"
#define MyAppPublisher "xxx信息公司"
#define MyAppURL "http://www.xxx.com/"

[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={{D39EB2EE-1636-4DC1-81AC-96D914DAE712}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName=D:\上级文件夹目录\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputBaseFilename=PetroleumAnalysi
Compression=lzma
SolidCompression=yes
WizardStyle=modern
SetupLogging=true
;配置中文包 需要ChineseSimplified.isl这个东西,可以百度下,也可以找我要 ,然后放在innosetup的Languages目录下就好

[Languages]
Name: "chinesesimplified"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"

[Files]
;拷贝项目所需文件
Source:".\app\*";DestDir:"{app}\app";Flags:igNoreversion recursesubdirs createallsubdirs
;拷贝mysql jdk tomcat
Source:".\software\*";DestDir:"{app}\software";Flags:igNoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
Source:".\other\*";DestDir:"{app}\";Flags:igNoreversion recursesubdirs createallsubdirs

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

;创建打开快捷方式
[Icons]
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{app}\app\client\XXX软件.exe"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppChineseName}"; Filename: "{app}\app\client\XXX软件.exe"; Tasks: desktopicon;WorkingDir: "{app}"

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

[Run]
;修改服务配置文件
Filename:"{app}\initMysqlconf.bat";Description:"正在启动或配置相关程序";
Filename:"{app}\install.bat";Description:"正在启动或配置相关程序";

[UninstallRun]
Filename:"{app}\uninstall.bat";

最后点击小三角运行即可开始进行打包了!在这里插入图片描述

脚本执行完成之后 在output文件夹下就会出现打好的软件安装包了!

踩过的大坑:
一 :注意后端项目的resources.properties文件中的数据库连接地址一定要写对,比如我这里就连接的是安装之后的xxx-mysql ,那么地址就可以写本地的地址127.0.0.1,端口号要和自己脚本文件写 my.ini 的端口号一致 。
二 : 前后端分离项目,要注意前端和后端的访问地址要一致,具体可百度 前后端分离项目的联调

。。
然后,没了,想起来什么我会继续补充

Logo

前往低代码交流专区

更多推荐