/ / nodejs child_process.spawn msdeploy.exe mit Speicherplatz in der Ziel-Site - node.js, space, untergeordneter Prozess, spawn

nodejs child_process.spawn msdeploy.exe mit Leerzeichen in der Ziel-Site - node.js, space, Kind-Prozess, Spawn

Ich versuche zu benutzen child_process.spawn mit msdeploy.exe zum Automatisieren der Bereitstellung einiger Anwendungen in IIS.

Immer wenn ich einen Speicherplatz in meinem Ziel-Site-Namen habe, stürzt msdeploy ab.

var command = "C:/Program Files/IIS/Microsoft Web Deploy V3/msdeploy.exe";
var args = [];
args.push("-verb=sync");
args.push("-source:iisApp=C:/Users/PATH_TO_DEPLOY/dist");
args.push("-dest:iisApp=Default Web Site/test");

var process = spawn(command,args);

process.stdout.on("data", function(data) { grunt.log.write(data) });
process.stderr.on("data", function(data) { grunt.log.error(data); });
process.on("exit", function(code) {
if (code !== 0) {
grunt.fail.warn("Something went wrong");
}
done();
});

Ich habe einige andere Alternativen ausprobiert wie " "-dest:iisApp="Default Web Site/test"" aber msdeploy gibt mir auch einen Fehler. Dieser Fehler ist wie folgt: Argument ""-dest:iisApp=Default Web Site/haha"" not recognized. All arguments must begin with "-" char.

Wenn ich versuche, dem Space-Zeichen zu entkommen oder "wie oben beschrieben" zu schreiben, habe ich einen ähnlichen Fehler bekommen.

Ist das ein Fehler in Nodejs? Vielleicht habe ich etwas falsch gemacht? Danken.

Antworten:

0 für die Antwort № 1

Wie man das erreicht:

var path = require("path");
var platform = require("platform");
var cp = require("child_process");

var full_cmd = "/path/to/dir with space/program.exe";
var cmd = "." + path.sep + path.basename(full_cmd); // cannot include double quotes -- the work-around is to use the "cmd_opts.cwd"
var cmd_args = [""--import-path=/path/to/dir with space/import_file""]; // can wrap each with double-quotes (Windows only -- fails on Unix)
var cmd_opts = {
cwd: path.dirname(full_cmd),
encoding: "utf8"
};
if (platform.os() === "win32") {
cmd_opts.windowsVerbatimArguments = true;
}
var proc = cp.spawn(
cmd,
cmd_args,
cmd_opts
);

Das funktioniert nur, wenn "program.exe" etwa so heißt wie "Programmname mit Space.exe"