【问题标题】:Is there a standard way for .NET Winforms apps to auto-upgrade?.NET Winforms 应用程序有自动升级的标准方法吗?
【发布时间】:2023-03-13 00:25:01
【问题描述】:

如果你的 Winforms 应用安装在大量机器上,是否有标准的方式来实现自动升级功能?

例如每次启动时,它都会检查一个网站或网络服务,如果有可用的新版本,它会下载并安装它吗?

我可以弄清楚如何推出我自己的版本,但我想知道是否已经有任何框架可以帮助解决这个问题。

【问题讨论】:

  • 我们已经有类似的问题,但这已经很好解释了 ;-)

标签: .net winforms deployment upgrade


【解决方案1】:

您可能想尝试 ClickOnce,我认为这是可能的。

【讨论】:

  • 是的,您可以使用 ClickOnce 完成此操作
  • 使用 ClickOnce 绝对有可能——我们还没有大规模推出它,但在相当有限的范围内它工作得很好。
  • +1 ClickOnce 非常适合自动更新。我们有一个应用程序安装在 100 多台 PC 上,我们可以使用 ClickOnce 轻松升级它。尽管 ClickOnce 非常适合升级,但它确实有其他限制(例如,不可自定义的安装程序,不会为所有用户安装,可执行文件被放在用户的配置文件目录深处 - 而不是在 Program Files 中,复杂的证书签名系统可能会中断升级,如果未正确完成等)。事先确保您的应用程序非常适合 ClickOnce 模型。
  • 感谢 NYSystemsAnalyst 提供的额外详细信息。那可能是一个单独的答案......
  • 我对 ClickOnce 的体验很糟糕,但我们可能用错了。
【解决方案2】:

【讨论】:

  • 听起来很有趣 - 是被 ClickOnce 取代还是它的目标不同?
  • 我不是 100%,但我认为它更老了。至少,它在左侧的树中被列为“已退休”,针对 .Net 1.1,并且“帮助您实现自动下载更新的拉取模型”,我怀疑您确实需要“推”模型。跨度>
【解决方案3】:

+1 对 ClickOnce 的回答,但我也想对此做一些 cmet:

通常,当有人第一次开始查看 ClickOnce 时,他们会发现它为他们的应用程序可以执行的操作添加了许多新限制。他们几乎总是至少违反其中一项并回来声明 ClickOnce 对他们不起作用,因为 x、y 和 z 将不再起作用。

预计会再次出现这种情况,我想花点时间解释这些限制的基本原理,以及为什么您可能想仔细研究应用程序的运行方式,而不是编写自己的更新系统或去有一个替代方案。

这里的关键是查看 ClickOnce 应用程序的主要用例。该用例主要是企业工作站,您希望在其中部署真正的 winforms 业务线应用程序,该应用程序应始终保持最新状态,但在任何情况下,用户都不应拥有对自己机器的管理员访问权限。由于您说的是“安装在大量机器上的应用程序”,我认为您很可能属于该类别。

看看这个用例,最后一点尤其是杀手。最后,ClickOnce 应用程序的大多数小限制都需要以下条件之一:

  1. 管理员在运行时访问,即使是短暂的
  2. 更新时的管理员访问权限

有时,您需要该访问权限或为什么需要该访问权限并不明显,但最终通常归结为这一点。想要向系统注册 dll 或更新 Program Files 文件夹中的文件?默认情况下,这需要管理员访问权限。需要安装或更新 Windows 服务?管理员访问。想要为第三方组件运行 msi 安装程序?您需要管理员权限才能运行 msi。想监听 tcp 端口?你明白了。

最终,您的目标是让即使只有标准权限的用户仍然能够自动更新您的应用……甚至是透明的。否则,您需要额外的 IT 人员参与每个部署。即使您的程序是面向广大公众的,这也是一个好主意;它将帮助您避免某种类型的支持问题。使用替代部署系统不会改变这一点。这些系统通常只针对大多数用户以管理员身份运行的消费类机器,因此对这些问题的关注度较低。

【讨论】:

  • 嗨,Joel,ClickOnce 是否用于实现升级的推送模型。我使用 ClickOnce 在整个组织中部署了我们的应用程序,客户必须运行该应用程序才能开始获取更新。是否有任何 API 可用于从服务器发送更新而无需客户端交互(假设所有客户端一直连接到网络)
  • @Theraneman :ClickOnce 可以确保应用程序每次运行时都是最新的。如果用户没有运行应用程序几天过期,这有什么关系?
  • ClickOnce 在保护 Web 服务器端的应用程序 .deploy 文件方面存在问题。这可以通过企业 LAN 中的 Windows 身份验证来克服,但在公共互联网上,它只能通过客户端代理来克服。请参阅msdn.microsoft.com/en-us/library/aa480721.aspx#adminc_topic10“管理 ClickOnce 部署”。后来也有关于通过代理进行身份验证的文章。 bronumski.blogspot.com/2009/06/…
【解决方案4】:

AppLife Update 物有所值。

【讨论】:

    【解决方案5】:

    我最终在

    使用了开源“Conversive Sharp AutoUpdater”

    http://csautoupdater.sourceforge.net/

    Sharp AutoUpdater 是一个 C# 组件,可以自动更新您的 .NET 应用程序。 AutoUpdater 组件使用 XML 配置文件检测是否有新版本的软件,下载、解压缩并安装新文件。

    它相当简单——它会下载一个 zip 文件并将其解压缩到已安装的应用程序上——但它运行良好并且比我自己编写更容易。如果用户没有对其程序文件夹的管理员访问权限,我认为它不能很好地处理事情。

    【讨论】:

      猜你喜欢
      • 2012-05-04
      • 2021-12-04
      • 2018-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多