我有两个二进制文件,必须为它们创建服务。我尝试使用How to install a Windows service with Inno Setup?
中的“sc create”解决方案但它对我不起作用。它在安装结束时卡住了。我做错了什么?
这是我的代码:
Filename: {cmd}; Parameters: "sc create srvname start= auto DisplayName= mysrv binPath= {app}\mybinary.exe" ; Flags: runhidden
我尝试使用cmd
代替{cmd}
- 没有变化。
我没有在我提到的解决方案中尝试Pascal代码。我将它作为最后的手段。
答案 0 :(得分:23)
我使用了这段代码,我的两项服务都在安装和卸载:
[run]
Filename: {sys}\sc.exe; Parameters: "create mysrv start= auto binPath= ""{app}\mysrv.exe""" ; Flags: runhidden
[UninstallRun]
Filename: {sys}\sc.exe; Parameters: "stop mysrv" ; Flags: runhidden
Filename: {sys}\sc.exe; Parameters: "delete mysrv" ; Flags: runhidden
这解决了我的问题,所以为什么我要在这种情况下使用Pascal。?
答案 1 :(得分:10)
你有没有理由试图通过{cmd}
运行它?
添加/C
参数并根据需要引用其余参数,或者只使用所需参数运行sc.exe
。
[Run]
Filename: "sc.exe"; Parameters: "create srvname start= auto DisplayName= mysrv binPath= {app}\mybinary.exe" ; Flags: runhidden
请注意,安装服务的正确方法是this answer中提到的API,它允许您检测和处理错误。