jar包打包成exe安装包的实现

目录
  • 1.介绍
  • 2.打包配置
    • mysql配置
  • 3.项目配置
  • 4.项目打包

1.介绍

jar包启动我们通常是部署在服务器上,用户通过访问服务器来使用系统,但是如果用户想弄成电脑本端单机版,这时候部署的问题就比较麻烦了,不可能每个用户都部署一遍,那么这时候需要弄成exe安装形式,或者脚本安装形式,一键安装部署!

现在我就介绍如何将jar包打包成exe安装包

介绍:比如一个普通的springboot前后端分离项目,含有组件:redis,Nginx , 数据库: Mysql        

思路:将用到的redis,Nginx,Mysql弄成windows服务,并开机自启,用户只需双击程序启动就能使用,无需等待

2.打包配置

用到的工具: 
1.Inno Setup:Inno Setup是一个免费的安装制作软件,小巧、简便、精美是其最大特点,官方网站同时也提供源程序免费下载。它虽不能与Installshield这类恐龙级的安装制作软件相比,但也当之无愧算是后起之秀。(主要用来打包成exe文件格式)
2.Bat_To_Exe_Converter:可以将.bat格式的命令文件转换为exe文件
3.mysql数据库免安装版:解压后为文件夹形式,通过脚本设置mysql配置
4.jdk环境免安装版:解压后为文件夹形式
5.项目打包生成的jar包
6.redis压缩包
7.nginx压缩包

先在本地创建一个文件夹,将解压好的mysql数据库复制到该文件夹中

mysql配置

1、mysql_init.bat

在mysql/bin目录中新建mysql_init.bat

@echo off
rem将工作路径切换到当前脚本所在目录
cd /d %~dp0

rem开始安装mysql
echo ----1.start installing Mysql ---->>../log.txt
"%cd%\mysqld.exe" --initialize-insecure --user=mysql --console
cd ..
set "mysqlpath=%cd%">>../log.txt
cd bin
::创建服务,名为mysql-job
mysqld install mysql-job --defaults-file="%mysqlpath%\my.ini"

rem设置mysql开机自启
echo ----2. start Mysql service---- >>../log.txt
rem pause
net start mysql-job
sc config mysql-job  start= auto
net stop mysql-job
net start mysql-job

rem设置mysql环境变量,并进行创建数据库初始化
echo ----3.setting Mysql environment ---->>../log.txt
cd ..
"%cd%\bin\mysqladmin" -u root password root
"%cd%\bin\mysql.exe" -uroot -proot < "%cd%\sql\create.sql"
echo %Path%
echo %Path%|find /i "%mysqlpath%" && set IsNull=true || set IsNull=false
echo %IsNull%
if not %IsNull%==true (
wmic ENVIRONMENT create name="MYSQL_HOME",username="<system>",VariableValue="%mysqlpath%"
rem 追加path变量
wmic ENVIRONMENT where "name='PATH' and username='<system>'" set VariableValue="%path%;%%MYSQL_HOME%%\bin;"
echo ----4. Mysql environment create/append success---->>/log.txt
)
exit

2、mysql_stop.bat

在mysql/bin目录中新建mysql_stop.bat

@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

在mysql目录中新建my.ini

[mysqld]
basedir ="C:\mysql-5.7.31-winx64"
datadir ="C:\mysql-5.7.31-winx64\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、新建create.sql文件,用于初始化项目数据库

在mysql目录中新建目录sql,将create.sql文件放置其中

注:在create.sql头部需要补充创建数据库的语句,如

一定要先删除存在的库,没有才创建
DROP DATABASE IF EXISTS `XXXXX`;
CREATE DATABASE XXXXX;
USE XXXXX;

3.项目配置

在新建的文件夹中(上面mysql所在的目录),新建一个project文件夹,将解压好的jdk以及项目jar包复制到project目录中

1、start.bat

在project目录中新建start.bat

@echo off
#判断程序是否运行
tasklist | find /i "aaa.exe"
#判断
if "%errorlevel%"=="1" (goto f) else (goto e)
:f
#没运行就启动,其中aaa.exe 为javaw.exe改名,目的后台启动jar包
start .\jdk1.8.0_121\bin\aaa.exe -jar aaa.jar
:e
#运行了就执行端口判断,判断是否启动完毕
netstat -ano |findstr "8084"
@echo off
netstat -ano |findstr "8084"
if "%errorlevel%"=="1" (goto f) else (goto e)
:f
echo 系统安装初始化中,请等待两分钟后尝试,按回车退出!
pause
exit
:e
start Chrome\Application\chrome.exe --app=http:\\localhost:8085
::这里用谷歌浏览器打开这个网址并且用 --app目的是为了隐藏工具栏和地址栏,达到高度类似单机版的概念

*******注:aaaa.jar名称修改为你项目的jar包

2、将start.bat转换为start.exe

将下载的Bat_To_Exe_Converter工具解压,运行Bat_To_Exe_Converter_(x64).exe程序,在工具界面中直接打开start.bat,点击转换即可,将转换之后的start.exe也存放于project目录

*******************注意:因为windows命令会出现中文编码问题,这里生成的快捷方式需要设置成gbk形式

下载winsw,下文有提及到,配置nginx也需要用到

将下载的exe文件改名为aaaservice.exe,并创建一个文件名为:aaaservice.xml, 其中aaa为你定义的项目名

aaaservice.xml文件的内容为

<service>
  <id>aaa</id>
  <name>aaa</name>
  <description>This service is a service created from a minimal configuration</description>
  <executable>.\jdk1.8.0_121\bin\aaa</executable>
  <arguments>-jar aaa.jar</arguments>
  <logpath>.\windows-service-logs</logpath>
  <log mode="roll"></log>
  <onfailure action="restart" />
</service>

注意 :.\jdk1.8.0_121\bin\aaa的这个文件是  javaw.exe复制一份并重名为 aaa.exe,目的是后台启动jar包后进程名称为aaa,用于分辨启动的jar包项目,这里的name标签是创建windows服务的服务名称

创建regiester-service.bat

@echo off
rem将工作路径切换到当前脚本所在目录
cd /d %~dp0

rem设置aaa开机自启
echo ----2. start aaa service---- >> log.txt
rem pause
aaaservice.exe install
net stop aaa
net start aaa
exit

创建uninstall-service.bat

@echo off
::杀掉进程为aaa.exe
taskkill -f -t -im aaa.exe

@echo off
rem将工作路径切换到当前脚本所在目录
cd /d %~dp0
::停掉aaa的windows服务,并删除
net stop aaa
sc delete aaa
exit

至此jar包和mysql服务目前搞完了,现在搞用到的组件redis和nginx

3.redis

解压redis压缩包后,进去根目录

修改redis配置文件,如项目中用到的redis端口和redis账号密码等。

在根目录新建start.bat

@echo off
rem将工作路径切换到当前脚本所在目录
cd /d %~dp0

rem开始创建redis服务
redis-server --service-install redis.windows-service.conf --loglevel verbose
rem pause

rem设置redis开机自启
echo ----2. start redis service---- >>../log.txt
rem pause
net start redis
sc config redis  start= auto
net stop redis
net start redis

exit

在根目录新建stop.bat

@echo off
rem将工作路径切换到当前脚本所在目录
cd /d %~dp0

net stop redis
sc delete redis

4.nginx

解压nginx压缩包后,进去根目录

修改nginx配置反向代理的文件

监听端口,跳转到页面

如图

我的页面在nginx文件夹同级

配置文件在这一级

则调转页面需要这样配置

不要使用绝对路径配置,具体层级自行根据位置调整

然后注册nginx服务并自启

用到工具:winsw

https://github.com/winsw/winsw/releases/tag/v3.0.0-alpha.10

下载x64完整版,第一个需要联网使用,但我试过了报错不行,所以最好下载完整版,避免不必要的错误!

下载完后将这个文件复制到nginx根目录,并改名为nginxservice

在nginx根目录创建一个文件名为:  nginxservice.xml  ,并且内容为如下

<service>
  <id>nginx</id>
  <name>nginx</name>
  <description>This service is a service created from a minimal configuration</description>
  <executable>.\nginx.exe</executable>
  <stopexecutable>.\nginx.exe -s stop</stopexecutable>
  <logpath>.\service-logs</logpath>
  <log mode="roll"></log>
</service>

其中logpath为存放日志位置

具体的配置可参考github

1.新建nginx-service.bat

@echo off
rem将工作路径切换到当前脚本所在目录
cd /d %~dp0

rem设置nginx开机自启
echo ----2. start nginx service---- >> log.txt
rem pause
nginxservice.exe install
net stop nginx
net start nginx
exit

2.新建start.bat

@echo off
rem将工作路径切换到当前脚本所在目录
cd /d %~dp0

rem开始创建redis服务
nginx.exe
rem pause

exit

3.新建stop.bat

@echo off
rem将工作路径切换到当前脚本所在目录
cd /d %~dp0

net stop nginx
start nginx.exe -s stop
sc delete nginx

至此nginx配置完成

4.项目打包

先安装好Inno steup程序,在新建的文件夹中(上面mysql所在的目录),新建一个inno.iss文件

打开inno.iss文件,改配置内容

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

[Setup]

; 脚本由 Inno Setup 脚本向导 生成!
; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!
 ;app名称
#define MyAppName "aaaa"
;app版本号
#define MyAppVersion "1.0"
;app作者
#define MyAppPublisher "rz"
;app访问路径
#define MyAppURL "http://localhost:8085"
;app工具名
#define MyAppExeName "aaaa.exe"

[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{6CEE70A6-5DBD-43FF-9449-466A574C65E2}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
;生成的exe文件输出路径
OutputDir=C:\Users\HP\Desktop
;生成的exe文件名
OutputBaseFilename=violation
Compression=lzma
SolidCompression=yes
;AlwaysRestart=yes
;PrivilegesRequired=admin

[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\HP\Desktop\新建文件夹\mysql-5.7.31-winx64\*"; DestDir: "{app}\mysql-5.7.31-winx64"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\HP\Desktop\新建文件夹\project\*"; DestDir: "{app}\project"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”

[Icons]
Name: "{commondesktop}\管理系统";Filename: "{app}\project\start.exe"; WorkingDir: "{app}\project"

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

Filename:"{app}\mysql-5.7.31-winx64\my.ini";Section:"mysqld";Key:"datadir"; String:"{app}\mysql-5.7.31-winx64\data"

Filename:"{app}\mysql-5.7.31-winx64\my.ini";Section:"mysqld";Key:"port"; String:"3306"

Filename:"{app}\mysql-5.7.31-winx64\my.ini";Section:"client";Key:"port"; String:"3306"
;安装时候执行的命令
[Run]
Filename: "{app}\mysql-5.7.31-winx64\bin\mysql_init.bat";
Filename: "{app}\project\redis\start.bat";
Filename: "{app}\project\nginx-1.18.0\nginx-service.bat";
Filename: "{app}\project\regiester-service.bat";
;卸载时执行的命令
[UninstallRun]
Filename: "{app}\mysql-5.7.31-winx64\bin\mysql_stop.bat";
Filename: "{app}\project\redis\stop.bat";
Filename: "{app}\project\nginx-1.18.0\stop.bat";
Filename: "{app}\project\uninstall-service.bat";
[UninstallDelete]

Type:filesandordirs;Name:"{app}"

注意:配置文件中的地址需要根据自己本地的实际环境进行修改

例如:

OutputDir=C:\Users\HP\Desktop (该路径为生成exe程序的目录)
Source: “C:\Users\HP\Desktop\新建文件夹\mysql-5.7.31-winx64*” (该路径为本地新建的文件夹的地址)

将配置调整好之后,直接点击运行图标进行程序打包

打包完成会自动在OutputDir目录下生成一个exe程序,并提示安装。该程序安装过程中,会自动安装mysql数据库,执行初始化sql导入,安装完成后,电脑桌面会生成程序的快捷方式,运行会执行project中创建的start.exe程序,也就是将jar包运行起来,启动项目。

到此这篇关于jar包打包成exe安装包的实现的文章就介绍到这了,更多相关jar包打包成exe安装包内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java打包成可执行的jar或者exe的详细步骤

    下面介绍过程: 第一步:完成Java GUI程序在Eclipse下,程序能够正常运行. 第二步:准备清单文件(MANIFEST.MF) 方法1:直接拷贝其它能运行的JAR文件中的MANIFEST.MF进行修改方法2:利用IDE工具,如Eclipse在生成JAR文件时自动生成MANIFEST.MF内容如下: 复制代码 代码如下: Manifest-Version: 1.0Main-Class: manager.ui.MainFrameClass-Path: ./lib/spring.jar ./l

  • 把Jar文件转成exe安装文件的实现方法

    1.你要清楚的目标文件是32位还是64位的,如果生成的是32位,你就要使用32位的jre,如果生成的是64位,就要使用64位的jre. 图 1 在圆圈位置进行32bit或64bit的选择.因为我要创建的是32bit,所以就使用默认的. 2.JRE的配置(没配置好的话报各种JAVA_HOME错误): 我先创建一个文件夹叫"HJ小助手",然后把我的可执行程序limitvic1.1.jar和jre文件夹放进去,以后生成的.exe文件也放在这个目录. 图2 点击图一中的第六项JRE的searc

  • java程序打包成exe与jar的图文教程

    Java程序打包 1.java工程源码打包成jar包 选中工程,右键选择export... 选择Runnable JAR file (1)launch configuration 启动配置,java程序的启动类,如果工程没有生成类,先执行"选中工程--run as---Java Application " (2)Export Destination 输出文件名称,要生成的jar文件 2.jar包转换成.exe 使用exe4j4.0将jar生成exe执行文件 破解的exe4j4.0可在下

  • Java jar打包成exe应用程序的详细步骤

    Java jar打包成exe应用程序,可在无JDK/JRE环境下运行 前言 近期做了一个前后端合并的spring boot项目,但是要求达成exe文件,提供给不懂电脑的小白安装使用,就去研究了半天,踩了很多坑,写这篇文章,是想看到这篇文章的人,按照我的步骤走,能少踩坑. 准备 准备工作: 一个jar包,没有bug能正常启动的jar包 exe4j,一个将jar转换成exe的工具,链接:https://www.jb51.net/softs/541579.html 一个将依赖和exe一起打成一个安装程

  • 详解Java Project项目打包成jar,并生成exe文件

    初衷: 工作中写一些辅助工作的小工具时,将其打成exe,方便使用 准备工作: Eclipse,jdk,net.sf.fjep.fatjar_0.0.32.jar,exe4j.exe 1 将项目打包成jar文件: 1.1 用Eclpise的Export功能生成jar(单纯生成jar包时推荐) 目录结构 右击项目,选择Export 只留java文件 默认next到finish,有两种处理方式 方式一:自动生成MANIFEST.MF(默认的) 方式二:自己写MANIFEST.MF(可以写一些自己想要的

  • java 使用idea将工程打成jar并创建成exe文件类型执行的方法详解

    第一部分: 使用idea 打包工程jar 1.准备好一份 开发好的 可执行的 含有main方法的 工程. 例如:我随便写的main方法 public static void main(String[] args) throws IOException { Properties properties = System.getProperties(); String osName = properties.getProperty("os.name"); System.out.println

  • jar包打包成exe安装包的实现

    目录 1.介绍 2.打包配置 mysql配置 3.项目配置 4.项目打包 1.介绍 jar包启动我们通常是部署在服务器上,用户通过访问服务器来使用系统,但是如果用户想弄成电脑本端单机版,这时候部署的问题就比较麻烦了,不可能每个用户都部署一遍,那么这时候需要弄成exe安装形式,或者脚本安装形式,一键安装部署! 现在我就介绍如何将jar包打包成exe安装包 介绍:比如一个普通的springboot前后端分离项目,含有组件:redis,Nginx , 数据库: Mysql         思路:将用到

  • 将java项目打包成exe可执行文件的完整步骤

    目录 如何使用exe4j把jar打包成exe文件 一.将java程序打包成jar包 二.将打包后的jar包打包成exe可执行文件 总结 如何使用exe4j把jar打包成exe文件 最近,做了几个javafx的项目,想要把jar包打成exe的可执行软件,下面时我使用exe4j打包的方法 一.将java程序打包成jar包 1. Flie —> Project Structure (或者Ctrl+Shift+Alt+S) 2. Artifacts 设置 3. 选择要打包的项目,选择要执行的 main

  • Python封装成可带参数的EXE安装包实例

    最近有一个小项目,有如下的需求: 将某几个源码文件夹进行打包,文件夹内有py文件.dll文件.exe文件等各种文件类型 打包生成的安装包,在进行安装的时候,应该能够带有参数,对配置文件进行修改配置 安装过程中,可以配置系统环境变量 能够检测环境,提示安装依赖包 整个过程要可以自动化,能够大量部署 综合考虑后,决定以下几个步骤完成: 用setup.py将源码文件夹都打包成msi安装包,这样可以使用msiexec进行静默安装 setup.py可以提示用户安装依赖包,否则安装失败 再编写一个py文件,

  • 将java普通项目打包成exe可执行文件的步骤记录

    前言 · 提示,无论打包成jar还是exe程序,运行都需要JDK,需要给没有安装JDK的电脑安装:不会安装JDK的朋友可以参考这篇文章:https://www.jb51.net/article/179937.htm · maven项目有自己的打jar包方式,我们普通的java项目,可以安照步骤一打包成jar: 步骤一.先把项目打包成jar包 1. 打开项目结构 2. 选择jar包形式 3. 设置主类 4. 构建 5. 确认构建 6. 打包完成,在项目的out目录下有jar了. 步骤二.把jar包

  • 将python项目打包成exe与安装包的全过程

    目录 一.打包Flask项目 1.1自己写个Flask 2.2 下载pyinstaller 2.3 进入到项目路径下,执行 2.4 运行exe,测试 二.使用nsis把文件夹打包成windows的安装包 2.1 下载安装nsis 2.2把dist文件夹下的run文件夹压缩成zip 2.3使用nsis把压缩包,做成windows安装文件 总结 一.打包Flask项目 1.1自己写个Flask 2.2 下载pyinstaller pip install pyinstaller 可选参数 示例 说明

  • IDEA导出jar打包成exe应用程序的小结

    Java jar打包成exe应用程序,可在无JDK/JRE环境下运行 老师让做一个小项目,但是需要打包发布出来,因此在网上查了很多资料之后总结的经验. 1. IDEA导出jar包,选择 File -> Project Structure (快捷键:Ctrl+Alt+Shift+S). 2. 选中"Artifacts",点击"+"选择jar,然后选择"from modules with dependencies". 3. 选择文件图标,选中入

  • 使用PyInstaller库把Python程序打包成exe

    一.pyinstaller简介 Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安装包就是这样做的) .pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库. 可执行文件:对于非码农用户或者

  • Scratch3.0二次开发之windows环境下打包成exe的流程

    先给大家看下Scratch3.0二次开发之windows环境下打包成exe的流程. 1.需要先安装npm,安装过程不作过多介绍了. 2.直接介绍打包成exe流程. (1)首先在scratch-gui目录下 cd scratch-gui npm install 设置静态文件路径 set BUILD_MODE=dist set STATIC_PATH=static build scratch-gui npm run build 设置链接 npm link (2)进入scratch-desktop目录

随机推荐