Inno Setup中使用sc create命令传递参数的正确方法
解决Inno Setup中sc create命令传递服务启动参数的错误1639问题
错误代码1639的核心原因是sc create命令对binPath参数的格式要求没被满足:必须把包含可执行文件路径和启动参数的整个字符串用引号包裹。如果没正确包裹,sc会把后续的启动参数识别成无效的命令选项,直接抛出参数错误。
正确的[Run]段写法
[Run] Filename: "{sys}\sc.exe"; Parameters: "create ByTestService start= auto binPath= ""{app}\Vytelle.DataService.Worker.exe ThisisParameter"""; Flags: runhidden; StatusMsg: "正在创建服务..."
关键注意事项
start= auto中间的空格不能省略:sc命令的选项格式是选项= 值,这里的空格是语法要求,少了会直接报错- binPath的引号转义:在Inno Setup的.ini配置中,要用两个双引号
""来表示一个实际的双引号,这样sc才能正确识别整个路径+参数作为一个完整的binPath值 - 如果你的启动参数里包含空格,更要严格按这个格式写,否则sc会把空格后的内容当成新的命令选项
验证配置是否正确
安装完成后,可以打开命令提示符执行以下命令,检查服务的配置是否符合预期:
sc qc ByTestService
查看输出中的BINARY_PATH_NAME字段,确认它完整包含了你的exe路径和启动参数。
内容的提问来源于stack exchange,提问作者Haris Hussain
相关产品推荐
相关产品推荐

