如何使用 Grunt 生成具有特殊字符的 windows 命令行?

How to use Grunt to spawn a windows command line with special character?

我在 windows。为了构建我的应用程序,我过去常常进行大量手动文件操作,并且在最后一步 运行 此命令:

"c:\Program Files\Inno Setup 5\ISCC.exe" /dType=server /dBits=32 /dArchAllowed="x86 x64" config.iss

请注意 /d 选项是将一些自定义变量传递给 Inno Setup。

最近情况发生了变化,我们决定使用 G运行t 自动执行任务。所有文件操作都工作正常。但是我无法正确执行最后一步(运行 命令行)。

我试过了:

grunt.task.registerTask('create-exe', 'create the installer', spawnTask({
    cmd: 'c:\Program Files\Inno Setup 5\ISCC.exe', 
    args: ['/dType=server' , '/dBits=32' ,'/dArchAllowed="x86 x64"', 'config.iss' ]
}));

但是 Inno Setup 并不高兴:

stderr: 'Error on line 38 in config.iss: 
Value of [Setup] section directive "ArchitecturesAllowed" is invalid.',

所以,参数 /dArchAllowed="x86 x64" 有问题(如果我删除它,它就是 运行ning。但我需要这个参数。)这是一个讨厌的参数:它有双引号,等于 space!我尝试了很多组合来转义特殊字符,但都没有成功。

有什么想法吗?谢谢!

我在 this help page 上找到了答案。

/d 命令行编译器参数值不能用双引号括起来。所以,我只是在 args 属性.

中用 '/dArchAllowed=x86 x64' 替换了 '/dArchAllowed="x86 x64"'

整个 grunt 任务是:

grunt.task.registerTask('create-exe', 'create the installer', spawnTask({
    cmd: 'c:\Program Files\Inno Setup 5\ISCC.exe', 
    args: ['/dType=server' , '/dBits=32' ,'/dArchAllowed=x86 x64', 'config.iss' ]
}));