jar包转exe封装软件并一键安装使用

封装文档说明

主要封装的作用:简化用户的操作,一键安装,直接使用,无需多余配置

直接把安装包甩给用户,用户开箱即用!!!

前端访问后端url设为http://localhost:1060/api/

后端mysql连接设为localhost 用户名root,密码tecloman

SpringBoot使用内置tomcat启动vue

前端dist打包后的文件夹放到/resource/static目录下

image

后端配置增加

    spring:
      web:
        resources:
          static-locations: classpath:/static/
如有跨域问题在ems服务增加配置
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.cors.CorsConfiguration;
    import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
    import org.springframework.web.filter.CorsFilter;
    
    @Configuration
    public class CorsConfig {
        @Bean
        public CorsFilter corsFilter() {
            CorsConfiguration config = new CorsConfiguration();
            config.setAllowCredentials(true); // 如果需要携带cookie,设为true
            config.addAllowedMethod("*"); // 允许所有HTTP方法
            config.addAllowedHeader("*"); // 允许所有请求头
            // 显式列出允许的源或者使用allowedOriginPatterns
            // 允许来自localhost:1060的请求
            config.addAllowedOrigin("http://localhost:1060");
            // 或者使用allowedOriginPatterns
            // config.setAllowedOriginPatterns(Arrays.asList("http://*.yourdomain.com"));
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
            source.registerCorsConfiguration("/**", config); // 对所有路径应用CORS配置
            return new CorsFilter(source);
        }
    }
服务启动自动打开浏览器
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.stereotype.Component;
    
    import java.io.IOException;
    
    @Slf4j
    @Component
    public class StartupRunner implements CommandLineRunner {
        @Override
        public void run(String... args) {
            // 服务启动打开浏览器
            openBrowser("http://localhost:1060/hss_web/index.html");
        }
        private void openBrowser(String url) {
            String os = System.getProperty("os.name").toLowerCase();
            try {
                if (os.contains("win")) {
                    Runtime.getRuntime().exec("cmd /c start " + url);
                } else if (os.contains("mac") || os.contains("darwin")) {
                    Runtime.getRuntime().exec("open " + url);
                }
            } catch (IOException e) {
                System.err.println("Failed to open browser: " + e.getMessage());
            }
        }
    }
使用工具 Launch4j 把jar包打成exe执行文件

服务打成jar包

下载封装程序相关软件.zip,解压后如下

image

将ems服务jar包放到解析目录,改名为ems.jar

打开Launch4j文件夹下的launch4j.exe,并打开配置文件,ems.xml

image

界面如下,只要jar包放在解压目录则不用更改

image

唯一需要改的地方,更改启动配置文件

image

最后点击齿轮保存文件并生成exe文件,就会像图1一样多了ems.exe文件,本机可直接启动,

现在还不能给用户用,因为缺少jre,后面整合资源会把jre一起打包

image

使用inno setup合并资源,mysql之类的服务,最终打包成exe安装包

安装合并工具Inno Setup v6.0.4 汉化版,在解压目录下

打开innosetup 再打开封装脚本文件.iss,如下图

image```yaml

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

#define MyAppName "EmsApp"
#define MyAppVersion "1.5"
#define MyAppPublisher "tecloman"
#define MyAppURL "https://www.tecloman.com/"
#define MyAppExeName "ems.exe"

[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={{FC10B53B-96FE-4703-AFD3-10E414E9EE47}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
OutputDir=C:\Users\Administrator\Desktop
OutputBaseFilename=emsSetup
;SetupIconFile=C:\Users\Administrator\Desktop\add\jdk1.8-windows-x64_00001.ico
Compression=lzma
SolidCompression=yes

[Languages]
Name: "English"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "C:\Users\Administrator\Desktop\add\ems.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Administrator\Desktop\add\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Setup]
PrivilegesRequired=admin
SetupLogging=yes

[INI]
;修改数据库配置文件
Filename:"{app}\mysql\my.ini";Section:"mysqld";Key:"basedir"; String:"{app}\mysql";
Filename:"{app}\mysql\my.ini";Section:"mysqld";Key:"datadir"; String:"{app}\mysql\data";
[Code]
[Run]
;Filename: "notepad.exe"; Parameters: "{app}\mysql\my.ini"; StatusMsg: "正在检查my.ini配置文件...请确认修改后关闭Notepad以继续安装。"; Flags: waituntilterminated 

;Filename: "{app}\mysql.bat"; Description: "正在执行启动脚本..."; Flags: runhidden           mysqld --initialize --console
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Filename: "{app}\mysql.bat"; Description: "正在执行MySQL服务安装和启动脚本..."; Flags: shellexec


[UninstallRun]
; 停止MySQL服务
Filename: "net"; Parameters: "stop MySQLService"; StatusMsg: "正在停止MySQL服务..."; Flags: runhidden waituntilterminated
; 卸载MySQL服务
Filename: "{app}\mysql\bin\mysqld.exe"; Parameters: "--remove MySQLService"; WorkingDir: "{app}\mysql\bin"; StatusMsg: "正在卸载MySQL服务..."; Flags: runhidden waituntilterminated

资源路径下的mysql,我是初始化过的,设置过密码 root tecloman,所以安装完成后只需要注册服务并启动就可以了,这由mysql.bat做处理,我们需要提前把EMS相关的数据库提前建立好,所以在资源路径下的mysql\data目录下就得先弄好,最后生成安装包,用户解压即可使用

    # 初始化,密码会显示在控制台 最后一行
    mysqld --initialize --console
    # 注册服务
    mysqld --install MysqlService --defaults-file="C:\Users\Administrator\Desktop\add\mysql\my.ini"
    # 启动服务
    net start MysqlService
    # 登陆
    mysql -uroot -pHj6u5Kp.)ti9
    # 修改密码
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'tecloman';
    # 刷新权限 
    FLUSH PRIVILEGES;

image

如果注册服务失败,肯定是配置文件有问题,注册成功后会在/mysql目录生成data目录,data目录主要存放ems相关的数据库数据

连接数据库把ems相关的数据拷贝到当前mysql就可以了,mysql就可以放到资源目录下,把刚创建的mysql服务停止移除,sc delete MySqlService 否则打包程序运行不了

资源目录详情

image

jre是运行jar必备的,

mysql就是刚初始化过的,不要直接把未初始化过的放过来,因为mysql初始化是不能手动设置密码的,

mysql.bat是安装后运行的批处理文件,如下,安装包会自动执行

set “CURRENT_DIR=%~dp0” 这代表当前目录的变量(安装目录)

    setlocal enabledelayedexpansion
    set "CURRENT_DIR=%~dp0"
    @echo 注册服务
    "%CURRENT_DIR%mysql\bin\mysqld.exe" --install MySQLService --defaults-file="%CURRENT_DIR%mysql\my.ini"
    @echo 启动服务
    net start MySQLService
    pause

编译

image

会在输出目录生成一个exe安装文件

innosetup语法大全

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值