Inno Setup: Installing Windows services using “sc

2020-02-10 18:11发布

问题:

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.

回答1:

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.?



回答2:

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.



标签: inno-setup