将jar打包成exe可安装程序,并在html页面唤醒

一、exe4j将jar打包成exe

1.exe4j下载

下载地址:https://www.ej-technologies.com/download/exe4j/files

2.exe4j打包jar

2.1. welcome 可以选择历史配置,新增则直接下一步

2.2. project type选择“jar in exe” mode

2.3. application info设置应用名称和输出目录

2.4. excutale info设置exe运行名称、ico、jre位数

2.5. java invecation选择可执行jar和main class,注意springboot为(org.springframework.boot.loader.JarLauncher)

2.6. jre设置版本

将jre复制一份到exe输出目录,并做如下配置,删除多余依赖

2.7. splash screen 默认

2.8. messages 默认

2.9. comile executalbe编译

2.10. finished验证exe是否可执行

二、inno将exe打包成可安装程序

1.inno下载

下载地址:https://jrsoftware.org/isinfo.php

2.inno将exe打包成可安装程序

2.1. file->new新建

2.2. 应用信息名称、版本、公司、官网地址

2.3. 安装路径设置

2.4. 安装exe程序选择

2.5. 安装exe程序选择,选择jre

2.6. 安装包名称设置

2.7. 一些配置选项,可以直接默认

2.9. 选择版权信息文件文件

2.10. 系统用户使用权限等

2.11. 语言选择,没得中文...

2.12. 下一步,或者自己根据需要配置

2.13. 下一步

2.14. 完成

2.15. 先不执行脚本,修改一下脚本

修改注册表配置

[Registry]
Root: HKCR; Subkey: "{#MyAppName}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
Root: HKCR; Subkey: "{#MyAppName}"; ValueType: string; ValueName: ""; ValueData: "URL:{#MyAppName} Protocol"; Flags: uninsdeletekey
Root: HKCR; Subkey: "{#MyAppName}"; ValueType: string; ValueName: "URL Protocol"; ValueData: ""; Flags: uninsdeletekey
Root: HKCR; Subkey: "{#MyAppName}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
Root: HKCR; Subkey: "{#MyAppName}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""
Root: HKCR; Subkey: "{#MyAppName}\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: ""

执行

安装程序

三、vue中唤醒exe

1. 安装custom-protocol-check

npm i custom-protocol-check

2. 页面代码

<template><div class="container"><el-button :loading="loading" type="primary" size="small" @click="loadexe()">唤醒exe</el-button></div>
</template>
<script lang="ts" setup name="LoadexeI18n">
import customProtocolCheck from "custom-protocol-check";
import { ElMessageBox } from "element-plus";
import { ref } from "vue";const loading = ref(false);
const loadexe = () => {loading.value = truecustomProtocolCheck("websockettest://params",() => {loading.value = falseElMessageBox.confirm("检测到未安装客户端,请确认是否下载?").then(() => {window.location.href = "/software/mysetup.exe"}).catch(() => { });},() => {loading.value = falseconsole.log("Custom protocol found and opened the file successfully.");}, 5000);
};
</script>

3. 源码地址

演示地址:http://101.43.32.67:8081/login

vue3+elementplus+ts源码:https://gitee.com/huanglgln/vue-sys-manage-el

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/702513.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot引入第三方jar包本地lib并打包

1&#xff1a;在项目根目录创建lib目录并放入第三方lib包 -- project ----lib &#xff08;放在这儿&#xff09; ----src ----target2&#xff1a;pom中引入第三方lib <!-- 引入magus模块 --><dependency><groupId>org.jeecg.msgus</groupId><art…

PADS:生成自交叉平面区域

根据板外形铺铜方法&#xff1a; pads根据板外形铺铜_铺铜如何根据板子形状改变-CSDN博客 根据板外形创建平面区域出现问题&#xff1a; 解决方法&#xff1a;去找结构&#xff0c;让他把出图之前把线合并了

[自动化]pyautogui的使用

目录 环境 包的版本 前置知识 鼠标控制函数 屏幕与鼠标位置 size() position() OnScreen() 鼠标移动 moveTo() move() 鼠标拖动 dragTo() drag() mouseDown()按下鼠标 mouseUp()松开鼠标 鼠标滚动 scroll() 键盘控制函数 write() press() keyDown()和keyU…

等保2.0的全面解读与实施策略

《网络安全等级保护基本要求》&#xff08;等保2.0&#xff09;是中华人民共和国国家安全部于2019年6月发布的网络安全等级保护标准。该标准规定了我国关键信息基础设施的网络安全等级保护要求和评估标准&#xff0c;对于保障我国网络安全具有重要的意义。下面是对等保2.0的全面…

【数据结构】数据结构大汇总 {数据结构的分类总结:定义和特性、实现方式、操作与复杂度、适用场景、相关算法、应用实例}

一、线性结构 1.1 顺序表 定义和特性&#xff1a;顺序表是一种线性表的存储结构&#xff0c;它采用一段地址连续的存储单元依次存储线性表中的元素。顺序表具有随机访问的特性&#xff0c;即可以通过元素的下标直接访问元素。 实现方式&#xff1a;顺序表可以通过数组来实现&…

数据治理框架下,如何实现高效且安全的数据提取与分析

一、引言 随着数字化时代的到来&#xff0c;数据已成为企业运营和决策的核心资产。然而&#xff0c;数据的复杂性和多样性也为企业带来了数据提取与分析的挑战。为了实现数据的有效利用&#xff0c;并确保数据的安全性&#xff0c;需要在数据治理框架下构建高效且安全的数据提…

八大设计模式:适配器模式实现栈的泛型编程 | 通用数据结构接口的秘诀(文末送书)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

(十)Python基础练习题一(50道选择题)#Python

本文整理了Python基础知识相关的练习题&#xff0c;共50道&#xff0c;适用于刚入门初级Python想巩固基础的同学。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-Python一&#xff09;。 1&#xff09; 2&#xff09; 3&#xff09; 4&#xff09; 5&#xff09; 6…

RustGUI学习(iced)之小部件(十二):如何使用rule分割线部件来分割UI?

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述 这是本专栏的第十二篇,主要讲述rule分割线部件的使用,会结合…

Golang | Leetcode Golang题解之第90题子集II

题目&#xff1a; 题解&#xff1a; func subsetsWithDup(nums []int) (ans [][]int) {sort.Ints(nums)n : len(nums) outer:for mask : 0; mask < 1<<n; mask {t : []int{}for i, v : range nums {if mask>>i&1 > 0 {if i > 0 && mask>&…

案例实践 | 招商局集团基于长安链的双循环航运贸易应用

案例名称-招商局双循环航运贸易联盟链 ■ 建设单位 招商局集团 ■ 用户群体 货主企业、物流企业、基础设施运营商等各参与主体 ■ 应用成效 已赋能产业链上下游超1.2万家中小微企业&#xff0c;累计提供普惠金融超830亿元 案例背景 作为全球贸易大国&#xff0c;我国约…

机器学习中常用的几种距离——欧式、余弦等

目录 一、欧式距离&#xff08;L2距离&#xff09;二、曼哈顿距离&#xff08;L1距离&#xff09;三、汉明距离四、余弦相似度 一、欧式距离&#xff08;L2距离&#xff09; &#xff08;1&#xff09;二维空间的距离公式&#xff08;三维空间的在这个基础上类推&#xff09;&…