前言

来了一个奇葩需求,具体多奇葩就不多说:sweat_smile:,反正最终呢是要做一个exe,并且做成服务,每次随开机启动执行相关业务。本来也有打算用C/C++去写,但是时间估计来不及,就上了自己比较熟悉的技术栈。

用pkg打包nodejs应用为exe

用pkg可以把nodejs应用打包成exe,具体可以参考我的博客,使用Pkg打包node应用的一些坑

尝试用node-windows注册(此路不通)

node-windows是npm上的一个插件,它可以把nodejs项目注册为windows服务,但是这个方法有一个缺点,就是打包成exe之后无法正常的注册成服务,并且没有任何输出。

用instrsv和srvany注册exe为服务(当前选择)

srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行。也就是说srvany只是其注册程序的服务外壳,这个特性对于我们来说非常实用,我们可以通过它让我们的程序以SYSTEM账户启动,或者实现随机器启动而自启动,也可以隐藏不必要的窗口,比如说控制台窗口等等。

具体的操作方法可以参考这个博客使用srvany.exe把程序安装成windows服务

唯一需要注意的就是,如果你打包的程序是x64平台运行的,你需要把srvany拷贝到C:\Windows\SysWOW64,否则服务会无法启动。

因为这俩exe都是32位的后面也没有出64位的,在x64平台下是默认寻找C:\Windows\SysWOW64目录的,而且这个是写死了的,不可更改。

总结:

instsrv.exe -> srvany.exe -> node.exe -> netsh,一环套一环,其中还涉及到注册表操作。用node去操作确实有点捉襟见肘,不如原生C/C++来的顺手,并且因为原生程序写的不是很多,导致在系统兼容性,程序正确性和排错上经验不是很足,还需要继续努力。

0 / 10
0 / 30