jar包打成exe安装包

news2024/11/29 0:53:02

打包exe并设置管理员权限

  • 前言
  • 打包可执行文件exe
    • 准备jre环境
    • 运行exe4j并配置
  • 设置执行文件exe管理员权限
  • 设置打包工具管理员权限
  • 打包exe安装包
    • 创建脚本
    • 打包

前言

准备安装包:

  • jar包:自己的程序;
  • exe4j:将jar打包可执行的exe;
  • Inno Setup 5:将exe和jre环境打包成按转包exe文件;
  • resource_hacker:设置文件具备管理员权限。

安装包下载地址
exe4j下载(密码 a3gc)
Inno Setup 5下载(密码 4wve)
resource_hacker下载

下载完,直接下一步安装即可。

打包可执行文件exe

准备jre环境

首先,因为jar包要依赖环境JDK,所以要准备好jre环境,可以下载,也可以去安装好的java环境目录里拷贝一个。
在这里插入图片描述

运行exe4j并配置

注册一下,避免最后打包完,总是弹框提醒,如果能忍受也可不注册,不影响打包。
注册码:`L-g782dn2d-1f1yqxx1rv1sqd``在这里插入图片描述
注册完直接下一步
在这里插入图片描述
下一步
在这里插入图片描述
下一步
这步需要给exe起名字,根据自己软件的性质,还需要给包设置一个小图标,格式要求.ico格式
在这里插入图片描述
当前页面继续点击
在这里插入图片描述
在这里插入图片描述
next
在这里插入图片描述
下一步
在这里插入图片描述
下一步
在这里插入图片描述
在这里插入图片描述
后边继续下一步即可,不用改动。
最终结果
在这里插入图片描述

设置执行文件exe管理员权限

为什么要设置这个呢,如果不设置,我们的安装包最后默认是安装到c盘的,如果不设置管理员权限,那么当软件写配置文件或者输出日志的时候就会报错,没有权限创建文件并写入。
在这里插入图片描述
在这里插入图片描述

asInvoker 改成 requireAdministrator

设置打包工具管理员权限

设置Inno Setup 5打安装包工具的打包权限,同样设置管理员权限,目的是,如果不设置这个权限,每次安装完,直接点击完成启动软件会报错,后边直接点击图标启动就没问题了,虽然问题很小,但是尽可能完美一点。
在这里插入图片描述
在这里插入图片描述
每次改完都会在相同位置生成一个original文件,这个相当于对之前未修改文件的一个备份,可以删掉,也可以留着。

在这里插入图片描述

打包exe安装包

创建脚本

默认是没有脚本的,第一次需要自己创建,也可参考下边的脚本,改一改直接用。
在这里插入图片描述
在这里插入图片描述
脚本

在这里插入图片描述
内容

; 脚本由 Inno Setup 脚本向导 生成!
; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!

#define MyAppName "数据处理"
#define MyAppVersion "0.0.1"
#define MyAppPublisher "xxx科技有限公司"
#define MyAppURL "www.baidu.com"
#define MyAppExeName "数据处理.exe"

[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{4B3D5B77-2288-46C5-AA01-B60955B1AE65}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\simutool
DisableProgramGroupPage=yes
OutputDir=C:\Users\THINKPAD\Desktop\package_exe\end
OutputBaseFilename=数据处理
SetupIconFile=C:\Users\THINKPAD\Desktop\package_exe\tool.ico
Compression=lzma
SolidCompression=yes

[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\THINKPAD\Desktop\package_exe\max\数据处理.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\THINKPAD\Desktop\package_exe\max\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”

[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
; 注: 下边这一行让安装的时候自动生成快捷方式
Name: "{userdesktop}\{#MyAppName}";Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{app}"
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

注: AppId的值为单独标识该应用程序。
不要为其他安装程序使用相同的AppId值。
(生成新的GUID,点击 工具|在IDE中生成GUID,就是{{ }这样,并没有少一个或者多一个大括号。)
GUID一样的话,如果安装的软件不是通过卸载方式移除软件,比如通过直接删除安装目录方式移除,那么下次安装就不会有选择安装目录的安装步骤,会直接安装到上次选中的盘符,而且很多脚本信息里改了,真实安装却还保持之前的信息。
所以,如果想保持安装步骤和信息的完整性,要么正常卸载再安装,要么每次打包都换GUID

下边看下我的目录,以方便对比自己设置
在这里插入图片描述

打包

上边的都设置好了,开始打包
在这里插入图片描述
等待打包完成即可。

如果你是用的javafx开发,设置软件的默认任务栏图标,可以这样
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NAT:连接私有与公共网络的关键技术(4/10)

一、NAT 的工作原理 NAT 技术的核心功能是将私有 IP 地址转换为公有 IP 地址,使得内部网络中的设备能够与外部互联网通信。其工作原理主要包括私有 IP 地址到公有 IP 地址的转换、端口号映射以及会话表维护这几个步骤。 私有 IP 地址到公有 IP 地址的转换&#xff1…

多模态大型语言模型(MLLM)综述

目录 多模态大语言模型的基础 长短期网络结构(LSTM) 自注意力机制 基于Transformer架构的自然语言处理模型 多模态嵌入概述 多模态嵌入关键步骤 多模态嵌入现状 TF-IDF TF-IDF的概念 TF-IDF的计算公式 TF-IDF的主要思路 TF-IDF的案例 训练和微调多模态大语言模…

学习ASP.NET Core的身份认证(基于Cookie的身份认证3)

用户通过验证后调用HttpContext.SignInAsync函数将用户的身份信息保存在认证Cookie中,以便后续的请求可以验证用户的身份,该函数原型如下所示,其中properties参数的主要属性已在前篇文章中学习,本文学习scheme和principal的意义及用法。 public static …

C++设计模式-模板模式,Template Method

动机(Motivation) 在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整…

Jenkins流水线 Allure JUnit5 自动化测试

目录 一、Jenkins Allure配置 1.1 安装Allure插件 1.2 安装Allure工具 1.3 配置测试报告路径 1.4 JenkinsFile 二、Jenkins 邮箱配置 2.1 安装Email Extension Plugin插件 2.2 邮箱配置 2.3 JenkinsFile 三、项目pom.xml 配置 3.1 引入allure-junit5依赖 3.2 引入m…

计算机网络 实验七 NAT配置实验

一、实验目的 通过本实验理解网络地址转换的原理和技术,掌握扩展NAT/NAPT设计、配置和测试。 二、实验原理 NAT配置实验的原理主要基于网络地址转换(NAT)技术,该技术用于将内部私有网络地址转换为外部公有网络地址,从…

shell脚本基础学习_总结篇(完结)

细致观看可以,访问shell脚本学习专栏,对应章节会有配图https://blog.csdn.net/2201_75446043/category_12833287.html?spm1001.2014.3001.5482 导语 一、shell脚本简介 1. 定义: 2. 主要特点: 3. shell脚本的基本结构 4. S…

ACL的原理与配置

ACL技术概述 ACL;访问控制列表 技术背景: 园区重要服务器资源被随意访问,容易泄露机密,造成安全隐患 病毒侵入内网,安全性降低 网络宽带被各类业务随意挤占,服务质量要求高的宽带得不到保障&#xff0…

AWS 新加坡EC2 VPS 性能、线路评测及免费注意事项

原文论坛给你更好的阅读讨论体验💐: AWS 新加坡EC2 VPS 性能、线路评测及免费注意事项 - VPS - 波波论坛 引言 对于那些习惯薅“羊毛”的朋友来说, AWS 的 免费套餐 可能已经非常熟悉。这台vps是我用外币卡薅的免费的12个月的机器&#xf…

关于人工智能

关于人工智能 什么是人工智能 人工智能里面有智能两字,可不代表现在所谓的人工智能真的是智能的。 现在的人工智能是建立在学习上的,被称为机器学习(machine learning),或者说是深度学习(deep learning&…

MyBatis-缓存(一级缓存、二级缓存)

一、缓存(Cache) 1、定义:缓存是一种用于存储数据的硬件设备或存储空间(缓存不是内存)。 2、作用:减轻数据库压力,提高查询性能 3、实现原理:将从数据库中查询出来的对象/记录在使…

【Zookeeper】四,Zookeeper节点类型、通知、仲裁、会话

文章目录 Zookeeper的架构znode的版本Zookeeper的节点类型层级树状结构znode的不同类型 Zookeeper监视与通知通知的类型 Zookeeper的仲裁Zk的会话会话的生命周期 Zookeeper的架构 Zookeeper的服务器端运行两种模式:独立模式(standalone)和仲…

【mac】终端左边太长处理,自定义显示名称(terminal路径显示特别长)

1、打开终端 2、步骤 (1)修改~/.zshrc文件 nano ~/.zshrc(2)添加或修改PS1,我是自定义了名字为“macminiPro” export PS1"macminiPro$ "(3)使用 nano: Ctrl o (字母…

macos 14.0 Monoma 修改顶部菜单栏颜色

macos 14.0 设置暗色后顶部菜单栏还维持浅色,与整体不协调。 修改方式如下:

树莓派3:64位系统串口(UART)使用问题的解决方法

前言 当我们要使用串口进行zigbee的短距离通信时,发现无法使用串口. 原因 树莓派3bCPU内部有两个串口,一个硬件串口(就是我们平时使用的UART),还有一个迷你串口(mini-uart),在老版本的树莓派中把硬件串口分配在GPIO上,可以单独使用.但是在新的树莓派中官方把硬件串口给了蓝牙…

前端Vue项目整合nginx部署到docker容器

一、通过Dockerfile整合nginx方法: 1,使用Vue CLI或npm脚本构建生产环境下的Vue项目。 npm run build or yarn build2,构建完成后,项目目录中会生成一个dist文件夹,里面包含了所有静态资源文件(HTML、CSS…

《Vue零基础入门教程》第十课:属性绑定指令

往期内容 《Vue零基础入门教程》第一课:Vue简介 《Vue零基础入门教程》第二课:搭建开发环境 《Vue零基础入门教程》第三课:起步案例 《Vue零基础入门教程》第四课:应用实例 《Vue零基础入门教程》第五课:挂载 《…

计算机网络socket编程(5)_TCP网络编程实现echo_server

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络socket编程(5)_TCP网络编程实现echo_server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交…

【适配】屏幕拖拽-滑动手感在不同分辨率下的机型适配

接到一个需求是类似下图的3D多房间视角,需要拖拽屏幕 问题 在做这种屏幕拖拽的时候发现,需要拖拽起来有跟手的感觉,会存在不同分辨率机型的适配问题。 即:美术调整好了机型1的手感,能做到手指按下顶层地板上下挪动&…

C#调用C++ DLL方法之C++/CLI(托管C++)

托管C与C/CLI前世今生 C/CLI (C/Common Language Infrastructure) 是一种用于编写托管代码的语言扩展,它是为了与 .NET Framework 进行互操作而设计的。C/CLI 是 C 的一种方言,它引入了一些新的语法和关键字,以便更好地支持 .NET 类型和垃圾…