.NET Winforms应用程序是否有标准的自动升级方式?

时间:2009-11-16 17:30:16

标签: .net winforms deployment upgrade

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

e.g。每次启动时,它都会检查网站或Web服务,如果有新版本可用,它会下载并安装它吗?

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

5 个答案:

答案 0 :(得分:9)

在ClickOnce答案上获得+1,但我也想对此发表一些评论:

通常情况下,当有人第一次开始查看ClickOnce时,他们会发现它会为其应用允许执行的操作添加一些新的限制。他们几乎总是违反至少其中一个并返回声明ClickOnce对他们不起作用,因为x,y和z将不再起作用。

预计会再次出现这种情况,我想花一点时间来解释这些限制的理由,以及为什么你可能想要仔细研究你的应用程序的运行方式,而不是编写自己的更新系统或者去另有选择。

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

看看这个用例,最后一点特别是杀手。最后,对ClickOnce应用程序的大多数限制都是需要以下内容之一:

  1. 管理员在运行时访问,即使是短暂的
  2. 更新时的管理员访问
  3. 有时,您需要访问权限或者您需要访问权限的原因并不明显,但最终通常会涉及到这一点。想要在系统中注册dll或更新Program Files文件夹中的文件?这默认需要管理员访问权限。需要安装或更新Windows服务?管理员权限。想要为第三方组件运行msi安装程序吗?您需要管理员权限才能运行msi。想听一个tcp端口?你明白了。

    最终,您的目标是使其即使只有标准权限的用户仍然可以自动更新您的应用......甚至是透明的。否则,您需要额外的IT人员涉及每个部署。即使您的计划是针对广大公众,这也是一个好主意;它将帮助您避免某类支持问题。使用备用部署系统不会改变这一点。这些系统通常只针对消费者机器,大多数用户无论如何都以管理员身份运行,因此不太关注这些问题。

答案 1 :(得分:7)

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

答案 2 :(得分:2)

答案 3 :(得分:1)

AppLife Update值得花费每一分钱。

答案 4 :(得分:1)

我最终在

使用了开源'Conversive Sharp AutoUpdater'

http://csautoupdater.sourceforge.net/

  

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

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