exe打包工具:advanced installer介绍(一)

news2024/12/27 1:16:33

前言

近年来,web服务逐渐走向云端部署+浏览器化、去APP化,然而exe安装仍有着举足轻重的地位,其好处不言而喻,拿到exe安装包后,基本就可以傻瓜安装和操作了,十分便捷。

业务场景

  1. 通过各种IDE/QT/C#/Java等开发工具/语言完成开发任务后,一般会得到三种类型文件,jar、exe、以tomcat/jboss+mysql+..的服务应用。

  1. 有时需无脑单机部署这些应用,给客户展示,此时把应用打包为exe就成了不错的选择。

  1. 打包为exe的好处:点击exe安装包一键部署=自动注册服务+自动启动服务+自动生成桌面快捷方式+自动在开始菜单创建打开程序、卸载程序”等快捷方式,让程序显得更加专业化

本文以 advanced installer 19.7+windows10为依托,把tomcat+mysql+jdk+elasticSearch打包为exe,据此,让不了解该软件的小伙伴,跟着可以制作出自己的exe。

工具种类

市面上的打包工具有很多种,其中install4j、exe4j、launch4jadvanced installer等,想了解更多种类打包工具,点击进入在此不做过多扩展,本文重点介绍advanced install。

下载地址

官网下载地址:https://www.advancedinstaller.com/download.html、v20.3.2

一、成果展示

1、点击安装exe包后,自动启动tomcat、mysql、ES服务,自动打开登录界面;
2、在桌面生成登录/启动服务的快捷方式(防止客户不小心关掉黑色服务窗口);
3、在Windows系统的开始菜单中,创建demoExe文件夹(自定义的工程名称),里面自带登录、启动服务、卸载服务快捷方式。
  1. 安装过程

  1. 效果展示

桌面生成了对应快捷方式

开始菜单,生成对应快捷方式

二、操作步骤

2.1 新建工程

如下图所示,依次点击软件右上角的“文件--新建”

选择“企业版”、“语言”后点击创建。

提示:自己实验的话,点击专业版也未尝不可,功能和企业版略有删减。

2.2 填写软件基本信息

上半部分信息为必填项,默认安装目录会读取这些信息,所以,建议使用字母或英文。

中间的“产品支持信息”可以据需填写,不是特别重要

底部的“许可证”可选,当然也可以在后面的对话框中再次选择。两者的区别是,本页面选取“许可证”仅仅会在安装界面展示,不会询问是否同意。

反之,在对话框中选取的“许可证”会在安装界面,刻意要求必须同意协议许可,才可以继续安装。

注:这个“许可证”的格式是rtf的,可粗略的认为是word格式的。

2.3 添加所需打包文件

如下图所示,通过添加文件夹的方式,把需打包程序添加进来,个别文件也可以单独以文件的方式单独添加进来。

添加后的效果,基本是下面这个样子。

注:这里使用的mysql和tomcat都是绿色免安装的版本!

2.4 配置快捷方式

2.4.1 配置桌面快捷方式

具体,配置什么类型的快捷方式,根据你的需求来。程序安装完毕后,这些快捷方式会自动出现在桌面。

说明:在配置界面,可以修改快捷方式名称和图标。

需要注意的是,配置的时候,以管理员的身份运行,是可选的

2.4.2 配置开始菜单中的快捷方式

和上面创建快捷方式,几乎一样,区别是创建的位置不同,创建快捷方式前,建议先创建一个文件夹(可以是中文名称),然后在文件夹中创建快捷方式,里面一般包含一个登录的、一个卸载的、启动服务的快捷方式(可选)

需要说明的是,卸载的快捷方式,如上图所示,选择卸载就可以了,也是比较省事儿的。

如果创建的快捷方式选择“已安装程序”,一般指向的是exe或者bat文件,比如你想通过此快捷方式指向bat,bat里写启动某些服务的代码。

2.5 新建环境变量(可选)

环境变量,一般是JAVA_HOME、path一类的,你安装包中包含的有JRE或jdk,配置的环境变量JAVA_HOME需要指向上面添加文件夹中的jre或jdk。

此时,就涉及了一个路径的问题,如下图所示,本案例中已添加打包文件的目录结构

此时的JAVA_HOME就需要配为 [ProgramFilesFolder][Manufacturer]\[ProductName]\RCA-Service\jdk

至于,[ProgramFilesFolder][Manufacturer]\[ProductName]是怎么来的,它来自于下面2.6中的安装参数,也是默认的,三个变量分别是文件夹名称(默认是program files(x86))、发布人(填写软件详信息时配的)、工程名称。

下面是安装后,自动生成的目录

2.6 安装参数

再次提示:该界面的[ProgramFilesFolder][Manufacturer]\[ProductName]变量会在配置环境变量时用到。

拓展:版本信息变量为 [|ProductVersion] ,此变量在安装创建界面可以动态调用。

2.7 对话框设置

2.7.1 自定义公司信息、版本信息、联系方式等

发挥你的想象,填写一些需要的内容

注:版本信息,可以写固定值,或变量[ProductVersion],如下图所示

2.7.2 许可证

左侧“对话框”-->右侧“首次安装”(鼠标右键),“添加对话框”

选择LicenseAgreementDlg

选择准备好的rtf格式的协议(rtf和word格式类似)

单选按钮,默认是哪一个被选中的,由你来决定,只需要点击单选图标,在右侧配置真(true)就可以,如下图所示:

2.7.3 安装结束后启动服务(可选)

如下图所示,如果把对钩,配置为true,并指向指定的bat或exe文件,就会达到你想要的效果。

当然这个是有前提的,也就是你在bat脚本中注明了要启动哪些服务,且这些服务已经被你打包好的服务,或者被你主动注册的某个服务,如mysql服务。

注:bat脚本的编写格式,会在底部附录中提供,自行参考!

勾选后,下方指定要启动服务,所对应的bat或exe文件,据此达到你想要的效果!

2.8 注册服务(可选)

最终这些注册成功的服务,会显示在windows服务列表中,你可以win+r键,输入services.msc,看到这些服务(即使exe安装失败了,在你确认回滚之前,仍然可以看到你注册的这些服务或其中一个服务,报错安装程序回滚后,这些注册的服务会被自动清除)。

2.9 注册注册表(可选)

依次点击“注册表-->current user当前用户-->Software”鼠标右键,新建项

名称:Microsoft\Windows\CurrentVersion\Run

修改后自动生成下面的目录结构

然后,再在右侧空白处,鼠标右键,新建值

文件,分别指向你的exe比如mysql或其他bat什么的(目前不是很确定bat是否可行),步骤是这样的,我的注册貌似没起到效果!

2.10 安装风格选

这里就不用过多介绍了,一点便通,好理解,可以找一个自己喜欢的风格,当做主题。

2.11 构建并启动生成exe文件

2.11.1 选择输出文件类型和位置

2.11.2 构建并生成exe

如下图所示,点击产品信息后,再依次点击构建-->运行,这个过程需要稍微等待一会儿。

最后,打开输出文件夹,可以找到生成的exe文件

三、遗留问题

在注册服务后,安装exe时,一直提示如下错误,导致服务实际上无法被成功注册,暂且没搞明白是哪里的问题,后续计划换其他版本试一下,当然有了解的小伙伴,也可告知一下!

说明:服务如果能注册成功,就不用以黑色窗口启动tomcat、ES了,而是以后台服务的方式启动,会比较nice。

四、鸣谢

应用程序安装包制作工具简介

https://blog.csdn.net/zxia1/article/details/6124550

advanced installer 使用常见问题整理

https://blog.csdn.net/frozleaf/article/details/84195026

Windows注册服务的两种方式,并设置服务开机自启

https://blog.csdn.net/qq_41587516/article/details/112485426

advanced installer保姆级做包教程

https://blog.csdn.net/qq_41750806/article/details/122166802

总结

本文重点介绍了把mysql+tomcat+jdk+elasticsearch打包为exe的大概操作步骤,还有一些需要注意的细节以图片方式,均有标注。
由于这个软件的功能确实很强大,比如“先决条件”、“启动条件”这些很实用的功能,本文并没有介绍。后期随着研究的深入,会慢慢补充。
如果你打包的是其他的,比如jar包,可以参考上方的保姆教程。

尾言

如果你有什么想法,可以点赞留言,共同探讨,最后把bat脚本以附录的形式,便于需要的小伙伴学习参考!

附录

start-RCA-3.bat 说明:内容略有改动,不影响阅读,替换为你自己的就可以了。

稍微有linux基础和java基础的都能大概看懂,有疑问,可留言探讨!

@echo off
if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0
bcdedit >nul
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
:UACPrompt
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
exit /B
:UACAdmin
cd /d "%~dp0"


cd %~dp0mysql\bin
echo %~dp0mysql\bin
::start startMysqlServer.bat
start /min mysqld.exe --console


@set JAVA_HOME=%~dp0\jdk
@set CLASS_PATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
@set PATH=%PATH%;%JAVA_HOME%\bin

cd /d "%~dp0"
cd %~dp0elasticsearch\bin
start /min elasticsearch.bat


cd %~dp0tomcat\bin
start /min startup.bat
echo tomcat is started
ping /n 30 127.1 >nul
start explorer  "http://localhost:8080/test/login"


exit

附注

猜你可能喜欢

1、RHEL7/8、CentOS7/8的下载和配置

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

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

相关文章

项目的生命周期与成本、风险、变更的关系

成本与人力投入水平 项目成本的投入在初始阶段逐渐增加,在执行的中间阶段达到顶峰,在项目收尾阶段逐渐下降。成本的投入趋势如下图所示: 初始阶段:从人力成本来看,信息系统开发团队在前期制定项目管理章程及项目管理…

PCB焊盘设计基本原则

SMT的组装质量与PCB焊盘设计有直接的关系,焊盘的大小比例十分重要。如果PCB焊盘设计正确,贴装时少量的歪斜可以再次回流焊纠正(称为自定位或自校正效应),相反,如果PCB焊盘设计不正确,即使贴装位置十分准确,…

图像金字塔,原理、实现及应用

什么是图像金字塔 图像金字塔是对图像的一种多尺度表达,将各个尺度的图像按照分辨率从小到大,依次从上到下排列,就会形成类似金字塔的结构,因此称为图像金字塔。 常见的图像金字塔有两类,一种是高斯金字塔&#xff0…

为什么越来越多的人开始学习大数据

因为根据国内的发展形势,大数据未来的发展前景会非常好,前景好需求高,自然会吸引越来越多的人进入大数据行业 我国市场环境处于急需大数据人才但人才不足的阶段,所以未来大数据领域会有很多的就业机遇。 2022年春季,…

camunda流程引擎基本使用(笔记)

文章目录一、camunda基础1.1 安装与部署流程引擎1.2 流程引擎结构1.3 流程引擎的基本使用1.3.1 创建一个BPMN Diagram1.3.2 实现一个外部工作者1.3.3 部署流程1.3.4 创建一个流程实例并消费1.3.5 向流程中添加用户任务1.3.6 添加网关1.3.7 业务规则二、Java 集成流程引擎2.1 为…

酷开科技大数据揭秘!酷开系统中的千屏千面究竟指的是什么?

互联网行业的快速发展,给我们带来了极大的便利。回顾整个互联网行业的发展历程,从PC时代到移动互联网时代,从移动互联网时代到物联网时代,现在又即将从物联网时代迈入人工智能时代。这些飞速发展的背后,其实是对数据利…

ICG-alkyne,吲哚菁绿-炔基结构式,实验室科研试剂,CAS号:1622335-41-4

ICG-alkyne,吲哚菁绿-炔基 中文名称:吲哚菁绿-炔基 CAS号:1622335-41-4 英文名称:ICG-alkyne 英文别名:ICG-alk 性状:绿色粉末 化学式:C48H53N3O4S 分子量:768.03 溶剂:溶于…

3BHE029110R0111 ABB

3BHE029110R0111 ABB变频器控制方式低压通用变频输出电压为380~650V,输出功率为0.75~400kW,工作频率为0~400Hz,它的主电路都采用交—直—交电路。其控制方式经历了以下四代。1U/fC的正弦脉宽调制&#xff0…

ggplot2的组图拓展包(1):patchwork(中篇)

专注系列化、高质量的R语言教程推文索引 | 联系小编 | 付费合集上篇和上篇续介绍了使用操作符进行组图的方法,这里默认读者已经能够理解各种操作符在本篇推文中的使用场景。本篇目录如下:0 示例图形6 plot_layout函数(下)6.1 guid…

CSS3-数据可视化

2D动画 - transform CSS3 transform属性允许你旋转,缩放,倾斜或平移给定元素。 Transform是形变的意思(通常也叫变换),transformer就是变形金刚 常见的函数transform function有: 平移:transl…

实际开发中如何存储密码(md5加盐bcrypt)golang

文章目录简介加盐的加密方式md5 加盐方式bcrypt 方式简介 一般前端把用户密码发给服务端,服务端实际业务中如何存储密码呢,如何存储密码才能保证密码不被开发者获取或者被截取呢,保证密码的安全 加盐的加密方式 现在的企业开发大都采用这种…

凌恩生物文献分享|颠覆性的宏基因组新思路,速来get!

非人灵长类动物(NHP)是人类的近亲,为宿主-微生物互作的研究提供了一个很好的例子。近年来研究主要集中在野生灵长类动物的肠道微生物群,这将有助于了解灵长类及其肠道微生物群的进化,但仍然缺乏关于野生种群肠道微生物…

通用后台管理系统-前端搭建

一 背景 基于vuespringboot 搭建一套通用管理后台 主要包括用户管理模块、权限模块、菜单模块 二 环境信息 2.1 前端工具版本 2.1.1 npm 版本 PS D:\front> npm -v 8.5.0PS D:\front> npm config get registry https://registry.npm.taobao.org/ PS D:\front>2.1…

埋点tracker:前端埋点服务-技术要点梳理

一、背景埋点方案,前端涉及到哪些技术要点,本文做简单的梳理和总结。二、指纹追踪技术:识别到用户及设备浏览器:浏览器指纹_snowli的博客-CSDN博客三、用户设备信息(navigator)navigator.userAgent四、页面…

利用Mysql存储过程造百万级数据

1.准备工作(1)由于是使用存储过程,mysql从5.0版开始支持存储过程,那么需要mysql的版本在5.0或者以上。如何查看mysql的版本,使用下面sql语句查看:(2)创建两张表,表结构一…

Android Crash和ANR监控

文章目录一、Crash1.1 概念1.2 类型二、ANR2.1 概念2.2 类型2.2.1 KeyDispatchTimeout(常见)2.2.2 BroadcastTimeout2.2.3 ServiceTimeout2.2.4 ContentProviderTimeout三、测试中如何关注3.1 Crash测试关注方法3.2 ANR测试关注方法四、如何记录与处理4.…

C++复习笔记--STL的string容器和vector容器

1--string容器string 本质上是一个类,其不同于指针 char*,string 类的内部封装了 char*,用于管理字符串,是一个 char* 型的容器;1-1--string构造函数string 的构造函数原型:string(); // 创建一个空的字符串…

媒体邀约的形式和步骤

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 做媒体服务很多年,今天就与大家分享下媒体邀约都有哪些形式: 1,电话邀约:通过电话与媒体记者进行沟通,邀请其参加活动或接受采…

CDC 长沙站丨云原生技术研讨会:数字兴链,云化未来!

一、活动信息:活动主题:CDC 长沙站丨云原生技术研讨会活动时间:2023 年 3 月 14 日下午 14:30-17:30活动地点:长沙市岳麓区-拓维信息总部 1 楼多功能厅活动参与方式:免门票参与,戳此…

船舶自动驾驶避撞规则

1无人船避碰阶段 如图1所示。 第一阶段:感知阶段。使用雷达、AIS、激光雷达和视觉传感器等感知传感器进行障碍物检测。利用感知到的信息,获得障碍物的运动信息。 第二阶段:决策阶段。利用障碍物的运动信息做出避免冲突的决策。在这一阶段&am…