Inno Setup: Installing Windows services using “sc

2020-02-10 18:17发布

I have two binaries and have to create a service for them. I tried a solution using "sc create" from How to install a Windows service with Inno Setup?

But it did not work for me. It's getting stuck at the end of the installation. What am I doing wrong?

Here is my code:

Filename: {cmd}; Parameters: "sc create srvname start= auto DisplayName= mysrv binPath= {app}\mybinary.exe" ; Flags: runhidden

I tried using cmd instead of {cmd} - no change.

I did not try the Pascal code in the solution which I referred. I am keeping it as the last resort.

标签: inno-setup
2条回答
迷人小祖宗
2楼-- · 2020-02-10 18:43

I used this code and both of my services are installing and uninstalling:

[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

This solved my problem, so why should I use Pascal in this case.?

查看更多
姐就是有狂的资本
3楼-- · 2020-02-10 19:04

Is there any reason you're trying to run it through {cmd}?

Either add the /C parameter and quote the rest as required, or just run sc.exe with the required parameters.

[Run]
Filename: "sc.exe"; Parameters: "create srvname start= auto DisplayName= mysrv binPath= {app}\mybinary.exe" ; Flags: runhidden 

Note that the correct way to install the service is the API as mentioned in this answer that will allow you to detect and handle errors.

查看更多
登录 后发表回答