当前位置: 首页 > news >正文

InnoSetup制作安装包(EXE)

  1. 功能描述
    1.666666.war为项目war包,666666.bat为启动war包脚本,通过InnoSetup将它们打包到安装包666666.exe
    2.666666.exe安装包安装过程中将666666.bat注册为自启动服务,安装结束自动执行脚本启动项目666666.war
    ----------------------------------------666666.bat----------------------------------------
    @echo off
    start /B javaw -jar "D:\666666.war"
  2. InnoSetup下载
  3. 生成安装程序














  4. 解释安装程序
    1.#define MyAppName "AAA":定义一个名为MyAppName的常量,并赋值为"AAA"。
    2.#define MyAppVersion "1.0":定义一个名为MyAppVersion的常量,并赋值为"1.0"。
    3.#define MyAppPublisher "BBB":定义一个名为MyAppPublisher的常量,并赋值为"BBB"。
    4.#define MyAppURL "CCC":定义一个名为MyAppURL的常量,并赋值为"CCC"。
    5.[Setup]:这是一个安装脚本的头部标记,用于指定安装信息。
    6.AppId={{9BCA7C00-6B43-4EBB-B710-EE01EF415EE4}:指定安装包的唯一标识符,使用GUID格式。
    7.AppName={#MyAppName}:指定安装包的名称,使用MyAppName常量的值。
    8.AppVersion={#MyAppVersion}:指定安装包的版本号,使用MyAppVersion常量的值。
    9.AppPublisher={#MyAppPublisher}:指定安装包的发布者名称,使用MyAppPublisher常量的值。
    10.AppPublisherURL={#MyAppURL}:指定安装包的发布者网址,使用MyAppURL常量的值。
    11.AppSupportURL={#MyAppURL}:指定安装包的技术支持网址,使用MyAppURL常量的值。
    12.AppUpdatesURL={#MyAppURL}:指定安装包的更新网址,使用MyAppURL常量的值。
    13.DefaultDirName={autopf}{#MyAppName}:指定安装包的默认安装路径,使用MyAppName常量的值。
    14.DefaultGroupName={#MyAppName}:指定安装包在开始菜单中的默认分组名称,使用MyAppName常量的值。
    15.PrivilegesRequired=lowest:如果取消注释此行,则将在非管理员安装模式下运行安装程序(仅为当前用户安装)。
    16.OutputDir=C:\Users\Administrator\Desktop:指定生成安装包的目标目录。
    17.OutputBaseFilename=666666:指定生成的安装包的文件名。
    18.Compression=lzma:指定使用的压缩算法。
    19.SolidCompression=yes:指定是否对文件进行实体化压缩。
    20.WizardStyle=modern:指定使用的安装程序向导界面风格。
    21.[Languages]:这是一个安装脚本的语言部分,用于指定语言文件。
    22.Name: "english"; MessagesFile: "compiler:Default.isl":指定使用英语作为安装程序的语言,使用默认的语言文件。
    23.[Files]:这是一个安装脚本的文件部分,用于指定需要拷贝的文件信息。
    24.Source: "D:\666666.war":指定需要拷贝的源文件路径。
    25.DestDir: "{app}":指定目标文件夹,这里使用了默认
  5. 编辑安装程序
    [Run]
    Filename: "cmd.exe"; Parameters: "/c sc query 666666 && sc delete 666666"; Flags: runhidden
    Filename: "cmd.exe"; Parameters: "/c sc create 666666 binPath= ""{app}\666666.bat"" start= auto"; Flags: runhidden
    Filename: "{app}\666666.bat"; Flags: postinstall runasoriginaluser在这个代码中,第一行使用 sc query 命令来检查是否存在名为 666666 的服务。如果存在,sc query 命令将返回服务的信息,
    否则将返回错误信息。使用 && 运算符将 sc delete 命令和 sc query 命令组合在一起,只有在 sc query 命令返回成功时才
    会执行 sc delete 命令。sc delete 命令将删除名为666666的服务。接下来,我们使用 sc create 命令创建一个名为666666 
    的服务,并将服务的二进制文件设置为 {app}\666666.bat。start=auto 意味着服务将在系统启动时自动启动。最后一行是用来运行 {app}\666666.bat 文件,以便在安装完成后运行该脚本。runasoriginaluser 标记意味着该脚本将以安
    装程序运行时的相同权限级别运行。


  6. 运行安装程序(666666.exe)





相关文章:

InnoSetup制作安装包(EXE)

功能描述 1.666666.war为项目war包,666666.bat为启动war包脚本,通过InnoSetup将它们打包到安装包666666.exe 2.666666.exe安装包安装过程中将666666.bat注册为自启动服务,安装结束自动执行脚本启动项目666666.war --------------------------…...

CASE WHEN函数语句多条件下使用详解

目录 CASE 的两种格式: 简单CASE函数 和 CASE搜索函数 同时配合 SUM 以及 COUNT 方法的使用 ① SUM函数 ② COUNT函数 CASE WHEN函数语句,实现简单CASE函数和CASE搜索函数两种格式。同时配合 SUM以及COUNT方法的使用 CASE 的两种格式: 简…...

2.31、守护进程(2)

2.31、守护进程(2)1.守护进程的创建步骤2.什么情况下子进程不会继承父进程的组ID3.哪些操作会导致子进程的组ID发生改变4.kill怎么杀掉守护进程的实现守护进程1.守护进程的创建步骤 执行一个 fork(),之后父进程退出,子进程继续执…...

记录上传文件异常 /tmp/tomcat... (No space left on device)

一,问题描述 用postman调用上传接口,基本每两次调用会有一次报错,如下 {"timestamp": "2023-04-11T03:00:15.4690000","status": 500,"error": "Internal Server Error","exceptio…...

无向连通图中长度为 n 的循环

给定一个无向连通图和一个数字 n,计算图中长度为 n 的循环总数。长度为 n 的圈简单地表示该圈包含 n 个顶点和 n 条边。我们必须计算所有存在的此类循环。 示例: 输入:n = 4 输出:总周期数 = 3 解释 :遵循 3 个独特的循环0 -> 1 -> 2 -> 3 -> 0 0 -> 1 …...

打造出ChatGPT的,是怎样一群人?

震惊世界的ChatGPT,要多少人才能开发出来?几百,还是几千? 答案是:87个人。 老实说,刚看到这个数字真是惊到我了,印象里,之前看媒体报道各大巨头人工智能人才储备时,动辄…...

数据结构——栈与队列相关题目

数据结构——栈与队列相关题目232. 用栈实现队列思路225. 用队列实现栈1.两个队列实现栈2.一个队列实现栈20. 有效的括号思路1047. 删除字符串中的所有相邻重复项思路155. 最小栈150. 逆波兰表达式求值思路239. 滑动窗口最大值单调队列347. 前 K 个高频元素思路232. 用栈实现队…...

Redhat6.7离线安装rabbitmq

一、下载资源文件(.rpm文件) 链接: https://pan.baidu.com/s/1j2Ze_Jjm0oMrP-r95PPCtA?pwdv3is 提取码: v3is 复制这段内容后打开百度网盘手机App,操作更方便哦 创建rabbit文件夹Mkdir rabbit 三、通过ftp上传文件 四、安装erlang环境 …...

EasyCVR平台基于GB28181协议的语音对讲配置操作教程

EasyCVR基于云边端协同,具有强大的数据接入、处理及分发能力,平台可支持海量视频的轻量化接入与汇聚管理,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等功能…...

谷歌发布Self-Debug方法,让大模型学会自己修bug,一次性生成正确代码

文 | 智商掉了一地你有没有想过,让一台计算机诊断和修复自己生成的错误代码?一篇最新的研究论文介绍了一种名为 Self-Debugging 的技术,通过在生成的代码中添加自解释的信息,让计算机像一个可以自己修复代码的程序员一样调试自己的…...

行为型模式-模板方法

行为型模式-模板方法 模板方法(Template Method)解决算法框架问题描述适用环境优点:缺点:违反原则:代码实现模板方法(Template Method) 解决算法框架问题 描述 定义了一个算法的骨架,并将某些步骤延迟到子类中进行实现,从而使得算法的具体实现能够在子类中自由变化…...

正则表达式识别日期

正则表达式识别日期 正则表达式识别各种格式的日期 import redef extract_dates(text):# 正则表达式&#xff0c;用于识别常见的日期格式date_pattern r"""(?P<date>(?P<year_only>\d{4}(?![\d年]))| # …...

如何设计一个秒杀架构设计?

文章目录 1. 秒杀业务的特点2. 总体思路2.1 削峰限流安全保护页面优化,动静分离异步处理热点分离2.2 Nginx的设计细节2.3 页面优化细节降低交互的压力安全控制2.4 Redis集群的应用分布式悲观锁(参考redis悲观锁的代码)异步处理订单2.5 消息队列限流2.6 数据库设计2.7 答题验…...

Elasticsearch:配置选项

Elasticsearch 带有大量的设置和配置&#xff0c;甚至可能让专家工程师感到困惑。 尽管它使用约定优于配置范例并且大部分时间使用默认值&#xff0c;但在将应用程序投入生产之前自定义配置是必不可少的。 在这里&#xff0c;我们将介绍属于不同类别的一些属性&#xff0c;并讨…...

消息中间件Kafka分布式数据处理平台+ZooKeeper

目录 一.消息队列基本介绍 1.为什么需要消息队列&#xff08;MQ&#xff09; 2.使用消息队列的好处 2.1 解耦 2.2 可恢复性 2.3 缓冲 2.4 灵活性 & 峰值处理能力 2.5 异步通信 3.消息队列的两种模式 3.1 点对点模式 3.2 发布/订阅模式 二.Kafka基本介绍 1.Kaf…...

Linux 用户文件磁盘网络进程指令

用户相关指令 useradd 用户名添加用户useradd -g 组名 用户名 向组添加用户passwd 用户名 设置密码id 用户名 查看用户名的具体信息cat /etc/passwd 查看创建了哪些用户su 用户名 切换用户名&#xff08;不能获得环境变量&#xff09;su - 用户名获得环境变量以及执行权…...

如何使用Socks5代理IP提高网络安全性

随着网络的快速发展&#xff0c;网络安全问题变得越来越重要。为了保障网络安全&#xff0c;人们普遍使用代理IP&#xff0c;其中Socks5代理IP是一种常用的选择。本文将介绍什么是Socks5代理IP&#xff0c;以及如何使用它提高网络安全性。 一、什么是Socks5代理IP Socks5代…...

《Java8实战》第3章 Lambda 表达式

利用行为参数化来传递代码有助于应对不断变化的需求。它允许你定义一段代码块来表示一个行为&#xff0c;然后传递它。采用匿名类来表示多种行为并不令人满意&#xff1a;代码十分啰唆&#xff0c;这会影响程序员在实践中使用行为参数化的积极性。 3.1 Lambda 管中窥豹 可以…...

开放式耳机的颠覆之作!南卡OE Pro新皇降临!佩戴和音质双重突破

千呼万唤的南卡OE Pro终于要在最近正式官宣上线&#xff0c;此消息一经放出&#xff0c;蓝牙耳机市场就已经沸腾。NANK南卡品牌作为国内的音频大牌&#xff0c;发展和潜力一直备受业内关注&#xff0c;这次要上线的南卡OE Pro更是南卡十余年来积累的声学技术结晶之一。 据透露…...

生成器设计模式(Builder Design Pattern)[论点:概念、图示、示例、框架中的应用、场景]

文章目录概念相关图示代码示例框架中的应用场景多个生成器&#xff08;Concrete Builder&#xff09;&#xff1a;单个生成器概念 生成器设计模式&#xff08;Builder Design Pattern&#xff09;是一种创建型设计模式&#xff0c;用于处理具有多个属性和复杂构造过程的对象。生…...

【百度AI】从API调用到场景落地:车牌识别技术全解析

1. 车牌识别技术入门指南 第一次接触车牌识别技术时&#xff0c;我也被各种专业术语搞得一头雾水。简单来说&#xff0c;车牌识别就像给电脑装了一双"火眼金睛"&#xff0c;让它能自动从照片或视频中找出车牌并读出上面的文字。这项技术现在已经深入到我们生活的方方…...

从FreeRTOS到RT-Thread:手把手教你正确使用操作系统的动态内存API(避坑malloc)

从FreeRTOS到RT-Thread&#xff1a;嵌入式实时操作系统动态内存管理实战指南 在嵌入式开发领域&#xff0c;动态内存管理一直是开发者面临的棘手问题之一。当项目从裸机迁移到实时操作系统&#xff08;RTOS&#xff09;环境时&#xff0c;许多开发者会不自觉地延续使用标准C库的…...

书成紫微动,律定凤凰驯:一破一立,铁哥的两部作品如何构成完整的文化闭环

书成紫微动&#xff0c;律定凤凰驯。 —— 唐《开元占经》卷一〇三 引言&#xff1a;千年谶语里的文明算法 无破则旧局不死&#xff0c;无立则新局不生。 一句千古古句&#xff0c;藏着文明迭代最严谨的底层逻辑&#xff1a; 先破后立&#xff0c;破立相生&#xff0c;方能形成…...

Hugging Face Tokenizer的padding、truncation参数详解:如何让你的BERT/RoBERTa输入不出错?

Hugging Face Tokenizer的padding与truncation实战指南&#xff1a;BERT输入处理的深度解析 当你第一次将文本输入BERT模型时&#xff0c;是否遇到过这样的报错&#xff1a;"RuntimeError: The size of tensor a (512) must match the size of tensor b (128)"&#…...

ElevenLabs情绪模拟技术落地倒计时:欧盟AI法案生效前最后72小时,必须完成的5项情感输出审计项

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs情绪模拟技术落地倒计时&#xff1a;欧盟AI法案生效前最后72小时&#xff0c;必须完成的5项情感输出审计项 情绪向量合规性校验 欧盟《AI法案》附件III明确将“高风险情感交互系统”纳入严格…...

ssh 使用问题汇总

本文深入探讨SSH连接失败、密钥管理、权限设置等常见难题&#xff0c;并提供详细的解决方案。通过本文&#xff0c;您将能够轻松应对SSH使用过程中遇到的各类问题&#xff0c;提升SSH操作效率&#xff0c;保障远程连接的安全性。 1. Connection reset by peer 现象 ssh到ser…...

STM32移植U8g2库驱动OLED:源码精简与硬件适配实战

1. 项目概述与核心思路之前玩ESP8266的时候&#xff0c;在Arduino环境下用U8g2库驱动OLED&#xff0c;画点线面、显示文字&#xff0c;确实方便。但很多实际项目&#xff0c;尤其是对成本、功耗有要求的&#xff0c;还是绕不开STM32这类更纯粹的MCU。最近有个小项目&#xff0c…...

openpilot自动驾驶系统终极指南:从入门到实战的完整教程

openpilot自动驾驶系统终极指南&#xff1a;从入门到实战的完整教程 【免费下载链接】openpilot openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars. 项目地址: https://gitcode.com/GitHub_Trend…...

ADC选型新思路:从抗混叠架构革新到极致集成设计

1. 从“采样”到“混叠”&#xff1a;一个老问题的现代解法做信号链设计&#xff0c;ADC选型永远是绕不开的核心。这些年&#xff0c;从工业物联网的传感器节点到汽车雷达的信号处理板&#xff0c;我经手过不少项目&#xff0c;一个深刻的体会是&#xff1a;系统性能的瓶颈&…...

基于Docker与MCP协议构建AI智能体安全扩展工具箱

1. 项目概述&#xff1a;一个为AI应用量身打造的“服务管家”最近在折腾AI应用开发&#xff0c;特别是那些基于大语言模型&#xff08;LLM&#xff09;的智能体&#xff08;Agent&#xff09;时&#xff0c;我遇到了一个挺普遍但很棘手的问题&#xff1a;我的AI助手能力很强&am…...