将nodejs文件打包成exe, 并设置开机自启动(没有黑窗口)

news2024/11/15 4:18:21

nodejs打包成exe

使用node的pkg包

# 安装pkg
npm install -g pkg
# 使用pkg打包, 该命令会同时编译 linux, win, mac 版的exe
pkg server.js
# 只打包win版
pkg -t win server.js

如果安装pkg后提示 pkg不是内部命令, 重新打开cmd窗口再试,如果还提示,则需要配置环境变量
查看 .npmrc 文件的配置信息 (默认在C:\Users{用户}下, 如果没有则去 node安装目录下npm下查找)
查看 配置信息中的 prefix 配置路径, 添加到环境变量, 再重启cmd窗口

设置开机自启动 (一)

在打好的exe程序目录下 创建bat文件

# nodejs exe路径
call E:\sdl\server.exe

然后再创建 vbs文件

set ws=WScript.CreateObject("WScript.Shell")
# bat文件路径
ws.Run "E:\sdl\nodeStart.bat",0

在这里插入图片描述
直接运行 server.exe程序会出现黑窗口, 这样运行不会出现黑窗口
然后将vbs文件移动到 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 目录下
StarUp目录就是 启动目录
重启计算机即可开机自启动

设置开机自启动 (二)

上面的方式需要用户自己去配置,对于不懂的人不能一键解决问题
下面使用将exe程序打包成windows服务的方式 一键设计开机自启动

首先要下载工具包 winsw
下载winsw程序 链接: https://github.com/winsw/winsw/releases ,
选择稳定的版本 WinSW v2.11.0 ,直达链接:https://github.com/winsw/winsw/releases/tag/v2.11.0
在这里插入图片描述
软件运行需要.Net Framework软件环境,根据需要下载,一般情况windows是有这个环境的,查看方法 在地址栏上输入C:\Windows\Microsoft.NET\Framework ,按回车键即可查看,缺失下载安装。

然后下载 sample-minimal.xml 配置文件

将这两个文件和 server.exe(node打的exe程序) 放到同一个目录
修改 sample-minimal.xml 配置文件

<service>
  <!-- ID of the service. It should be unique across the Windows system-->
  # 安装windows服务后的服务ID,必须是唯一的。
  <id>nodeStart</id>
  <!-- Display name of the service -->
  # 服务名称,必须是唯一的。一般和id一致即可。
  <name>nodeStart</name>
  <!-- Service description -->
  # 服务描述,可做备注使用。
  <description>nodeStart</description>
  
  <!-- Path to the executable, which should be started -->
  # 执行的命令
  <executable>%BASE%\server.exe</executable>
  # 日志输出
  <logpath>%BASE%\serviceLogs</logpath>
</service>

然后新建两个 bat文件
install.bat

@echo off
start cmd /k "nodeStart.exe install"
exit

uninstall.bat

@echo off
start cmd /k "nodeStart.exe uninstall"
exit

上述exe程序为 下载的winsw程序包, 我更改了包名

然后运行 install 即可设置开机自启动

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

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

相关文章

力扣刷题记录——796. 旋转字符串、884. 两句话中的不常见单词、1046. 最后一块石头的重量

本专栏主要记录力扣的刷题记录&#xff0c;备战蓝桥杯&#xff0c;供复盘和优化算法使用&#xff0c;也希望给大家带来帮助&#xff0c;博主是算法小白&#xff0c;希望各位大佬不要见笑&#xff0c;今天要分享的是——《力扣刷题记录——796. 旋转字符串、884. 两句话中的不常…

五金行业:强行业性的进销存系统具体看三项

很多五金的中小企业&#xff0c;都是从小作坊、个体户做大&#xff0c;普遍有着规模小&#xff0c;管理方式传统&#xff0c;行业内部管理水平偏低等缺陷。从年初忙到年尾&#xff0c;经营者也不清楚是赚是亏&#xff0c;竞争力不强&#xff0c;很多五金企业只要用上管理软件&a…

【HBase高级】1.重要工作机制(1)——读数据流程、数据存储流程

1. 重要工作机制 1.1 读数据流程 1.从zookeeper找到meta表的region的位置&#xff0c;然后读取meta表中的数据。而meta中又存储了用户表的region信息 ZK&#xff1a;/hbase/meta-region-server&#xff0c;该节点保存了meta表的region server数据 2.根据namespace、表名和row…

Elasticsearch:理解 query_string 和 simple_query_string 查询

针对很多的开发者来说&#xff0c;如果你不是很熟悉 DSL 查询&#xff0c;那么在有些情况下&#xff0c;query_string 及 simple_query_string 变得非常灵活及方便。在今天的文章中&#xff0c;我来比较一下这两种查询的方法。 准备数据 我们先使用 _bulk 命令创建如下的一个索…

Go语言入门学习(一)——变量,类型,运算符

Go语言入门学习&#xff08;一&#xff09;——变量&#xff0c;类型&#xff0c;运算符 最近看了蔡超老师与极客邦合作的Go语言学习教程&#xff0c;让我这个之前学java一知半解的我收获颇丰&#xff0c;所以想借此机会把自己的学习历程记录下来&#xff0c;以供后续的查阅 一…

【HoloLens 2 应用开发】自定义手部骨架可视化

推荐微信阅读&#xff1a;【HoloLens 2 应用开发】自定义手部骨架可视化 关闭默认可视化 首先关闭默认的手部可视化&#xff0c;详见上文。 添加预制件 首先&#xff0c;在场景中添加一个 sphere 的 GameObject 对象作为手部关节的预制件。 然后&#xff0c;在场景中添加一个…

CentOS7 网卡bondvlan bond

网卡bonding简介网卡绑定就是把多张物理网卡通过软件虚拟成一个虚拟的网卡&#xff0c;配置完毕后&#xff0c;所有的物理网卡的ip和mac将会变成相同的。多网卡同时工作可以提高网络速度&#xff0c;还可以实现网卡的负载均衡、冗余。bonding模式round-robin(mode0)轮转策略&am…

Docker - 3. 镜像常用命令 docker images、search、pull、rmi

目录 1. 帮助命令 2. 镜像命令 2.1 docker images [选项]&#xff1a;查看所有镜像、仓库、标签和大小 2.2 docker search [选项] 镜像名字&#xff1a;在 Docker Hub 中搜索镜像 2.3 docker pull 镜像名字[:tag]&#xff1a;下载镜像&#xff0c;tag为指定的版本 2.4 d…

MySQL索引特性

文章目录MySQL索引特性索引的概念认识磁盘磁盘的结构磁盘的随机访问&#xff08;Random Access&#xff09;与连续访问&#xff08;Sequential Access&#xff09;MySQL与磁盘交互的基本单位索引的理解观察主键索引现象推导主键索引结构的构建索引结构可以采用哪些数据结构聚簇…

PCI设备的访问方法_桥设备(type1)

PCI设备的访问方法_桥设备(type1) 文章目录PCI设备的访问方法_桥设备(type1)参考资料&#xff1a;一、 硬件结构二、 PCI设备类别及配置方法2.1设备类别2.2 配置设备时怎么选中它三、 配置示例3.1 示例&#xff1a;配置PCI Agent设备3.2 示例&#xff1a;配置PCI桥3.3 示例&…

ThinkPad R490电脑开机之后无限重启怎么重装系统?

ThinkPad R490电脑开机之后无限重启怎么重装系统&#xff1f;有用户使用ThinkPad R490电脑正常开机的情况下&#xff0c;出现了系统自动重启的情况&#xff0c;无法正常的使用电脑了。遇到这个情况怎么去重装一个新的电脑系统&#xff0c;恢复正常使用呢&#xff1f;来看看以下…

九种查找算法-红黑树

红黑树 2-3查找树能保证在插入元素之后能保持树的平衡状态&#xff0c;最坏情况下即所有的子节点都是2-node&#xff0c;树的高度为lgn&#xff0c;从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂&#xff0c;于是就有了一种简单实现2-3树的数据结构&#xff0…

MySQL 数据库练习题记录02

文章目录前言一、数据库基础1.1 sql练习题1.2 sql语句执行顺序1.3 sql语句编写前言 本文主要记录B站视频视频链接的内容&#xff0c;做到知识梳理和总结的作用&#xff0c;项目git地址。 一、数据库基础 1.1 sql练习题 user表数据: idusername1张三2李四3王五4小刘 user_r…

代码随想录算法训练营第32天 回溯算法 java :491.递增子序列 46.全排列47.全排列 II

文章目录LeetCode 491.递增子序列题目详解注意难点示意图LeetCode 46.全排列题目讲解难点LeetCode47.全排列 II题目讲解示图难点总结LeetCode 491.递增子序列 题目详解 注意难点 在题目中有涉及到 子集序列中至少有两个元素 可以用来进行判断 在单层遍历之前需要声明一个数组…

统计学必备基础知识

一&#xff0c;统计学分为两种&#xff1a;1.描述性统计 2.推断性统计 1.统计数据的类型 (1).计量尺度分为3类&#xff1a;分类数据&#xff0c;顺序数据&#xff0c;数值型数据 分类数据&#xff1a;文字表达数据 顺序数据&#xff1a;非数据型数据&#xff0c;顺序数据…

【swagger】spring security中 swagger2,swagger3和knife4j集成的区别 真的弄懂了吗?

文章目录导包正确方式swagger2在security中放行swagger3在security中放行knife4j放行失败原因分析&#xff1a;swagger访问失败原因分析&#xff1a;作为一个强迫症重度的程序猿 不想多导一个jar包 本文创作背景是鉴于网上大多数是旧版本swagger2的教程&#xff0c;且没有针对2…

【数据结构初阶】第五篇——栈和队列

栈 栈的概念及结构 栈的实现 栈的初始化 销毁栈 入栈 出栈 获取栈顶元素 检测栈是否为空 获取栈中有效元素个数 队列 队列的概念和结构 队列的实现 队列的初始化 销毁队列 入队 出队 获取对头元素 获取队尾元素 判断队列是否为空 获取队列中元素个数 栈 栈…

13.包装类、正则表达式、Arrays类、常见算法、Lambda表达式

目录 一.包装类 1.1 什么是包装类 1.2 包装类的作用 1.3 自动装箱和自动拆箱 1.3.1 自动装箱 1.3.2 自动拆箱 1.4 包装类的特有功能 二.正则表达式 2.1 什么是正则表达式 2.2 正则表达式的规定字符 2.3 字符串对象匹配正则表达式的方法 2.4 正则表达式在字符串方法中…

21特征值和特征向量

特征值与特征向量初探 给定矩阵A&#xff0c;矩阵A乘以向量x&#xff0c;就像是使用矩阵A作用在向量x上&#xff0c;最后得到新的向量Ax。在这里&#xff0c;矩阵A就像是一个函数&#xff0c;接受一个向量x作为输入&#xff0c;给出向量Ax作为输出。 在这一过程中&#xff0c…

算法基础集训(第29天)------>DFS之排列数【DFS入门级算法,初学者必会】

一&#xff1a;概念定义该题对于排列数的定义是对给定的数字n&#xff0c;将从1~n的数字进行全排列并输出二&#xff1a;题目描述给定一个整数 n&#xff0c;将数字 1∼n 排成一排&#xff0c;将会有很多种排列方法。现在&#xff0c;请你按照字典序将所有的排列方法输出。输入…