Skip to content

mh-cbon/sc-simple-api

Repository files navigation

sc-simple-api

A simple API to manage windows services via SC / NSSM.

Install

npm i @mh-cbon/sc-simple-api --save

Usage

var SimpleScApi = require('@mh-cbon/sc-simple-api')

var ssa = new SimpleScApi()

// sc queryEx type= service
ssa.list({type: "service"}, function (err, items) {
  console.log(items)
})

// sc qdescribe serviceId
ssa.qdescribe("serviceId", function (err, info) {
  console.log(info)
})

// sc qdescribe serviceId + sc queryEx
ssa.describe("serviceId", function (err, info) {
  console.log(info)
})

// sc config fake type= service
ssa.config('fake', {type: "service"}, function (err) {
  err && console.error(err);
})

// sc create failure type= share displayname= "My fake service" \
// binpath= "C:\\nodejsx64\\node.exe C:\\vagrant\\utils\\fake-service.js"
var service = {
  id: 'failure',
  type: 'share',
  displayname: 'My fake service',
  binpath: 'C:\\nodejsx64\\node.exe C:\\vagrant\\utils\\fake-service.js'
}
ssa.install(service, function (err) {
  err && console.error(err);
})

// nssm.exe serviceId C:\\nodejsx64\\node.exe C:\\vagrant\\utils\\fake-service.js
ssa.nssmInstall('serviceId', 'C:\\nodejsx64\\node.exe', 'C:\\vagrant\\utils\\fake-service.js', function (err) {
  err && console.error(err);
})

// sc start fake some= args
ssa.start('fake', ["some=", "args"], function (err) {
  err && console.error(err);
})

// sc stop fake + sc start fake some= args
ssa.restart('fake', ["some=", "args"], function (err) {
  err && console.error(err);
})

// sc stop fake
ssa.stop('fake', function (err) {
  err && console.error(err);
})

// sc delete fake
ssa.uninstall('fake', function (err) {
  err && console.error(err);
})

Testing

To run the windows tests on a fedora-like box,

  • download and install vagrant from their website, do not use distrib package. WinRM is somehow broken at that day.
  • install winrm plugin: vagrant plugin install vagrant-winrm
  • execute npm run test-windows
  • wait, a looooooonnnnggggg time. Windows images are very big....

Read more

notes

If you start to experience weirds behaviors, reboot your windows. As an example, see this