innosetup - 无法运行和/或停止/删除Windows服务

时间:2017-10-19 07:56:21

标签: c# windows-services inno-setup

我希望能够使用installutil.exe安装Windows服务,然后从 innosetup脚本自动运行并停止/删除T.myService.exe。我尝试了以下代码

[Run]
Filename: "{dotnet40}\InstallUtil.exe"; WorkingDir: "{app}"; Parameters: "T.myService.exe" ; Flags: runhidden


[UninstallRun]
Filename: "{dotnet40}\InstallUtil.exe"; Parameters: "stop T.myService.exe" ; Flags: runhidden
Filename: "{dotnet40}\InstallUtil.exe"; Parameters: "delete T.myService.exe" ; Flags: runhidden

以上只是在TaskManager / services.msc中显示我的T.myService.exe,但状态为“已停止”。它们似乎不会自动运行。我必须手动右键单击任务管理器中的T.myService.exe以使它们运行或在命令提示符下使用以下命令

To install a service
<path>\InstallUtil.exe <path to T.myService.exe>

To uninstall a service
<path>\InstallUtil.exe /u <path to T.myService.exe>

但是,我希望服务在安装完成后自动开始运行,并且当我卸载T.myService.exe的所有痕迹时应该消失。使用我的innosetup代码,它不会自动运行和停止/删除。 我还启用了[UninstallDelete]来显式删除我的T.myService.exe,这会从app目录中删除所有相关文件,但仍然可以在任务管理器/ services.msc中看到该服务,这是一个问题。

我错过了什么?如何自动运行和停止/删除服务?

2 个答案:

答案 0 :(得分:0)

  1. 部署&#34; srvman.exe&#34;应用程序目录以及您的应用程序 SRVMAN http://tools.sysprogs.org/srvman/

  2. 在innosetup脚本中添加卸载操作

    [UninstallRun]
    Filename: "{app}\srvman.exe"; Parameters: "delete YOUR_SERVICE_NAME"; 
    

答案 1 :(得分:0)

使用SC:

代替InstallUtil
[Run]
Filename: "{app}\T.myService.exe"; Parameters: "-service"; StatusMsg: "Creating services"
Filename: "{sys}\sc.exe"; Parameters: "create ""myServiceName"" start= auto binPath= ""{app}\T.myService.exe"""; Flags: runhidden; StatusMsg: "Creating services"

[UninstallRun]
Filename: "{sys}\sc.exe"; Parameters: "stop ""myServiceName"""; Flags: runhidden; StatusMsg: "Stopping services"
Filename: "{sys}\sc.exe"; Parameters: "delete ""myServiceName"""; Flags: runhidden; StatusMsg: "Deleting services"

不要忘记将T.myService.exe复制到{app}目录:

[Files]
Source: "T.myService.exe"; DestDir: "{app}";