安装后,Windows服务未出现在服务列表中

时间:2009-10-13 13:54:30

标签: c# visual-studio-2008 windows-services setup-deployment

我使用Visual Studio 2008在c#中创建了一个Windows服务 我几乎跟着这个: http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

我按照文章中的指示创建了一个安装项目,然后运行它...... 它将我的服务安装到c:\ program files \ product等....但是,它不会出现在服务列表中..

我缺少什么?

9 个答案:

答案 0 :(得分:102)

您链接的文章中最重要的部分是

  

向设置项目添加自定义操作

     
    

1.在解决方案资源管理器中,右键单击安装项目,然后指向“查看”     选择自定义操作。自定义     出现动作编辑器。

         

2.在“自定义操作”编辑器中,右键单击“自定义操作”节点     并选择添加自定义操作。该     在项目对话框中选择项目     出现。

         

3.双击列表框中的应用程序文件夹将其打开,然后选择     MyNewService的主要输出     (活动),然后单击“确定”。首要的     输出被添加到的所有四个节点     自定义操作 安装,提交,     回滚和卸载。

         

4.建立安装项目。

  

如果您跳过这些步骤,您的安装项目将构建并将文件复制到正确的目录;但是,如果没有这些步骤,他们就不会将您的二进制文件注册为服务。


我还应该注意,这适用于具有内置安装/部署项目模板的旧版Visual Studio。较新版本的Visual Studio具有不同的设置/部署项目(一些需要第三方软件。)

我建议您查看WiX Toolset并在此处查看WiX Installation of Windows Services.

答案 1 :(得分:6)

我被这个人所拥有,所以我把它放在这里以防万一其他人遇到它。

如果您按照指南中的说明进行操作但仍然无法安装,请确保您的安装程序类是公开的。内部不起作用。

答案 2 :(得分:5)

我遇到了同样的问题然后我意识到我从未为ServiceInstaller设置父级。

双击项目安装程序。设计人员应该显示Service Installer和Process Installer。单击任一并查看属性时,应注意Parent属性,该属性必须都设置为Project Installer的类名。

或者,如果您在代码中执行此操作,请确保设置:

serviceInstaller.Parent = this;

serviceProcessInstaller.Parent = this;

答案 3 :(得分:3)

安装服务时,我强烈建议使用NSSM,这对我的所有WinService需求都很有用。它可以将任何可执行文件(即使.bat,.cmd)安装为服务,并保证您的服务始终正常运行。

要使用此工具:

  1. here下载

  2. 然后按照说明here

  3. 然后检查服务列表,它应该在那里,然后运行。

答案 4 :(得分:1)

按照这些说明,他们为我工作。具体来说,该部分靠近文章的底部。

MSDN: Walkthrough: Creating a Windows Service

答案 5 :(得分:0)

在Visual Studio 2013中,我使用InstallShield模板为服务应用程序遇到了同样的问题。但是在使用安装项目模板https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

时,它就像魅力一样

所以下载安装项目模板关闭Studio,运行此安装并启动Studio,这将有效。

唐恩。

答案 6 :(得分:0)

这是来自CodeProject.com的tgeek001的一个很好的教程,帮助了我。它包括我在上面的帖子中没有看到的几件事: 1.事件处理程序代码,用于在卸载服务之前停止服务 2.要设置的自定义操作代码中的特定条件和属性,以防止失败(这些修复了我在遵循上面接受的答案中的说明时遇到的错误1001) 3.赢得服务属性"删除以前的版本"下拉列表设置为true

http://www.codeproject.com/Tips/575177/Window-Service-Deployment-using-VS

以下内容来自自定义操作设置教程(案例事项):

  • 安装,将Condition属性设置为以下内容:" NOT(已安装或已安装PREVIOUSVERSIONS)"
  • 卸载,将Condition属性设置为:" NOT UPGRADINGPRODUCTCODE"
  • 提交:设置"自定义操作数据"字段:/ OldProductCode =" [PREVIOUSVERSIONSINSTALLED]"

最后,在WinService项目中,确保设置下拉列表"删除以前的版本"为真。

欢呼声

答案 7 :(得分:0)

我发现您的安装程序类与服务位于同一个项目中。安装程序不能存在于服务引用的库项目中。

答案 8 :(得分:0)

在搜索之前,请记住检查您提供服务的名称。 (右键单击->属性->检查服务名称