0.1.2 • Published 1 year ago

@acidemic/nssm v0.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

nssm

Wrapper for nssm.exe to manage Windows services with Promises support

This is fork of nssm package

Supported node version: "node": ">=0.12"

Installation

npm i @acidemic/nssm

Usage

Require the module:

var Nssm = require('nssm');

Instantiate the object providing service name and options object (so far options object may contains only one parameter nssmExe - path to nssm.exe):

var nssm = Nssm('AeLookupSvc', { nssmExe: 'nssm.exe' });

Execute command by calling appropriate method and passing arguments with callback function. For example, to set startup type:

nssm.set('Start', 'manual', function(error, result) {
  if (error) {
    console.log('*** error:', error, ' stderr:', result);
    return;
  }
  console.log('*** stdout: \'' + result + '\'');
});

You may find this example in examples/set.js.

Promises version:

var Nssm = require('nssm');
//var Nssm = require('../');

var svcName = 'AeLookupSvc';
var options = { nssmExe: 'nssm.exe', encoding: 'utf8' }; // default
var nssm = Nssm(svcName, options);

var propertyName = 'Start';

nssm.get(propertyName)
  .then(function(stdout) {
    console.log('then(): stdout: \'' + stdout + '\'');
  })
  .catch(function(error) {
    console.log('catch(): error:', error);
  })
  ;

You may find this example in examples/get_promise.js.

With Promises calls may be chained:

nssm.set('start', 'manual')
  .then(function(stdout) {
    return nssm.get('start')
  })
  .then(function(stdout) {
    return nssm.start()
  })
  .then(function(stdout) {
    return nssm.stop()
  })
  .then(function(stdout) {
    console.log('DONE');
  })
  .catch(function(error) {
    console.log('ERROR:', error);
  })
  ;

You may find this example in examples/get_promise.js.

Also, you may use callback and Promise simultaneously if needed.

Examples

restart

Please, set the proper name of the service.

var Nssm = require('nssm');
//var Nssm = require('../');

var svcName = 'AeLookupSvc';
var options = { nssmExe: 'nssm.exe', encoding: 'utf8' }; // default
var nssm = Nssm(svcName, options);

nssm.restart(function(error, result) {
  if (error) {
    console.log('*** error:', error, ' stderr:', result);
    return;
  }
  console.log('*** stdout: \'' + result + '\'');
});

You may find this example in examples/restart.js.

get

Please, set the proper name of the service.

var Nssm = require('nssm');
//var Nssm = require('../');

var svcName = 'AeLookupSvc';
var options = { nssmExe: 'nssm.exe', encoding: 'utf8' }; // default
var nssm = Nssm(svcName, options);

nssm.get('Start', function(error, result) {
  if (error) {
    console.log('*** error:', error, ' stderr:', result);
    return;
  }
  console.log('*** stdout: \'' + result + '\'');
});

You may find this example in examples/get_callback.js and examples/get_promises.js.

set

Please, set the proper name of the service.

var Nssm = require('nssm');
//var Nssm = require('../');

var svcName = 'test';
var options = { nssmExe: 'nssm.exe', encoding: 'utf8' }; // default
var nssm = Nssm(svcName, options);

nssm.set('Start', 'manual', function(error, result) {
  if (error) {
    console.log('*** error:', error, ' stderr:', result);
    return;
  }
  console.log('*** stdout: \'' + result + '\'');
});

You may find this example in examples/set.js.

Options object

options.nssmExe - String - pathname of nssm.exe, default: nssm.exe

Available commands:

'install',
'remove',
'start',
'stop',
'restart',
'status',
'pause',
'continue',
'rotate',
'get',
'set',
'reset',

Please, refer to nssm manual for the info on usage: https://nssm.cc/commands.

Aliases

You may also use following aliases when setting parameters values with set method.

parameter: Start

aliasvalue
autoSERVICE_AUTO_START
delayedSERVICE_DELAYED_START
demandSERVICE_DEMAND_START
manualSERVICE_DEMAND_START
disabledSERVICE_DISABLED

parameter: Type

aliasvalue
standaloneSERVICE_WIN32_OWN_PROCESS
interactiveSERVICE_INTERACTIVE_PROCESS

parameter: AppPriority:

aliasvalue
realtimeREALTIME_PRIORITY_CLASS
highHIGH_PRIORITY_CLASS
aboveABOVE_NORMAL_PRIORITY_CLASS
normalNORMAL_PRIORITY_CLASS
belowBELOW_NORMAL_PRIORITY_CLASS
idleIDLE_PRIORITY_CLASS

Credits

Alexander

Links to original package pages:

github.com   npmjs.com   travis-ci.org   coveralls.io   inch-ci.org

License

MIT