I m getting an error while extracting a zip file, probably made on windows, i m unsure as it s not mine, but believe so as it s about a windows binary.
The file seems not corrupted as i can unzip it with gnome unzip app.
File downloaded at /home/mh-cbon/projects/nssm-prebuilt/dl.zip
Unzipping to /home/mh-cbon/projects/nssm-prebuilt/prebuilt
extract-zip creating target directory +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt
extract-zip opening +2ms /home/mh-cbon/projects/nssm-prebuilt/dl.zip with opts { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt' }
extract-zip zipfile entry +6ms nssm-2.24/
extract-zip extracting entry +0ms { filename: 'nssm-2.24/', isDir: true, isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/' }
extract-zip finished processing +1ms nssm-2.24/
extract-zip zipfile entry +1ms nssm-2.24/ChangeLog.txt
extract-zip extracting entry +0ms { filename: 'nssm-2.24/ChangeLog.txt',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/ChangeLog.txt
extract-zip finished processing +11ms nssm-2.24/ChangeLog.txt
extract-zip zipfile entry +0ms nssm-2.24/README.txt
extract-zip extracting entry +0ms { filename: 'nssm-2.24/README.txt',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/README.txt
extract-zip finished processing +2ms nssm-2.24/README.txt
extract-zip zipfile entry +0ms nssm-2.24/src/
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/', isDir: true, isSymlink: false }
extract-zip mkdirp +1ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/' }
extract-zip finished processing +0ms nssm-2.24/src/
extract-zip zipfile entry +0ms nssm-2.24/src/account.cpp
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/account.cpp',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/account.cpp
extract-zip finished processing +1ms nssm-2.24/src/account.cpp
extract-zip zipfile entry +1ms nssm-2.24/src/account.h
extract-zip extracting entry +1ms { filename: 'nssm-2.24/src/account.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/account.h
extract-zip finished processing +2ms nssm-2.24/src/account.h
extract-zip zipfile entry +1ms nssm-2.24/src/console.cpp
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/console.cpp',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/console.cpp
extract-zip finished processing +0ms nssm-2.24/src/console.cpp
extract-zip zipfile entry +1ms nssm-2.24/src/console.h
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/console.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +1ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/console.h
extract-zip finished processing +1ms nssm-2.24/src/console.h
extract-zip zipfile entry +1ms nssm-2.24/src/env.cpp
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/env.cpp',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/env.cpp
extract-zip finished processing +1ms nssm-2.24/src/env.cpp
extract-zip zipfile entry +1ms nssm-2.24/src/env.h
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/env.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/env.h
extract-zip finished processing +2ms nssm-2.24/src/env.h
extract-zip zipfile entry +0ms nssm-2.24/src/event.cpp
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/event.cpp',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/event.cpp
extract-zip finished processing +0ms nssm-2.24/src/event.cpp
extract-zip zipfile entry +0ms nssm-2.24/src/event.h
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/event.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/event.h
extract-zip finished processing +0ms nssm-2.24/src/event.h
extract-zip zipfile entry +0ms nssm-2.24/src/gui.cpp
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/gui.cpp',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/gui.cpp
extract-zip finished processing +0ms nssm-2.24/src/gui.cpp
extract-zip zipfile entry +1ms nssm-2.24/src/gui.h
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/gui.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +1ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/gui.h
extract-zip finished processing +0ms nssm-2.24/src/gui.h
extract-zip zipfile entry +1ms nssm-2.24/src/imports.cpp
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/imports.cpp',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/imports.cpp
extract-zip finished processing +1ms nssm-2.24/src/imports.cpp
extract-zip zipfile entry +1ms nssm-2.24/src/imports.h
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/imports.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/imports.h
extract-zip finished processing +1ms nssm-2.24/src/imports.h
extract-zip zipfile entry +3ms nssm-2.24/src/io.cpp
extract-zip extracting entry +1ms { filename: 'nssm-2.24/src/io.cpp',
isDir: false,
isSymlink: false }
extract-zip mkdirp +1ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +2ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/io.cpp
extract-zip finished processing +3ms nssm-2.24/src/io.cpp
extract-zip zipfile entry +0ms nssm-2.24/src/io.h
extract-zip extracting entry +1ms { filename: 'nssm-2.24/src/io.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/io.h
extract-zip finished processing +1ms nssm-2.24/src/io.h
extract-zip zipfile entry +1ms nssm-2.24/src/messages.mc
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/messages.mc',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/messages.mc
extract-zip finished processing +5ms nssm-2.24/src/messages.mc
extract-zip zipfile entry +0ms nssm-2.24/src/nssm.cpp
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/nssm.cpp',
isDir: false,
isSymlink: false }
extract-zip mkdirp +1ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/nssm.cpp
extract-zip finished processing +1ms nssm-2.24/src/nssm.cpp
extract-zip zipfile entry +0ms nssm-2.24/src/nssm.h
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/nssm.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/nssm.h
extract-zip finished processing +0ms nssm-2.24/src/nssm.h
extract-zip zipfile entry +0ms nssm-2.24/src/nssm.ico
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/nssm.ico',
isDir: false,
isSymlink: false }
extract-zip mkdirp +1ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/nssm.ico
extract-zip finished processing +1ms nssm-2.24/src/nssm.ico
extract-zip zipfile entry +1ms nssm-2.24/src/nssm.rc
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/nssm.rc',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/nssm.rc
extract-zip finished processing +2ms nssm-2.24/src/nssm.rc
extract-zip zipfile entry +0ms nssm-2.24/src/nssm.sln
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/nssm.sln',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/nssm.sln
extract-zip finished processing +2ms nssm-2.24/src/nssm.sln
extract-zip zipfile entry +1ms nssm-2.24/src/nssm.vcproj
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/nssm.vcproj',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/nssm.vcproj
extract-zip finished processing +1ms nssm-2.24/src/nssm.vcproj
extract-zip zipfile entry +0ms nssm-2.24/src/process.cpp
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/process.cpp',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/process.cpp
extract-zip finished processing +1ms nssm-2.24/src/process.cpp
extract-zip zipfile entry +0ms nssm-2.24/src/process.h
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/process.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/process.h
extract-zip finished processing +0ms nssm-2.24/src/process.h
extract-zip zipfile entry +1ms nssm-2.24/src/registry.cpp
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/registry.cpp',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/registry.cpp
extract-zip finished processing +1ms nssm-2.24/src/registry.cpp
extract-zip zipfile entry +0ms nssm-2.24/src/registry.h
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/registry.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/registry.h
extract-zip finished processing +0ms nssm-2.24/src/registry.h
extract-zip zipfile entry +1ms nssm-2.24/src/resource.h
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/resource.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/resource.h
extract-zip finished processing +0ms nssm-2.24/src/resource.h
extract-zip zipfile entry +0ms nssm-2.24/src/service.cpp
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/service.cpp',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/service.cpp
extract-zip finished processing +1ms nssm-2.24/src/service.cpp
extract-zip zipfile entry +1ms nssm-2.24/src/service.h
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/service.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/service.h
extract-zip finished processing +3ms nssm-2.24/src/service.h
extract-zip zipfile entry +1ms nssm-2.24/src/settings.cpp
extract-zip extracting entry +1ms { filename: 'nssm-2.24/src/settings.cpp',
isDir: false,
isSymlink: false }
extract-zip mkdirp +1ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/settings.cpp
extract-zip finished processing +1ms nssm-2.24/src/settings.cpp
extract-zip zipfile entry +1ms nssm-2.24/src/settings.h
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/settings.h',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/settings.h
extract-zip finished processing +1ms nssm-2.24/src/settings.h
extract-zip zipfile entry +0ms nssm-2.24/src/version.cmd
extract-zip extracting entry +0ms { filename: 'nssm-2.24/src/version.cmd',
isDir: false,
isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/src/version.cmd
extract-zip finished processing +0ms nssm-2.24/src/version.cmd
extract-zip zipfile entry +1ms nssm-2.24/win32/
extract-zip extracting entry +0ms { filename: 'nssm-2.24/win32/', isDir: false, isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24' }
extract-zip opening read stream +0ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/win32/
extract-zip finished processing +0ms nssm-2.24/win32/
extract-zip write error +1ms { error:
{ [Error: EISDIR: illegal operation on a directory, open '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/win32/']
errno: -21,
code: 'EISDIR',
syscall: 'open',
path: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/win32/' } }
Error: EISDIR: illegal operation on a directory, open '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/win32/'
at Error (native)
/home/mh-cbon/projects/nssm-prebuilt/install.js:64
throw err
^
Error: EISDIR: illegal operation on a directory, open '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/win32/'
at Error (native)
var pkg = require('./package.json')
var hyperquest = require('hyperquest')
var extract = require('extract-zip')
var path = require('path');
var async = require('async');
var fs = require('fs');
var Spinner = require('cli-spinner').Spinner;
var url = pkg["x-url"] || "https://nssm.cc/release/nssm-2.24.zip";
var dlFile = path.join(__dirname, "dl.zip")
var targetPath = path.join(__dirname, "prebuilt")
var downloadFile = function (then) {
fs.access(dlFile, fs.F_OK, function (err) {
if (!err) {
console.log("File already downloaded at %s", dlFile)
return then()
}
console.log("Downloading %s to %s", url, dlFile)
var spinner = new Spinner('please wait.. %s');
spinner.setSpinnerString('|/-\\');
spinner.start();
var r = hyperquest(url);
r.pipe(fs.createWriteStream(dlFile));
r.on('error', function (err) {
spinner.stop(true);
then(err)
})
r.on('end', function () {
spinner.stop(true);
then()
});
});
}
var createUnzipDir = function (then) {
fs.access(dlFile, fs.F_OK, function (err) {
if(err) fs.mkdir(targetPath, then)
else then()
})
}
var unzipfile = function (then) {
console.log("Unzipping to %s", targetPath)
extract(dlFile, {dir: targetPath}, then)
}
async.series([
downloadFile,
createUnzipDir,
unzipfile
], function (err) {
if (err) {
console.error(err.stack)
throw err
}
console.log("All done !")
});