我在窗户上。为了构建我的应用程序,我曾经做过很多手动文件操作,最后一步是运行这个命令:
"c:\Program Files\Inno Setup 5\ISCC.exe" /dType=server /dBits=32 /dArchAllowed="x86 x64" config.iss
请注意,/d
选项是将一些自定义变量传递给Inno Setup。
最近发生了变化,我们决定使用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' ]
}));
但Inno Setup并不满意:
stderr: 'Error on line 38 in config.iss:
Value of [Setup] section directive "ArchitecturesAllowed" is invalid.',
所以,参数/dArchAllowed="x86 x64"
出了问题(如果我删除它就会运行。但是我需要这个参数。)这是一个令人讨厌的问题:它有双引号,等于和空格!我尝试了很多组合来逃避特殊角色,但没有成功。
任何想法?谢谢!
答案 0 :(得分:2)
我在this help page找到了答案。
/d
命令行编译器参数值不能用双引号括起来。因此,我刚刚将'/dArchAllowed="x86 x64"'
替换为'/dArchAllowed=x86 x64'
属性中的args
。
整个咕噜声的任务是:
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' ]
}));