【问题标题】:nodejs child_process.spawn msdeploy.exe with space in dest sitenodejs child_process.spawn msdeploy.exe 与目标站点中的空间
【发布时间】:2015-03-04 22:12:14
【问题描述】:

我正在尝试将child_process.spawn 与 msdeploy.exe 一起使用,以在 IIS 中自动部署某些应用程序。

每当我的目标站点名称中有空格时,都会导致 msdeploy 崩溃。

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();
});

我尝试了其他一些替代方法,例如 put "'-dest:iisApp="Default Web Site/test"',但 msdeploy 也给了我一个错误。 这个错误就像:Argument '"-dest:iisApp=Default Web Site/haha"' not recognized. All arguments must begin with "-" char.

当我尝试转义空格字符或像上面描述的那样输入“时,这给了我一个类似的错误。

这是 nodejs 的错误吗?也许我做错了什么? 谢谢。

【问题讨论】:

    标签: node.js space child-process spawn


    【解决方案1】:

    如何做到这一点:

    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
    );
    

    这不起作用的唯一方法是如果'program.exe'被命名为'program name with space.exe'

    【讨论】:

      猜你喜欢
      • 2014-01-30
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      相关资源
      最近更新 更多