为什么Windows安装程序不会删除服务?
我已经使用C#创建了Windows服务项目(WinService.exe)。此外,我加入这个项目(ProjectInstaller.cs)安装能力按照下面的指南从微软: https://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer为什么Windows安装程序不会删除服务?
现在,当我进行安装和使用installutil.exe卸载,我的Windows服务项目增加了服务到服务面板并适当地从中删除。
由于我想将此服务部署到远程计算机,因此我使用VisualStudio 2015创建了Windows安装程序项目(DeployService.msi)作为服务部署项目。另外,我将安装,卸载,提交和回滚的自定义操作配置为主输出作为WinService项目。
当我使用此安装程序执行安装时,该服务会被添加到服务面板中,并且ApplicationFolder会复制服务所需的所有二进制文件。但是,当我执行卸载时,ApplicationFolder二进制文件被删除,但它留下一个InstallState文件,即WinService.InstallState。重要的是,该服务不会从服务面板中删除。
任何帮助在这里通过Windows安装程序从服务面板中删除服务?
我曾尝试加入ServiceProcessInstaller的事件处理程序,并注意到由于某种原因,Windows安装程序永远不会调用OnBeforeUninstall()和OnAfterUinstall()。同时,我注意到OnBeforeInstall()和OnAfterInstall()被调用。这是为什么Windows服务未被卸载的主要原因。
,当我试图重写ProjectInstaller类的方法(从安装derviced): protected override void OnBeforeUninstall(IDictionary savedState); protected override void OnAfterUninstall(IDictionary savedState);
我观察到Windows安装程序适当地调用这些方法,我已经写了适当的方法来去除有windows服务。
是否有可能需要在卸载前停止服务?卸载程序中的这一步? – PhillipH
是的,我也尝试过,但仍然没有从面板中删除。 – Rajan365