如何在没有安装Visual Studio的计算机上安装Windows服务?

28

我知道安装 Windows 服务的唯一方法是使用"Visual Studio 2008 命令提示符",那么在没有安装 Visual Studio 的机器上安装 Windows 服务的方法有哪些呢(假设已安装 .NET 版本为 2.X)?

12个回答

44

你可以使用位于 .NET Framework 文件夹中(在我的机器上为 C:\Windows\Microsoft.NET\Framework\v2.0.50727)的 installUtil 来完成此操作。


4
为了我的 .Net 4.5 服务,我必须使用位于C:\Windows\Microsoft.NET\Framework\v4.0.30319的 InstallUtil.exe。当我尝试使用v2.0.50727目录中的那个时,出现错误,指出“该程序集是由一个比当前加载的运行时更新的运行时生成的,无法加载”。 - deadlydog
@deadlydog 最初的问题涉及 .Net 版本 2,但您是正确的,您需要使用与服务构建的框架版本匹配的 installUtil 版本。 - Klaus Byskov Pedersen
@giorgi 这将取决于您设置项目要针对哪个 .Net 框架。如果您的项目针对 .Net 4.0,但服务器只安装了 .Net 3.5,则您将无法使用 installUtil 进行安装,即使您可以将其安装,它也无法运行。服务器至少需要具有与您的项目设置的目标 .Net 版本(或更高版本)相同的 .Net 版本。 - deadlydog

8
您可以将Windows服务安装为MSI。将MSI创建为附加到服务项目的普通项目。
在您的服务项目中创建一个Installer类,并添加组件serviceInstaller和serviceProcessInstaller并根据需要进行配置。将服务项目的Project Output添加到MSI项目中,将MSI项目的自定义操作(Install、Commit、Rollback和Uninstall)设置为Service Project的输出。
按照所需的任何其他方式修改MSI项目,构建MSI,然后您就可以在没有VS.NET或使用InstallUtil实用程序应用程序的情况下将您的服务安装到任何Windows机器上。 MSI也会处理卸载等操作。
serviceProcessInstaller组件有一些属性,您可以设置其运行服务的帐户,serviceInstaller包含可以设置的属性,例如服务名称。您将不得不设置ServiceName及其父级,MSDN将提供有关如何使用这两个组件的良好信息。

设置自定义操作? - doug65536

7

相关的MSDN页面:http://msdn.microsoft.com/zh-cn/library/sd8zc8ha.aspx

该页面详细介绍了.NET Framework中垃圾回收器并提供了几种不同类型的垃圾回收器及其运行机制的说明。此外,它还包含了一些与垃圾回收相关的性能和调试方面的方法。

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\installutil.exe yourproject.exe

您无需安装Visual Studio即可使用此功能。

5

是的,installutil.exe 很好用,但是我厌倦了必须记得启动 Visual Studio 2008 命令提示符才能使用它。通常,我会打开一个普通控制台,只有意识到 installutil.exe 的位置不在路径中时才会发现。

幸运的是,installutil.exe 是一组反射调用的包装器。从 MSDN 上可以看到,

Installutil.exe 使用反射来检查指定的程序集,并查找所有带有设置为 true 的 RunInstallerAttributeInstaller 类型。然后该工具将在每个 Installer 类型实例上执行 Install 方法或 Uninstall 方法。

这意味着可以向 Windows 服务添加代码以使其自行安装和卸载。通过这样做,我不再需要 installutil.exe 或 Visual Studio 2008 命令提示符来运行它。

我提供了一份逐步指南,说明如何在这里实现。 -install 选项安装 Windows 服务并启动它。相反,-uninstall 选项停止服务并卸载它。


3

使用Visual Studio命令提示符:

installutil /i fullfilepathtoservice.exe

没有Visual Studio命令提示符:

C:\WINNT\Microsoft.NET\Framework\v1.1.4322 installutil /i fullfilepathtoservice.exe

谢谢。


2

打开命令提示符(cmd)并输入

help sc

以及

sc create

此外,你可能在谈论的installutil.exe实际上只是在.Net Framework目录中。VS的命令提示符只是设置了一个很好的路径,但你也可以从(我的路径)C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727启动它。


2
您不需要使用Visual Studio 2008命令提示符。您需要的是InstallUtil.exe程序,它可以在以下路径中找到:
C:\Windows\Microsoft.NET\Framework\v2.0.50727
在x64机器上,还有一个64位版本在以下路径中:
C:\Windows\Microsoft.NET\Framework64\v2.0.50727
当安装了.NET时,这些目录显然才可用。

2

这只是将.Net框架工具放到PATH上,你仍然可以在普通的命令提示符中指定完整路径使用:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe(显然需要根据你的框架/CPU架构进行调整)。


1
我猜你正在寻找"installutil.exe"程序,用于安装.NET Windows服务。你可以在%windir%\Microsoft.NET\Framework\v2.0.50727中找到它。

1

步骤1> 安装 .net framework(我使用的是 .net 4.0,但你可以根据需要安装)

步骤2> 进入 运行 + cmd,然后点击确定或直接进入您的 Windows 命令提示符(不是 Visual Studio 命令提示符)

步骤3> 输入以下内容

> cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe
> E:\test\test\bin\Debug\test.exe

"

E:\test\test\bin\Debug\是我的Windows服务安装程序保存的路径。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\是InstallUtil.exe存在的路径。

在两个“InstallUtil.exe存在”的地方和路径中必须有一个空格。否则,会引发错误。

步骤4 > 尽情享受...您的服务已安装...现在您可以从控制面板>管理工具>服务中检查它。

"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接