我使用Visual Studio 2008在c#中创建了一个Windows服务 我几乎跟着这个: http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx
我按照文章中的指示创建了一个安装项目,然后运行它...... 它将我的服务安装到c:\ program files \ product等....但是,它不会出现在服务列表中..
我缺少什么?
答案 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)安装为服务,并保证您的服务始终正常运行。
要使用此工具:
答案 4 :(得分:1)
按照这些说明,他们为我工作。具体来说,该部分靠近文章的底部。
答案 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
以下内容来自自定义操作设置教程(案例事项):
最后,在WinService项目中,确保设置下拉列表"删除以前的版本"为真。
欢呼声
答案 7 :(得分:0)
我发现您的安装程序类与服务位于同一个项目中。安装程序不能存在于服务引用的库项目中。
答案 8 :(得分:0)
在搜索之前,请记住检查您提供服务的名称。 (右键单击->属性->检查服务名称