【问题标题】:Windows Service not appearing in services list after install安装后 Windows 服务未出现在服务列表中
【发布时间】:2010-12-06 08:01:24
【问题描述】:

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

我按照文章中的说明创建了一个安装项目,然后运行它... 它将我的服务安装到C:\Program Files\Product etc.... 但是,它不会出现在服务列表中..

我错过了什么?

【问题讨论】:

  • 没有更多信息很难猜到。如果您按照文章中所述进行了所有操作并安装了该服务,那么它应该是可用的。
  • 您是否尝试过刷新服务控制台?控制台中的列表不会自动更新。如果您在安装服务时已经打开了控制台,请尝试刷新它(或重新启动它)。
  • 为时已晚但值得一提:将custom action 添加到设置并确保安装程序类为public

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


【解决方案1】:

您链接的文章中最重要的部分在这里

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

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

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

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

4.构建安装项目。

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


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

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

【讨论】:

  • 有没有办法在安装过程中启动服务?我知道您可以将 StartType 配置为 Automatic,但这只会在重新启动后启动服务。
  • 非常感谢@Nate。当我按照您的指示进行操作时,我回过头来说这是我上次必须做的。
  • 看准了!谢谢,对我有帮助
【解决方案2】:

我被这个人当着脸了,所以我把它放在这里以防万一其他人碰到它。

如果您按照指南中的说明进行操作,但仍然遇到安装问题,请确保您的 Installer 类是公开的。内部不起作用。

【讨论】:

  • 天哪,谢谢。我认为这简直是疯了!我很自大,想“嗯,它只是一个安装程序——为什么还要公开类包装器?”想都没想就删了——砰,问题来了。
【解决方案3】:

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

双击您的项目安装程序。设计者应该展示一个服务安装程序和进程安装程序。当您单击其中一个并查看属性时,您应该注意必须将 Parent 属性都设置为项目安装程序的类名。

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

serviceInstaller.Parent = this;

serviceProcessInstaller.Parent = this;

【讨论】:

  • 谢谢!这对我帮助很大
【解决方案4】:

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

要使用这个工具:

  1. here下载

  2. 并按照说明进行操作here

然后检查服务列表,它应该在那里、启动并运行。

【讨论】:

    【解决方案5】:

    按照这些说明进行操作,它们对我有用。对于具体的设置,该部分位于文章底部附近。

    MSDN: Walkthrough: Creating a Windows Service

    【讨论】:

    • 此链接已过时
    【解决方案6】:

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

    所以下载安装项目模板关闭你的工作室,运行这个安装并启动你的工作室,这将工作。

    邓恩。

    【讨论】:

      【解决方案7】:

      这是来自 CodeProject.com 的 tgeek001 的一个很好的教程,它帮助了我。它包括我在上面的帖子中没有看到的几件事: 1. 卸载服务前停止服务的事件处理程序代码 2. 在自定义操作代码中设置特定条件和属性以防止失败(这些修复了我在按照上面接受的答案中的说明进行操作时遇到的错误 1001) 3. Win Service 属性“Remove Previous Version”下拉设置为true

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

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

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

      最后,在 WinService 项目中,确保将下拉菜单“Remove Previous Versions”设置为 true。

      干杯

      【讨论】:

        【解决方案8】:

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

        【讨论】:

          【解决方案9】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-14
            • 1970-01-01
            • 2019-04-24
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多