[ https://issues.apache.org/jira/browse/CB-6377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13965742#comment-13965742 ]
ASF GitHub Bot commented on CB-6377: ------------------------------------ Github user jsoref commented on a diff in the pull request: https://github.com/apache/cordova-cli/pull/161#discussion_r11502427 --- Diff: src/superspawn.js --- @@ -67,11 +69,11 @@ exports.spawn = function(cmd, args, opts) { var spawnOpts = {}; var d = Q.defer(); - if (process.platform == 'win32') { + if (iswin32) { cmd = resolveWindowsExe(cmd); // If we couldn't find the file, likely we'll end up failing, // but for things like "del", cmd will do the trick. - if (!fs.existsSync(cmd)) { + if (wrapcmd && path.extname(cmd) != '.exe' || !fs.existsSync(cmd)) { --- End diff -- @sgrebnov you misread it, we need this for everything that is `!=` `.exe`. For `.exe`, **Windows** passes arguments directly to the executable, and the executable (or its runtime, e.g. `libc`/`msvcrt`) is responsible for parsing the string into its arguments array (if it believes in arguments arrays at all). For `.bat`, or anything else, **Windows** won't actually launch them if you use the thing that `child_process.spawn` see: https://github.com/joyent/node/issues/2318 so, `child_process.spawn` has to run `cmd.exe` with the arguments. But `cmd.exe` has its own argument parsing which treats `"`s differently. In order to get `cmd.exe` to handle `"`s reasonably, you need to pass it `/s` which is what this block does (see the line below). > CLI is unable to create a project when there are spaces in the path > ------------------------------------------------------------------- > > Key: CB-6377 > URL: https://issues.apache.org/jira/browse/CB-6377 > Project: Apache Cordova > Issue Type: Bug > Components: CLI > Affects Versions: 3.4.0 > Reporter: JennyGee > Assignee: Josh Soref > Priority: Critical > > Unable to create a project where there are spaces in the path. > C:\Program Files\BlackBerry\BB10 WebWorks SDK > 2.1.0.3\webworks-cli\node_modules\ > wrench\lib\wrench.js:249 > if (e.code !== 'EEXIST') throw e; > ^ > Error: ENOENT, no such file or directory 'C:\Documents and > Settings\IEUser\.cord > ova\lib\blackberry10\cordova\v2.1.0.3' > at Object.fs.mkdirSync (fs.js:642:18) > at Object.exports.copyDirSyncRecursive (C:\Program Files\BlackBerry\BB10 > Web > Works SDK 2.1.0.3\webworks-cli\node_modules\wrench\lib\wrench.js:246:12) > at Object._self.fetchBlackBerry (C:\Program Files\BlackBerry\BB10 > WebWorks S > DK 2.1.0.3\webworks-cli\lib\utils\utils.js:59:20) > at new CLI (C:\Program Files\BlackBerry\BB10 WebWorks SDK > 2.1.0.3\webworks-c > li\lib\cli.js:48:19) > at Object.<anonymous> (C:\Program Files\BlackBerry\BB10 WebWorks SDK > 2.1.0.3 > \webworks-cli\bin\webworks:4:16) > at Module._compile (module.js:456:26) > at Object.Module._extensions..js (module.js:474:10) > at Module.load (module.js:356:32) > at Function.Module._load (module.js:312:12) > at Function.Module.runMain (module.js:497:10) > Looking at the source code, it appears that > https://issues.apache.org/jira/browse/CB-6323 broke > https://issues.apache.org/jira/browse/CB-6306 -- This message was sent by Atlassian JIRA (v6.2#6252)