使用xjar+exe4j+inno setup把加密后的jar打包成exe应用程序并创建服务

news2024/9/21 14:16:15

1、使用xjar对jar包进行加密

在项目的pom.xml中加入xjar的插件依赖,最好用2.x.x版本,高版本不支持-Dxjar.mode,无法免密码启动

github地址:xjar-maven-plugin

          <plugin>
                <groupId>com.github.core-lib</groupId>
                <artifactId>xjar-maven-plugin</artifactId>
                <version>2.1.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>build</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <targetJar>${project.build.finalName}-encrypted.jar</targetJar>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

然后运行maven命令

mvn clean package -Dxjar.password=vOM73KJ6SACp9kql6lWGTXSt -Dxjar.mode=1

-Dxjar.password:xjar的加密秘钥

-Dxjar.mode:加密模式,0:普通模式 1:危险模式(免密码启动),一定要为1,否则用exe4j转成exe后将无法正常启动exe

2.使用exe4j+inno setup打包成exe应用程序

 详细步骤见这位大佬的保姆级教程:Java jar打包成exe应用程序(超详细)

​不过需要在exe4j的选择启动模式时选择Service,不知道选择其他启动模式可不可以,反正我是选择了Service

选择jar包的时候需要选择加密后的jia包,选择启动类的时候需要选择io.xjar.boot.XJarLauncher

然后在最后的inno setup的脚本文件里需要加上下面这段代码

[Code]
// 在安装过程中的不同步骤之间切换时被调用
procedure CurStepChanged(CurStep: TSetupStep);
var
  ResultCode: integer;
  StartResultCode: integer;
  Command: string;
begin
  // 安装步骤已经完成,但安装程序还没有显示完成对话框
  if CurStep = ssPostInstall then
  begin
    // 安装服务的命令
    Command := 'sc create 服务名称 binPath= ' + ExpandConstant('{app}') + '\软件名称.exe start=auto DisplayName=服务名称';
    Exec(ExpandConstant('{cmd}'), '/C ' + Command, '', 0, ewWaitUntilTerminated, ResultCode);
    
     // 检查执行结果
    if ResultCode <> 0 then
    begin
      MsgBox('服务安装失败,错误代码: ' + IntToStr(ResultCode), mbError, MB_OK);
    end;
    
    // 启动服务的命令
    Exec(ExpandConstant('{cmd}'), '/C sc start 服务名称', '', 0, ewWaitUntilTerminated, StartResultCode);
    
    // 检查执行结果
    if StartResultCode <> 0 then
    begin
      MsgBox('服务启动失败,错误代码: ' + IntToStr(StartResultCode), mbError, MB_OK);
    end;
  end;
end;

// 执行卸载前的准备工作
function InitializeUninstall(): Boolean;
var
  StopResultCode: integer;
begin
  // 停止服务的命令
  Exec(ExpandConstant('{cmd}'), '/C sc stop 服务名称', '', 0, ewWaitUntilTerminated, StopResultCode);
    
  // 检查执行结果
  if StopResultCode <> 0 then
  begin
    MsgBox('服务停止失败,错误代码: ' + IntToStr(StopResultCode), mbError, MB_OK);
  end;
  Result := True;
end;

// 执行卸载后的收尾工作
procedure DeinitializeUninstall();
var
  DeleteResultCode: integer;
begin
  // 删除服务的命令
  Exec(ExpandConstant('{cmd}'), '/C sc delete 服务名称', '', 0, ewWaitUntilTerminated, DeleteResultCode);
    
  // 检查执行结果
  if DeleteResultCode <> 0 then
  begin
    MsgBox('服务删除失败,错误代码: ' + IntToStr(DeleteResultCode), mbError, MB_OK);
  end;
end;

以上就能在安装软件的时候自动创建相应的服务并启动该服务,卸载软件的时候自动停止并删除该服务

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

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

相关文章

RDD2022 道路瑕疵检测数据集

RDD2022 道路瑕疵数据集 txt标签或者xml标签 一共23767张图片 D00 D01 D20 D40四类 D00纵向裂缝 D10横向裂缝 D20网状裂缝 D40坑洞。 RDD2022 道路瑕疵检测数据集介绍 数据集概述 RDD2022&#xff08;Road Defect Detection 2022&#xff09;是一个专门用于道路瑕疵检测的数…

【MATLAB GUI 设计第一篇 】

文章目录 前言一、MATLAB GUI 是什么&#xff1f;二、guide 的使用1.进入GUI界面2. 布置绘图3.修改字体4. 回调函数&#xff0c;完成功能5. 整个函数和回调函数6.修改回调函数7. 显示效果8. 补充 三、 APP 的使用1.进入APP界面2.在 APP 菜单下 新建空白APP3.创建回调函数4.显示…

OpenCV class2-C#+winfrom显示控件使用窗口大小并内存管理

一.控件效果说明 二.代码声明&#xff08;已经循环读取10000次&#xff09; 全局 OpenCvSharp.Point point new OpenCvSharp.Point(0, 0); OpenCvSharp.Size size2; Mat src new Mat(); 初始化 size2 new OpenCvSharp.Size(pictureBox1.Size.Width, pictureBox1.Size.Hei…

京东技术专家的修炼之道|“六边形战士”周默分享

前言 最近&#xff0c;京东零售智能增长研发总监周默在京东内部分享了他在京东工作近10年的经验与成长。周默自2015年加入京东以来&#xff0c;经历了后端架构、大数据、基础算法和业务算法等多个技术领域&#xff0c;获得了集团金项奖、最美京东人、集团算法大牛等多项荣誉&a…

C语言错题本

本学渣在一个人学习的途中遇到过许多问题 如果没有老师的帮助可能很长时间都走不出来 所以我也希望我的错误能帮助到你 9月13日 题一 未赋值的局部指针是野指针(C) 题二 PS:对于指针来说&#xff0c;传递的是指针值的副本&#xff0c;point 函数内部对 p 的任何修改都不会影响…

ClickHouse的安装配置+DBeaver远程连接

1、clickhouse的下载&#xff1a; 先去clickhouse官网进行下载&#xff0c;继续往下翻找文档&#xff0c;将DBeaver也下载下来 下载地址&#xff1a;https://packages.clickhouse.com/rpm/stable/ 下载这个四个rpm包 2、上传rmp文件到Linux中 自己创建的一个clickhouse-ins…

3DGS:3D Gaussian Splatting for Real-Time Radiance Field Rendering 论文解读

目录 一、导言 二、相关工作 1、传统场景重建 2、神经渲染与辐射场 3、点云渲染 三、3DGS 1、SFM初始化稀疏点云 2、3D高斯椭球 3、协方差 4、球谐函数 5、3D高斯椭球集建立 6、3D投影2D 7、3D渲染公式 四、损失函数 五、基于梯度自适应改变点云的分布方式 六…

第四天旅游线路预览——从贾登峪到喀纳斯景区入口(贾登峪游客服务中心)

第四天&#xff1a;从贾登峪到喀纳斯风景区入口&#xff0c;晚上住宿贾登峪&#xff1b; 从贾登峪到喀纳斯景区入口&#xff08;贾登峪游客服务中心&#xff09;&#xff1a; 1&#xff09;早上8&#xff1a;00起床&#xff0c;吃完早饭&#xff0c;8&#xff1a;30出发&#…

Leetcode 旋转图像

解题思路&#xff1a; 转置矩阵&#xff1a;通过将矩阵的行列互换来实现转置操作。水平翻转矩阵&#xff1a;通过将每行的数据进行对称交换&#xff0c;从而完成90度旋转。 通过这两个步骤&#xff0c;矩阵就会顺时针旋转90度。 class Solution { public:void rotate(vector…

Unity报错:error CS8805: Program using top-level statements must be an executable.

大多数人都不想犯错&#xff0c;但压力大时总是动作变形 大概意思网上查了一下&#xff0c;就是说 C# 的第一&#xff08;top)行有错误&#xff0c;或者类&#xff08;类的头部&#xff09;就没写全 这什么意思呢&#xff1f;又定位不到具体是哪个类 但肯定是刚修改了一点点代…

RocketMQ 基本概念

RocketMQ的由来 随着使⽤中队列和虚拟主题的增加&#xff0c;阿⾥巴巴团队使⽤的 ActiveMQ IO 模块达到了瓶颈。为了尽⼒通过节流、断路器或降级来解决这个问题&#xff0c;但效果不佳。所以开始 关注当时流⾏的消息传递解决⽅案Kafka 。不幸的是&#xff0c; Kafka ⽆法满⾜…

【linux笔记dpkg-buildpackage打包】把一个helloworld程序打包为deb包

说明 打包发布可以不用编译源代码安装&#xff0c;看起来是更方便的软件拷贝方式&#xff0c;下面是一个dpkg-buildpackage工具的最简打包过程实例 先建立一个helloworld程序 main.c #include <stdio.h>int main() {printf("Hello, World!\n");return 0; }…

小程序开关组件

前提是vant组件库不太好改&#xff0c;干脆就手写了一个 <template><view class"switch-container" click"toggleOrder"><view :class"[switch-text, left-text, { left-textChoose: isReverseOrder }]">{{ leftText }}</…

渣土车监控摄像头

渣土车监控摄像头 是一种结合了监控摄像技术和车辆安全管理的先进设备&#xff0c;旨在通过实时监测和录制车辆行驶过程中的画面&#xff0c;提高渣土车的安全性和管理效率。这种摄像头在建筑工地、城市道路、交通执法等领域有着广泛的应用前景。 渣土车监控摄像头在建筑工地运…

在AIoT设备上加速深度神经网络推理的进展:一项综述

这篇论文的标题是《Advancements in Accelerating Deep Neural Network Inference on AIoT Devices: A Survey》&#xff0c;作者是 Long Cheng, Yan Gu, Qingzhi Liu, Lei Yang, Cheng Liu, Ying Wang。论文主要探讨了在人工智能物联网&#xff08;AIoT&#xff09;设备上加速…

多层建筑能源参数化模型和城市冠层模型的区别

多层建筑能源参数化&#xff08;Multi-layer Building Energy Parameterization, BEP&#xff09;模型和城市冠层模型&#xff08;Urban Canopy Model, UCM&#xff09;都是用于模拟城市环境中能量交换和微气候的数值模型&#xff0c;但它们的侧重点和应用场景有所不同。以下是…

重要涉密文件如何防窃取?一分钟了解这5个有效的办法,超实用!

在信息化时代&#xff0c;重要涉密文件承载着企业的核心业务机密、技术专利和敏感客户信息等关键数据。 一旦这些文件被不法分子窃取&#xff0c;不仅会导致无法估量的经济损失&#xff0c;还会严重损害企业的声誉。 因此&#xff0c;构建一个全面的防护体系来防止涉密文件被…

癌症细胞状态的十年探索:单细胞RNA测序的启示

癌症细胞状态的十年探索&#xff1a;单细胞RNA测序的启示 引言 在过去的十年里&#xff0c;单细胞RNA测序&#xff08;scRNA-seq&#xff09;技术彻底改变了我们对复杂生物系统的理解&#xff0c;尤其是在癌症研究领域。癌症作为一种由多种遗传克隆和恶性细胞状态组成的复杂生…

2024年开学季,有哪些大学宿舍必备好物?

随着2024年开学季的到来&#xff0c;新生们即将离开熟悉的家乡&#xff0c;踏入充满未知与挑战的大学生活。对于许多学子而言&#xff0c;宿舍不仅是他们未来几年的居住之所&#xff0c;更是承载青春记忆、实现自我成长的重要空间。为了帮助大家更好地适应校园生活&#xff0c;…