上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

pm2 startup在window提示Init system not found

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5960

    回帖

    6759

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6759

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-3-29 18:38:20 | 显示全部楼层 | 阅读模式

    一种其他方向疑似可以考虑nssm,但是未经尝试
    因为pm2 startup不支持window的自动启动
    目前比较通用的方案是
    使用其他库生成自启动脚本,如
    pm2-windows-startup

    > npm install pm2-windows-startup -g
    > pm2-startup install

    但是我们观察一下库
    https://www.npmjs.com/package/pm2-windows-startup

    function enablePm2Startup() {
        startOnBoot.enableAutoStart(applicationName, applicationCommand, function (error) {
            if (error) {
                console.log('Error while trying to add PM2 startup registry entry: ' + error);
            }
            else {
                console.log('Successfully added PM2 startup registry entry.');
            }
        });
    }

    此处设置自启动是使用了start-on-windows-boot库
    这个库的代码也是比较简单的,如下

    var WinReg = require('winreg');
    var startOnBoot = {
        enableAutoStart: function(name, file, callback){
            var key = getKey();
            key.set(name, WinReg.REG_SZ, file, callback || noop);
        },
        disableAutoStart: function(name, callback){
            var key = getKey();
            key.remove(name, callback || noop);
        },
        getAutoStartValue: function(name, callback){
            var key = getKey();
            key.get(name, function(error, result){
                if(result){
                    callback(result.value);
                }
                else{
                    callback(null, error);
                }
            });
        }
    };
    
    var RUN_LOCATION = '\\Software\\Microsoft\\Windows\\CurrentVersion\\Run';
    function getKey(){
        return new WinReg({
            hive: WinReg.HKCU, //CurrentUser,
            key: RUN_LOCATION
        });
    }
    
    function noop(){}
    
    module.exports = startOnBoot;

    可以看到就是简单设置window注册表内容,设置到了window的开机注册表来达成开机自启动

    吐槽

    为什么node几句话就要搞个包

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
  • TA的每日心情
    奋斗
    2024-5-29 00:06
  • 签到天数: 187 天

    [LV.7]常住居民III

    23

    主题

    33

    回帖

    223

    积分

    荣誉开发者

    积分
    223

    新人报道油中2周年荣誉开发者

    发表于 2023-3-29 19:31:14 | 显示全部楼层
    nodejs原生的功能太少,很多功能需要额外引入库,还要操心引入库的安全性问题
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5960

    回帖

    6759

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6759

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-3-29 19:40:55 | 显示全部楼层
    zip11 发表于 2023-3-29 19:31
    nodejs原生的功能太少,很多功能需要额外引入库,还要操心引入库的安全性问题 ...

    主要一个非常简单的功能
    A引入B写几行
    B引入C写几行
    C引入D写几行
    太奇怪了
    一个小功能跑个cmd的问题干了四个库
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-29 00:06
  • 签到天数: 187 天

    [LV.7]常住居民III

    23

    主题

    33

    回帖

    223

    积分

    荣誉开发者

    积分
    223

    新人报道油中2周年荣誉开发者

    发表于 2023-3-29 20:05:06 | 显示全部楼层
    李恒道 发表于 2023-3-29 19:40
    主要一个非常简单的功能
    A引入B写几行
    B引入C写几行

    linux系统,如果安装软件,会同时下载安装依赖程序,目的是不要重复造车轮,用依赖库编程简化了复杂的操作还是省事些,但是不是官方库还得自己审核代码安全,就很费神
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表