【问题标题】:c#: How to automatically update a service?c#:如何自动更新服务?
【发布时间】:2018-05-25 16:42:25
【问题描述】:

这可能是重复的,但我找不到最近的帖子,而且大多数来源都推荐外部工具。

我们有一项通过 Microsoft Visual Studio 2017 安装程序项目安装的服务。我假设要更新服务,我需要一个额外的工具来执行以下操作:

  1. 停止服务(还是让服务自己检查更新并自行停止更好?)
  2. 将新文件复制到安装文件夹
  3. 致电installutil.exe MyUpdatedService.exe(或者如果服务更新,这是否已过时?)
  4. 启动服务

我们已经有一个用于常规应用程序的步骤 1.、2.和 4.的工具。我是否需要实现ServiceController Class 来与服务交互,或者任何程序都可以启动/停止服务?

【问题讨论】:

  • 您是否尝试过使用 powershell 或 cmd,例如:net start SeviceName ?
  • 不,它应该是这样工作的吗?

标签: c# service auto-update


【解决方案1】:

如果你想要一个外部 c# 应用程序,你需要ServiceController。 您可以从服务中停止该服务,但之后您无法真正启动它。

服务注册后无需更新,只需更换服务二进制文件即可。

  1. 在服务仍在运行时重命名旧的服务二进制文件
    • 不确定这是否适用于所有版本的 Windows,也必须重命名。
  2. 以原名复制新版本
  3. 重启服务

    • 这将卸载旧版本并加载新版本。
    • 服务中断时间最短。
  4. 清理旧版本

    • 停止旧版本后,您就可以删除旧的二进制文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-09
    • 2015-10-19
    • 1970-01-01
    • 2010-09-11
    • 2023-03-15
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多