gpt4 book ai didi

windows-services - 自动更新 Windows 服务

转载 作者:行者123 更新时间:2023-12-03 14:58:06 24 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

2年前关闭。




Improve this question




我即将开发一个程序,该程序将在多个客户端的后端服务器(具有 Internet 访问权限)上作为 Windows 服务安装和运行。我没有对服务器的物理访问权限。我正在研究的是一种可靠地推出程序更新的方案。

我花了很多时间寻找 Windows 服务自动更新的最佳实践,但发现有用的信息很少。大多数技术,例如 ClickOnce,似乎主要迎合基于 Windows 窗体的应用程序。

我目前的计划是:

  • 当更新可用时,让正在运行的服务下载、安装并启动更新服务。
  • 更新服务将下载主服务的新版本,并与当前仍处于事件状态的版本并行安装。
  • 更新服务接下来停止旧版本,然后启动新版本的服务。
  • 新版本在启动时禁用更新服务。

  • 我的一些重要问题是:
  • 能够处理主服务和更新服务的更新
  • 能够在更新过程中的任何时候处理断电或连接失败等中断

  • 我想知道这是否是解决这个问题的常用方法和/或我是否遗漏了任何重要的东西。是不是太复杂了,或者太简单了?你会怎么做(或者,更好的是,你是怎么成功地做到这一点的)?

    谢谢!

    最佳答案

    去年我遇到了同样的问题,并且我也遇到了很多同样的问题。几点建议:

  • 由于任一服务可能会更新,
    这两项服务都将作为
    另一个的更新者。服务 A 将
    更新服务 B,反之亦然。为了
    这个原因,我建议简单地运行
    随时提供这两项服务。除非
    你担心真的加载
    关闭你的服务器
    do-update-exist 调用,
    启用/禁用服务管理
    不值得开销。
  • 像服务不能安装在
    单机。换句话说,你
    不能安装新旧版本
    并排服务,如果他们有
    同名。除非你要
    使您的更新过程复杂化,我
    建议你卸载旧版本
    然后安装新版本。
    例如,服务 A 将下载
    服务 B 安装程序,卸载
    服务B,安装新版本
    服务B然后运行。服务乙
    会对服务 A 做同样的事情。
  • 由于每个服务都在管理
    其他,他们不应该只检查
    可用的更新,但他们应该
    确认彼此的健康。为了
    例如,服务 A 将检查以查看
    如果服务 B 存在并且它是
    运行。如果健康检查失败,
    解决问题的步骤列表
    让服务运行将是
    由服务 A 完成。执行
    健康检查和恢复操作
    现在将涵盖您的任何问题
    出现更新,初始
    安装或一般操作。
  • 在客户端上进行充足的日志记录
    和服务器。你会想要跟踪
    采取了哪些行动以及何时采取的行动。
    例如,服务 A 可能在它
    正在检查更新,当它是
    执行健康检查和
    相关 Action 。在服务上
    (假设您正在调用网络
    寻找更新的服务)跟踪
    每个服务发出的调用。如果
    您的服务没有得到更新
    至少你会有一个线索
    面包屑(或缺少面包屑)
    指向你的问题。

  • 这种解决方案实际上有很多潜在的问题:服务未在启动时运行、UAC 妨碍、无法安装和卸载同一用户的服务、确保安装服务的用户具有足够的权限、连接性丢失,在客户端计算机上安装 .NET Framework,在必要时处理安装后重新启动等。

    祝你好运。这是一个需要解决的有趣问题,但它不会没有挫败感——尤其是因为,正如你所说,没有很多可用的文档信息。

    关于windows-services - 自动更新 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1092986/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com