经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
inno Setup 打包Java exe可执行文件和MySQL数据库,无需额外配置实现一键傻瓜式安装
来源:cnblogs  作者:scottyzh  时间:2024/5/13 15:21:21  对本文有异议

前言

出现有需要打包 Java 应用和 Mysql数据库成一个安装包给出去的需求,这里我把整个打包的流程整理一下。

环境

JDK17;

MySQL 5.7;

流程

Jpackage打包EXE

Jpackage是JDK14后加入的一个用于独立打包的工具,能够将应用打包成exe,有了Jpackage就不需要用exe4j这种打包工具,省去打包的繁琐流程。

首先在idea里面打好Jar包,记下jar包的名字,比如是application.jar。打完后Jar包的目录一般是在target文件夹下,进到项目的目录,在上方的输入栏里输入打包命令,回车。

image-20240513141900866

打包命令:

  1. jpackage --type app-image --name application --input target --main-jar application.jar --win-console --dest dist

打包完成后可以在dist文件夹里面看到对应的项目,双击exe就可以运行起项目。

jpackage命令详情:

  • --type:指定要创建的安装程序的类型,如 exemsi(仅限 Windows)、pkg(仅限 macOS)、debrpm 等。
  • --input <path>:指定要打包的输入文件或目录的路径。
  • --dest <path>:指定生成安装程序的目标目录。
  • --name <name>:指定应用程序的名称。
  • --app-version <version>:指定应用程序的版本号。
  • --main-jar <jar>:指定应用程序的主 JAR 文件。
  • --main-class <class>:指定应用程序的主类。
  • --icon <icon>:指定应用程序的图标文件。
  • --vendor <vendor>:指定应用程序的供应商名称。
  • --runtime-image <path>:指定自定义的运行时镜像目录--runtime-image
  • --java-options "-D...":指定自定义VM运行参数。

MySQL打包准备

下载MySQL

进入MySQL官网,MySQL :: Download MySQL Community Server (Archived Versions),选择合适的打包,下载Zip版本。

image-20240513142720488

下载完成后解压,打开解压的文件夹,这里我采用将设置好账户和创建好相应表的数据库对应的data文件夹复制到刚刚解压的MySQL根目录下,这样子我只需要用命令行初始化MySQL,不需要去执行其他创建表和账户权限的语句,即可实现数据库的开箱即用。也可以是在初始化的bat文件里执行相关的sql语句,对应下面的myinit_admin.bat文件。

配置MySQL

在根目录下创建my.ini,输入以下内容:

  1. [client]
  2. port=3306
  3. [mysql]
  4. default-character-set=utf8
  5. [mysqld]
  6. port=3306
  7. character-set-server=utf8
  8. default-storage-engine=INNODB
  9. max_connections=100
  10. table_open_cache=256
  11. tmp_table_size=35M
  12. thread_cache_size=8
  13. myisam_max_sort_file_size=100G
  14. myisam_sort_buffer_size=69M
  15. key_buffer_size=50M
  16. read_buffer_size=64K
  17. read_rnd_buffer_size=256K
  18. sort_buffer_size=256K
  19. innodb_flush_log_at_trx_commit=1
  20. innodb_log_buffer_size=1M
  21. innodb_buffer_pool_size=96M
  22. innodb_log_file_size=20M
  23. innodb_thread_concurrency=18

创建两个bat文件,并且在执行bat的时候获取系统的管理员权限,如果没有管理员权限会无法初始化。

创建myinit_admin.bat文件,流程是先往my.ini里面写入mysql的路径和data文件对应的路径,获取管理员的权限进行MySQL初始化命令的执行。这个文件是在安装的时候执行。

  1. echo
  2. set CURRENT_DIR=%~dp0
  3. set CURRENT_DIR=%CURRENT_DIR:\=/%
  4. echo basedir="%CURRENT_DIR%">>%CURRENT_DIR%my.ini
  5. echo datadir="%CURRENT_DIR%data/">>%CURRENT_DIR%my.ini
  6. @echo off
  7. :: 开始获取管理员权限
  8. setlocal
  9. set uac=~uac_permission_tmp_%random%
  10. md "%SystemRoot%\system32\%uac%" 2>nul
  11. if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
  12. echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
  13. echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
  14. echo WScript.Quit >>"%temp%\%uac%.vbs"
  15. "%temp%\%uac%.vbs" /f
  16. del /f /q "%temp%\%uac%.vbs" & exit )
  17. endlocal
  18. echo
  19. cd /d %~dp0
  20. cd bin
  21. "%cd%\mysqld.exe" --initialize-insecure --user=mysql --console
  22. echo -----mysql init succee-----
  23. mysqld install mysql
  24. echo -----mysql service install succee-----
  25. net start mysql
  26. sc config mysql start=auto
  27. net stop mysql
  28. net start mysql
  29. echo Installation complete
  30. timeout /nobreak /t 10
  31. exit

创建mystop_admin.bat文件,同样需要获取管理员权限。这个文件是在MySQL卸载的时候执行

  1. @echo off
  2. :: 开始获取管理员权限
  3. setlocal
  4. set uac=~uac_permission_tmp_%random%
  5. md "%SystemRoot%\system32\%uac%" 2>nul
  6. if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
  7. echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
  8. echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
  9. echo WScript.Quit >>"%temp%\%uac%.vbs"
  10. "%temp%\%uac%.vbs" /f
  11. del /f /q "%temp%\%uac%.vbs" & exit )
  12. endlocal
  13. @echo off
  14. cd /d %~dp0
  15. echo ----1.[Mysql] start uninstalling Mysql ---->>../log.txt
  16. sc stop mysql
  17. sc delete mysql
  18. echo ----2. [Mysql] uninstall finished---- >>../log.txt
  19. exit

Inno Setup的安装和配置

进入Inno Setup Downloads (jrsoftware.org),进行下载安装。

创建一个文件夹,将MySQL和打包后的Java应用文件夹都放到一起,Java程序放在project文件夹下。

image-20240513144542795

创建Inno.iss文件,用inno Setup打开,在里面输入:

  1. ; Script generated by the Inno Setup Script Wizard.
  2. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
  3. [Setup]
  4. ; 脚本由 Inno Setup 脚本向导 生成!
  5. ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!
  6. #define MyAppName "Application"
  7. #define MyAppVersion "1.0"
  8. #define MyAppPublisher "zh"
  9. #define MyAppExeName "application.exe"
  10. [Setup]
  11. ; 注: AppId的值为单独标识该应用程序。
  12. ; 不要为其他安装程序使用相同的AppId值。
  13. ; (生成新的GUID,点击 工具|在IDE中生成GUID。)
  14. AppId={{6CEE70A6-5DBD-43FF-9449-466A574C65E1}
  15. AppName={#MyAppName}
  16. AppVersion={#MyAppVersion}
  17. ;AppVerName={#MyAppName} {#MyAppVersion}
  18. AppPublisher={#MyAppPublisher}
  19. DefaultDirName={pf}\{#MyAppName}
  20. DefaultGroupName={#MyAppName}
  21. ; 输入你要生成exe安装包的路径
  22. OutputDir=E:\xxxx
  23. ; 输入程序安装后的文件名
  24. OutputBaseFilename=Application
  25. Compression=lzma
  26. SolidCompression=yes
  27. ;AlwaysRestart=yes
  28. ;PrivilegesRequired=admin
  29. [Languages]
  30. Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
  31. [Tasks]
  32. Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
  33. [Files]
  34. Source: "E:\xxx\mysql-5.7.41-winx64\*"; DestDir: "{app}\mysql-5.7.41-winx64"; Flags: ignoreversion recursesubdirs createallsubdirs
  35. Source: "E:\xxx\project\*"; DestDir: "{app}\project"; Flags: ignoreversion recursesubdirs createallsubdirs
  36. ; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion
  37. ; Java exe对应的目录
  38. [Icons]
  39. Name: "{commondesktop}\Application";Filename: "{app}\project\applicaiton.exe"; WorkingDir: "{app}\project"
  40. [INI]
  41. ;修改数据库配置文件(注意这个步骤,在上面的myinit_admin.bat已经获得了数据库和data的路径,但是不知道为什么我获取的路径会有点问题,在这个步骤也可以写入相应的路径。
  42. ;Filename:"{app}\mysql-5.7.41-winx64\my.ini";Section:"mysqld";Key:"basedir"; String:"{app}\mysql-5.7.41-winx64"
  43. ;Filename:"{app}\mysql-5.7.41-winx64\my.ini";Section:"mysqld";Key:"datadir"; String:"{app}\mysql-5.7.41-winx64\data"
  44. ; 安装的时候会执行
  45. [Run]
  46. Filename: "{app}\mysql-5.7.41-winx64\myinit_admin.bat";
  47. ; 卸载的时候会执行
  48. [UninstallRun]
  49. Filename: "{app}\mysql-5.7.41-winx64\mystop_admin.bat";
  50. [UninstallDelete]
  51. Type:filesandordirs;Name:"{app}"

在软件左上方点击run

image-20240513145623379

执行完成生成了一个exe安装包,双击这个安装包选择相应路径进行安装。只要Java程序已经配置好了相应的数据库连接,则安装后软件即可进行使用。

原文链接:https://www.cnblogs.com/Johnyzh/p/18189313

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号