安装后,Windows服务不会显示在服务列表中
我在c#中创build了一个Windows服务,使用Visual Studio 2008我几乎遵循这个: http : //www.codeproject.com/KB/dotnet/simplewindowsservice.aspx
我按照文章中的指示创build了一个安装项目,并运行它…它将我的服务安装到c:\ program files \ product等….但是,它不会出现在服务列表中。
我错过了什么?
你链接的文章中最重要的部分就在这里
将自定义操作添加到安装项目
1.在解决scheme资源pipe理器中,右键单击安装项目,指向查看,然后select自定义操作。 自定义操作编辑器出现。
2.在自定义操作编辑器中,右键单击自定义操作节点,然后select添加自定义操作。 出现在项目中select项目对话框。
3.双击列表框中的应用程序文件夹将其打开,从MyNewService(Active)中select主要输出,然后单击确定。 主要输出被添加到自定义操作的所有四个节点:安装,提交,回滚和卸载。
4.build立安装项目。
如果您跳过这些步骤,您的安装项目将生成并将您的文件复制到正确的目录; 但是,如果没有这些步骤,他们将不会将您的二进制注册为服务。
我还应该注意到,这适用于具有/内置“安装/部署”项目模板的较旧版本的Visual Studio。 较新版本的Visual Studio有不同的安装/部署项目(有些需要第三方软件)。
我build议寻findWiX工具集,并检查这里的WiX安装Windows服务。
我有这个相同的问题,然后我意识到,我从来没有为ServiceInstaller设置父。
双击您的项目安装程序。 devise者应该显示一个Service Installer和Process Installer。 当你点击其中的任何一个并查看属性时,你应该注意到Parent属性,它们都必须被设置为Project Installer的类名。
或者,如果你使用代码,确保你设置了:
serviceInstaller.Parent = this;
和
serviceProcessInstaller.Parent = this;
我被这张脸所拥有,所以我把它放在这里,以防其他人遇到它。
如果您按照指南中的说明进行安装,但仍然存在安装问题,请确保您的安装程序类是公开的。 内部不行。
在安装服务时,我强烈推荐使用NSSM ,这对我所有的WinService需求都非常有效。 它可以将任何可执行文件(即使.bat,.cmd)作为服务安装,并确保您的服务始终处于运行状态。
要使用这个工具:
-
从这里下载
-
并按照这里的指示
然后检查服务列表,它应该在那里,并且运行。
按照这些指示,他们为我工作。 对于具体的设置,该部分接近文章的底部。
MSDN:演练:创buildWindows服务
在Visual Studio 2013中,我遇到了使用InstallShield模板进行服务应用程序的相同问题。 但是,使用安装项目模板时,它的作用就像魅力一样https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d
所以下载安装项目模板closures你的Studio,运行这个安装并启动你的Studio,这个就行了。
邓恩。
这是来自CodeProject.com tgeek001的一个很好的教程,帮助我。 它包括我在上面的post中没有看到的几件事情:1.在卸载服务之前停止服务的事件处理程序代码2.为了防止失败而设置的自定义操作代码中的特定条件和属性(这些修复了错误1001我遵循上面接受的答案中的说明经验)3. Win服务属性“删除以前的版本”下拉列表设置为true
http://www.codeproject.com/Tips/575177/Window-Service-Deployment-using-VS
以下是自定义操作设置教程(案例):
- 安装,将条件属性设置为以下:“NOT(已安装或PREVIOUSVERSIONSINSTALLED)”
- 卸载,将Condition属性设置为:“NOT UPGRADINGPRODUCTCODE”
- 提交:将“自定义操作数据”字段设置为:/ OldProductCode =“[PREVIOUSVERSIONSINSTALLED]”
最后,在WinService项目中,确保将下拉列表“删除以前的版本”设置为true。
干杯
我发现你的安装程序类与服务在同一个项目中。 安装程序不能存在于服务引用的库项目中。