我写了一个批处理脚本,在我用Inno Setup进行安装后执行。问题是我的服务创建有以下命令行:
sc create MySQL start= auto DisplayName= MySQL binPath= "C:\MyApp\MySQL 5.5\bin\mysqld" --defaults-file="C:\MyApp\MySQL 5.5\my.ini"
带有重音符号的字母是这段代码的问题,如果我在cmd中打开bat文件,我就无法执行它,但是当我键入时,正常创建服务。我该如何解决这个问题?
答案 0 :(得分:14)
而不是直接调用SC,它更清晰(并且更容易处理任何错误或服务依赖性)到use the API。请注意,此示例假定您使用的是ANSI Inno,但为Unicode修改此内容非常简单。
但就个人而言,我更喜欢在服务可执行文件本身中构建install / start / stop / uninstall命令,使其自行注册。显然,这不可能为第三方服务做好准备,但你可以查看它是否已经支持这样的事情。
最后一点是,您不能将路径硬编码到C:文件夹。您应该使用{app}
代替。
答案 1 :(得分:4)
您可以尝试将此命令添加到[RUN]
部分(如TLama建议的那样)或在AfterInstall
部分中创建[CODE]
功能。
[Run]
Filename: "{cmd}"; Parameters: "sc create MySQL start= auto DisplayName= MySQL
binPath= ""C:\MyApp\MySQL 5.5\bin\mysqld""
--defaults-file=""C:\MyApp\MySQL 5.5\my.ini""";
Flags: runhidden