11

我编写了一个批处理脚本,以便在使用 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文件是不能执行的,但是输入的时候服务是正常创建的。我该如何解决?

4

2 回答 2

14

与直接调用 SC 相比,使用 API更简洁(并且更容易处理任何错误或服务依赖项)。请注意,此示例假定您使用的是 ANSI Inno,但为 Unicode 修改它相当简单。

不过,就个人而言,我更喜欢将安装/启动/停止/卸载命令构建到服务可执行文件本身中,使其能够自我注册。显然,这对于第三方服务来说是不可能的,但你可以检查它是否已经支持这样的东西。

最后一点是,您不得硬编码 C: 文件夹的路径。你应该{app}改用。

于 2013-03-05T19:46:05.590 回答
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
于 2013-03-04T15:16:33.243 回答