2009-10-09 120 views
9

我开发了一个使用Visual Studio 2008的Windows服务。我想在未安装Visual Studio的计算机上安装该服务,但安装了.NET 3.5。如何安装在.NET 3.5中开发的Windows服务?

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

回答

4

这里有一个关于.Net 2.0和VS2005的微软KB。 .Net 3.5和VS2008中的过程完全相同。

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

而这里的一个图片更好的文章,以使其更清晰。 (有时KB的是没有教程,你可以找到其他地方的友好。)

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

+0

当VS在机器上可用时,在安装服务时没有问题。如果VS不可用,我们如何安装在.Net3.5中开发的服务? – srv 2009-10-09 05:08:35

+0

安装项目在构建时会创建一个安装程序(.msi文件)。将它复制(和setup.exe也将在该项目的文件夹中)到您要安装它的机器上并像任何安装程序一样运行它。有一点需要注意的是,您可能需要右键单击安装项目并选择“构建”。默认情况下,当您选择“构建解决方案”时,安装项目不会生成。这个恼人的默认值可以在配置管理器中重写。 – David 2009-10-09 05:44:26

1

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

8

这实际上很简单,因为我几天前做了我做的东西。

因此,在您的服务项目要:

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

现在你需要做一个安装项目。最好的办法是使用安装向导。

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

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

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

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

0

消息:

“错误1053:该服务没有启动或控制及时 请求作出响应”

通常是对启动Windows服务的问题的通用响应。你应该做的是检查事件日志,很可能你会发现真正的错误,阻止服务启动。