14

我有两个二进制文件,必须为它们创建一个服务。我尝试了使用如何使用 Inno Setup 安装 Windows 服务中的“sc create”的解决方案?

但这对我不起作用。它在安装结束时卡住了。我究竟做错了什么?

这是我的代码:

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

我尝试使用cmd而不是{cmd}- 没有变化。

我没有在我提到的解决方案中尝试 Pascal 代码。我把它作为最后的手段。

4

2 回答 2

32

我使用了这段代码,我的两个服务都在安装和卸载:

[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。?

于 2013-05-13T11:31:11.613 回答
12

你有什么理由试图通过它{cmd}吗?

添加/C参数并根据需要引用其余参数,或者仅sc.exe使用所需参数运行。

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

请注意,安装服务的正确方法是此答案中提到的 API,它将允许您检测和处理错误。

于 2013-05-13T11:33:07.120 回答