【问题标题】:How to install a Windows service developed in .NET 3.5?如何安装在 .NET 3.5 中开发的 Windows 服务?
【发布时间】:2010-12-05 05:25:21
【问题描述】:

我使用 Visual Studio 2008 开发了一个 Windows 服务。我想将该服务安装在未安装 Visual Studio 但安装了 .NET 3.5 的机器上。

通常 InstallUtil.exe 应用于安装 Windows 服务,但 InstallUtil.exe 实用程序在 .NET 3.5 中不可用。当我尝试使用 .NET 2.0 安装该服务时,该服务将显示在服务列表中,但在启动该服务时出现 Windows 服务错误 1053。我们如何避免这个问题并成功安装服务?

【问题讨论】:

    标签: c# .net windows-services


    【解决方案1】:

    这实际上非常简单,因为我几天前刚刚为我制作的东西做了这件事。

    所以在你的服务项目中你想要:

    1. 在解决方案资源管理器中双击您的服务 .cs 文件。它应该会打开一个全灰的屏幕,并谈论从工具箱中拖动东西。
    2. 然后右键单击灰色区域并选择添加安装程序。这会将安装程序项目文件添加到您的项目中。
    3. 然后您将在 ProjectInstaller.cs 的设计视图中拥有 2 个组件(serviceProcessInstaller1 和 serviceInstaller1)。然后,您应该根据需要设置属性。

    现在您需要创建一个设置项目。最好的办法是使用设置向导。

    1. 右键单击您的解决方案并添加一个新项目:添加 > 新项目 > 设置和部署项目 > 设置向导
    2. 在第二步中选择“为 Windows 应用程序创建设置”。
    3. 在第三步,选择“主要输出来自...”
    4. 点击完成。

    现在您需要编辑安装程序以确保包含正确的输出。

    1. 在解决方案资源管理器中右键单击设置项目。
    2. 选择视图 > 编辑器 > 自定义操作。
    3. 右键单击自定义操作树中的安装操作并选择“添加自定义操作...”
    4. 在“选择项目中的项目”对话框中,选择应用程序文件夹并单击确定。
    5. 单击“确定”以选择“主要输出来自...”选项。应该创建一个新节点。
    6. 对提交、回滚和卸载操作重复步骤 4 - 5。

    现在只需构建您的安装程序,它将生成一个 MSI 和一个 setup.exe。选择您要用于部署服务的任何一个。

    【讨论】:

      【解决方案2】:

      对于 .Net 2.0 和 VS2005,有一个 Microsoft KB。该过程在.Net 3.5和VS2008中完全相同。

      http://support.microsoft.com/kb/317421

      这是一篇更好的文章,带有图片以使其更清晰。 (有时知识库不如您在其他地方找到的教程那么友好。)

      http://aspalliance.com/1316_Working_with_Windows_Service_Using_Visual_Studio_2005.3

      【讨论】:

      • 当机器上有VS时,安装服务没有问题。如果 VS 不可用,我们如何安装 .Net3.5 开发的服务?
      • 安装项目在构建时会创建一个安装程序(.msi 文件)。将它(以及该项目文件夹中的 setup.exe)复制到您要安装它的机器上,并像任何安装程序一样运行它。需要注意的一件事是,您可能需要右键单击设置项目并选择“构建”。默认情况下,当您选择“构建解决方案”时,不会构建安装项目。这个烦人的默认设置可以在配置管理器中被覆盖。
      【解决方案3】:

      如果您一直在使用 InstallUtil.exe 安装 Windows 服务,那么这意味着您已将 ProjectInstaller 组件添加到您的服务中。 InstallUtil.exe 所做的只是使用反射来查找嵌入在您的服务中的安装程序组件并在其上执行一些方法。因此,您可以修改您的 Windows 服务以自行安装和卸载,即您不再需要依赖目标计算机上可用的 InstallUtil.exe。我已经成功使用了几个月了。只需按照我提供的here 的分步操作即可。这个想法最初属于 Marc Gravell 和 post

      【讨论】:

        【解决方案4】:

        消息:

        “错误1053:服务没有响应启动或控制 及时提出要求。”

        通常是对启动 Windows 服务的问题的一般响应。您应该做的是检查事件日志,您可能会发现导致服务无法启动的真实错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-13
          • 1970-01-01
          • 2012-03-18
          • 1970-01-01
          • 2023-03-10
          • 2011-05-21
          • 2011-05-07
          • 1970-01-01
          相关资源
          最近更新 更多