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

cod*_*ike 9 .net deployment upgrade winforms

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

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

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

Joe*_*orn 9

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

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

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

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

看看这个用例,最后一点特别是杀手.最后,对ClickOnce应用程序的大多数小限制都需要以下其中一项:

  1. 管理员在运行时访问,甚至是简短的
  2. 更新时的管理员访问权限

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

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

  • @Theraneman:ClickOnce可确保应用程序每次运行时都是最新的.如果用户没有运行该应用程序几天过时,这有什么关系? (2认同)

eWo*_*olf 7

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