innosetup - 无法运行和/或停止/删除Windows服务
问题描述:
我希望能够使用installutil.exe安装Windows服务,然后从innosetup脚本自动运行并停止/删除T.myService.exe。我尝试下面的代码innosetup - 无法运行和/或停止/删除Windows服务
[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
以上只是表明我T.myService.exe在任务管理器/ SERVICES.MSC但状态为“已停止”。他们似乎没有自动运行。我将在任务管理器上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显式删除所有相关的文件从应用程序目录,但该服务仍然出现在任务管理器/ services.msc这是一个问题。
我缺少什么?我应该怎么做才能自动运行和停止/删除服务?
答
将“srvman.exe”与您的应用程序一起部署到应用程序目录。
SRVMAN:http://tools.sysprogs.org/srvman/-
在innosetup脚本添加卸载动作
[UninstallRun] Filename: "{app}\srvman.exe"; Parameters: "delete YOUR_SERVICE_NAME";
答
相反InstallUtil的,使用SC:
[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}";
因此,当从Inno Setup执行时,“InstallUtil.exe”不会显示任何问题,解释为什么它无法启动服务? –
另外它似乎并没有['InstallUtil'](https://docs.microsoft.com/zh-cn/dotnet/framework/tools/installutil-exe-installer-tool)具有“stop”和“delete”关键字。 –
当您从命令提示符运行'InstallUtil.exe'时 - 即使Inno Setup未提前安装服务(但未启动),它是否也能正常工作? +您是否使用提升的命令提示符进行安装? –