如何使用Inno Setup安装Windows服务?

jun*_*cia 11 service inno-setup

我编写了一个批处理脚本,在我安装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"
Run Code Online (Sandbox Code Playgroud)

带有重音符号的字母是这段代码的问题,如果我在cmd中打开bat文件,我就无法执行它,但是当我键入时,正常创建服务.我该如何解决这个问题?

Mir*_*ral 14

而不是直接调用SC,使用API更干净(并且更容易处理任何错误或服务依赖性).请注意,此示例假定您使用的是ANSI Inno,但对Unicode进行修改则非常简单.

但就个人而言,我更喜欢在服务可执行文件本身中构建安装/启动/停止/卸载命令,使其自行注册.显然,这不可能为第三方服务做好准备,但你可以查看它是否已经支持这样的东西.

最后一点是,您不能将路径硬编码到C:文件夹.你应该使用{app}而不是.

  • @MaikenRoskilde如果你正在使用Unicode Inno Setup,那么只需将```后面的`@`符号之前的'A`后缀改为`W`.不需要进行其他更改. (2认同)

Rob*_*beN 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
Run Code Online (Sandbox Code Playgroud)