c#:如何自动更新服务?

时间:2018-05-24 15:19:57

标签: c# service auto-update

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

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

  1. 停止服务(或者更好地让服务本身检查更新并自行停止?)
  2. 将新文件复制到安装文件夹
  3. 调用installutil.exe MyUpdatedService.exe(如果服务更新,这是否已过时?)
  4. 启动服务
  5. 对于常规应用程序,我们已经有了步骤1,2,和4的工具。我是否需要实施ServiceController Class与服务进行交互,或者任何程序是否可以启动/停止服务?

1 个答案:

答案 0 :(得分:0)

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

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

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

    • 这将卸载旧版本并加载新版本。
    • 服务中断是最短的。
  5. 清理旧版本

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