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