我在 C# 中创建了一个 Windows 服务,使用 Visual Studio 2008 我几乎遵循了这个: http: //www.codeproject.com/KB/dotnet/simplewindowsservice.aspx
我按照文章中的说明创建了一个安装项目,然后运行它......它将我的服务安装到C:\Program Files\Product etc....
但是,它不会出现在服务列表中......
我错过了什么?
我在 C# 中创建了一个 Windows 服务,使用 Visual Studio 2008 我几乎遵循了这个: http: //www.codeproject.com/KB/dotnet/simplewindowsservice.aspx
我按照文章中的说明创建了一个安装项目,然后运行它......它将我的服务安装到C:\Program Files\Product etc....
但是,它不会出现在服务列表中......
我错过了什么?
您链接的文章中最重要的部分在这里
将自定义操作添加到设置项目
1.在解决方案资源管理器中,右键单击安装项目,指向查看,然后选择自定义操作。出现自定义操作编辑器。
2.在自定义操作编辑器中,右键单击自定义操作节点并选择添加自定义操作。将出现“选择项目中的项目”对话框。
3.双击列表框中的应用程序文件夹将其打开,从MyNewService(Active)中选择主输出,然后单击确定。主要输出被添加到自定义操作的所有四个节点——安装、提交、回滚和卸载。
4.构建设置项目。
如果您跳过这些步骤,您的安装项目将构建您的文件并将其复制到正确的目录;但是,如果没有这些步骤,他们不会将您的二进制文件注册为服务。
我还应该注意,这适用于具有/具有内置设置/部署项目模板的旧版 Visual Studio。较新版本的 Visual Studio 具有不同的设置/部署项目(有些需要第三方软件。)
我建议查看WiX 工具集并在此处查看Windows 服务的 WiX 安装。
我被这个人当面占有了,所以我把它放在这里以防万一其他人碰到它。
如果您按照指南中的说明进行操作,但仍然遇到安装问题,请确保您的 Installer 类是公开的。内部不行。
我遇到了同样的问题,然后我意识到我从未为 ServiceInstaller 设置父级。
双击您的项目安装程序。设计者应该展示一个服务安装程序和进程安装程序。当您单击其中一个并查看属性时,您应该注意必须将 Parent 属性都设置为项目安装程序的类名。
或者,如果您在代码中执行此操作,请确保您设置:
serviceInstaller.Parent = this;
和
serviceProcessInstaller.Parent = this;
按照这些说明,他们为我工作。具体来说,该部分位于文章底部附近。
在 Visual Studio 2013 中,我使用 InstallShield 模板进行服务应用程序遇到了同样的问题。但是在使用安装项目模板https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d时,它就像魅力一样
所以下载安装项目模板关闭你的工作室,运行这个安装并启动你的工作室,这将工作。
邓恩。
这是来自 CodeProject.com 的 tgeek001 的一个很好的教程,它帮助了我。它包括我在上面的帖子中没有看到的几件事: 1. 在卸载服务之前停止服务的事件处理程序代码 2. 设置自定义操作代码中的特定条件和属性以防止失败(这些修复了错误 1001我在按照上面接受的答案中的说明进行操作时遇到的问题) 3. Win Service 属性“删除以前的版本”下拉菜单设置为 true
http://www.codeproject.com/Tips/575177/Window-Service-Deployment-using-VS
以下来自自定义操作设置的教程(案例很重要):
最后,在 WinService 项目中,确保将下拉菜单“删除以前的版本”设置为 true。
干杯
我发现您的安装程序类与服务在同一个项目中。安装程序不能存在于服务引用的库项目中。
请记住在搜索之前检查您为服务提供的名称。(右键->属性->查看服务名