I would like to automate this step with a command line that I could add in my installer (Inno Setup).
However, it seem that I need the true service name and not the display name to change the service to “Automatic (Delayed Start)”:
PS C:\WINDOWS\system32> sc.exe config "myapp_myapp" start=delayed-auto
[SC] OpenService FAILED 1060:
The specified service does not exist as an installed service.
PS C:\WINDOWS\system32> sc.exe config myapp01da552321887be0 start=delayed-auto
[SC] ChangeServiceConfig SUCCESS
I am not aware of the true service name when installing the service because it is generated randomly. However, there seems to be a way to get the (truncated) true service name from the display name:
PS C:\WINDOWS\system32> Get-Service -Displayname "myapp_myapp"
Status Name DisplayName
------ ---- -----------
Stopped myapp01da552321... myapp_myapp
I am not so familiar with Windows scripting. Is there a way to run a command to change the service to “Automatic (Delayed Start)” with only the display name myapp_myapp as argument?
I remember I ran into the same issue way back when I built an Elixir app that had to run on Windows. I never automated it though. I added a manual step to the instructions for installing the app, and was content with the fact that you can set this configuration option once, and subsequent installations would keep this setting unchanged (at least, that’s what I remember).
Maybe you can parse the true service name from the output of the command you shared? Should be doable.
Just as an aside: I used these instructions to shorten the delay after which the service started. Two minutes (the default) was a bit too much for me.