C# 在不同的计算机上安装windows服务

C# 在不同的计算机上安装windows服务,c#,visual-studio-2012,C#,Visual Studio 2012,我试着跟随: 上面说: 单击“项目类型”下的“安装和部署项目”,然后 单击“模板”下的“安装项目” 但是在我的VS2012中-没有设置项目: 所以我很困惑该怎么办 ps.在另一台计算机上安装Windows服务的最简单方法是什么?(我不喜欢使用学习曲线陡峭的工具来完成这项任务) pps我不能手动使用installUtil在目标机器上安装windows服务吗?这种方法的注意事项是什么???请检查 是一个很好的选择,学习曲线相当陡峭。签出这个。我最近也碰到了这个问题。 如果您可以通过远程桌面进入计

我试着跟随:

上面说:

单击“项目类型”下的“安装和部署项目”,然后 单击“模板”下的“安装项目”

但是在我的VS2012中-没有
设置项目

所以我很困惑该怎么办

ps.在另一台计算机上安装Windows服务的最简单方法是什么?(我不喜欢使用学习曲线陡峭的工具来完成这项任务)

pps我不能手动使用
installUtil
在目标机器上安装windows服务吗?
这种方法的注意事项是什么???

请检查


是一个很好的选择,学习曲线相当陡峭。签出这个。

我最近也碰到了这个问题。 如果您可以通过远程桌面进入计算机,则可以运行“InstallUtil”并将其指向您的服务可执行文件:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe c:\path\to\my\service.exe
如果您不能远程进入机器,那么有一些工具,比如PsExec,可以让您在远程机器上运行应用程序。您可以使用它在远程服务器上运行InstallUtil

我使用的方法是使用如下内容运行“服务控制器”:

sc.exe \\myserver create "My Service Name" binpath= c:\path\to\my\service.exe
这里有更多关于它的信息:

您还可以使用一组标志设置服务的所有参数,例如,如果服务停止,将采取什么操作。

您还可以使用MsDeploy部署windows服务。我们最近在我们的项目中做了,你可以找到一个教程。

如果你有时间/范围,值得一看。它使构建和部署Windows服务变得极其简单,无需繁琐的安装项目/安装程序。它只是调用
myservice.exe install
myservice.exe uninstall
(如果需要,加上任何凭据)的情况。这可以远程触发,也可以按照Tasker的建议,使用sc或psexec进行触发。

为什么要向下投票?我展示了我到目前为止所做的一切。并问了一个明确的问题@Mike的可能副本:这不一定是副本-除了使用安装程序,可能还有其他方法在不同的机器上安装服务-这也是我在这里问的问题;这个问题与服务无关。你可能是对的,但还是看看公认的答案吧。它会告诉你,有限的安装程序不能用于安装服务,并提供了有关如何使用的信息。@Mike:啊,所以我不能使用该安装程序安装Windows服务?学习曲线现在听起来不太好,没有更简单的替代方案吗?可能在目标机器上手动安装服务?那么
installutil
工具呢?注意事项是什么?在这种情况下,您不需要使用intallutil,请阅读。是的,但我已经创建了我的服务,这件事要求我使用TopShelf创建一个新服务?如果可以解决我的问题,为什么不使用
installutil
?只是我在某个地方读到一些.Net framework版本必须与installUtil和service相同,这就是我现在试图弄明白的是,如果这是一次性安装,它应该可以做到这一点。最简单的方法是在远程计算机上获取服务文件,然后使用installutil或sc注册服务(请注意)。如果a)服务的维护和部署将持续进行,并且b)您有时间,我的回答可能会有长期帮助。根据复杂性的不同,服务逻辑应该非常容易跨端口传输。如果是这样的话,在我看来,如果可以的话,这是值得的……那么
installutil
呢?我不能用这个吗?我想这比使用工具容易。installutil的注意事项是什么?我想我对installutil的回答有点错误,您不需要安装项目,我想您可以将它指向服务可执行文件。我已经更新了我的答案。你是在建议类似于这个答案的东西吗。但是目标机器也必须有.net框架吗?目标机器上的.net framework版本必须与构建该服务的.net framework版本匹配吗?是的,看起来基本上与我所说的相同。目标计算机将需要安装.net framework来完成此操作(但是如果您的服务使用.net,那么您需要它来运行)。您可能可以使用较旧的框架版本InstallUtil,但最好使用与您的程序集匹配的最新/a版本。好吧,这似乎是目前唯一的替代方案?现在唯一的诀窍是这些.net framework版本是否应该匹配