【问题标题】:Install windows service on different computer在不同的计算机上安装 windows 服务
【发布时间】:2015-08-26 21:57:46
【问题描述】:

我试图关注this tutorial

上面说:

"单击项目类型下的设置和部署项目,然后 点击模板下的设置项目。”

但在我的 VS2012 中 - 没有 Setup Project:

所以我很困惑该怎么办?

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

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

【问题讨论】:

  • 为什么要投反对票?我展示了我到目前为止所做的事情。并问了一个明确的问题
  • @Micke:这不一定是重复的——除了使用安装程序之外,可能还有其他方法可以在不同的机器上安装服务——这也是我在这里提出的问题;这个问题与服务无关
  • 您可能是正确的,但还是看看接受的答案。它会告诉您受限安装程序不能用于安装服务,并提供有关使用什么的信息。
  • @Micke:啊,所以我不能使用那个安装程序来安装 Windows 服务?

标签: c# visual-studio-2012


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您有时间/范围,值得一试Topshelf。它使构建和部署 Windows 服务变得非常容易,无需凌乱的设置项目/安装程序。它只是调用myservice.exe installmyservice.exe uninstall(如果需要,加上任何凭据)的情况。这可以远程触发,也可以按照 Tasker 的建议,使用 sc 或 psexec。

    【讨论】:

    • installutil 工具怎么样?有什么注意事项?
    • 在这种情况下您不需要使用 intallutil,请阅读 this
    • 是的,但是我已经创建了我的服务,这个东西要求我使用 TopShelf 创建一个新的服务?
    • 如果可以解决我的问题,为什么不使用installutil ?只是我在某处读到了一些 .Net 框架版本必须与 installUtil 和服务相同,这就是我现在要弄清楚的
    • 是的,如果这是一次性安装,它应该可以解决问题。最容易在远程机器上获取服务文件,然后使用 installutil 或 sc 注册服务(注意caveats)。如果a)服务的维护和部署将持续进行并且b)您有时间,我的回答可能会提供长期帮助。根据复杂性,服务逻辑应该非常容易移植。如果是这样,IMO 如果可以的话,值得付出努力......
    【解决方案3】:

    查看Visual Studio setup projects (vdproj) will not ship with future versions of VS

    WiX Toolset 是一个不错的选择,学习曲线非常陡峭。看看这个sample

    【讨论】:

    • 学习曲线现在听起来不太好——难道没有更简单的选择吗?也许在目标机器上手动安装服务?
    【解决方案4】:

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

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe c:\path\to\my\service.exe
    

    如果您无法远程访问机器,那么可以使用 PsExec https://technet.microsoft.com/en-gb/sysinternals/bb897553.aspx 等工具在远程机器上运行应用程序。您也许可以使用它在远程服务器上运行 InstallUtil。

    我使用的方法是运行“服务控制器”,如下所示:

    sc.exe \\myserver create "My Service Name" binpath= c:\path\to\my\service.exe
    

    这里有更多关于它的信息:https://technet.microsoft.com/en-us/library/cc990289.aspx 还有一堆标志可以用来设置服务的所有参数,例如如果它停止了要采取什么措施。

    【讨论】:

    • installutil 怎么样?我不能用那个吗?我猜这比使用工具更容易。 installutil 有哪些注意事项?
    • 我想我对 installutil 的回答有点错误,你不需要安装项目,我认为你可以将它指向服务可执行文件。我已经更新了我的答案。
    • 您是否在此答案中提出类似的建议? stackoverflow.com/questions/2599562/…。但是目标机器是否也必须为此具有 .net 框架?目标机器上的 .net 框架版本是否必须与构建服务的 .net 框架版本相匹配?
    • 是的,这看起来与我所说的基本相同。目标机器需要安装 .net 框架来执行此操作(但是如果您的服务使用 .net,那么您只需要它来运行)。您可能可以使用较旧的框架版本的 InstallUtil,但最好使用与您的程序集匹配的最新/a 版本。
    • 好吧,这似乎是唯一的选择?现在唯一的技巧是这些 .net 框架版本是否应该匹配
    猜你喜欢
    • 2011-02-12
    • 2011-03-10
    • 1970-01-01
    • 2023-03-25
    • 2012-09-09
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多