自动更新.NET应用程序

时间:2009-05-04 10:56:13

标签: .net auto-update

我们正在开发一个真正复杂的系统,包括几个WCF服务,ASP.NET MVC应用程序,管理工具(Windows窗体应用程序).​​.....其中一些将在几个服务器上运行实例。我们正在为这样的系统寻找一个好的自动更新解决方案。最有可能的是,我们需要一个单独的自动更新应用程序(服务)来完成这项工作,或者需要一些集中管理应用程序来了解所有已安装实例的版本并远程执行更新。是否有为此目的而制作的任何您知道或有过相关经验的好产品/图书馆?

6 个答案:

答案 0 :(得分:34)

我个人使用一种非常简单的方法进行任何类型的自动更新:

  • 有安装程序
  • 检查新版本(简单的WebClient并将数字与当前的AssemblyVersion进行比较)
  • 如果版本较高,请下载最新的安装程序(出于安全原因应该通过SSL)
  • 运行下载的安装程序并关闭应用程序。 (在此阶段,如果您的安装程序要求您成为管理员,则需要具有管理员权限)

安装人员应该处理剩下的事情。这样您将始终拥有最新版本和最新版本的安装程序。

答案 1 :(得分:27)

首先我要说的是,我是公司的创始人,拥有完整的更新解决方案,其中包括:

wyUpdate处理所有Vista / Windows 7 UAC问题以及当您尝试更新复杂软件时不可避免地出现的所有文件权限问题。

我们还提供free licenses to wyBuild for open source projects,但如果您只想构建自己的更新程序,则可以自由地蚕食我们的源代码。

话虽这么说,如果你想建立自己的更新程序,这里有一些提示:

构建您自己的更新程序

一个好的起点是我上面提到的wyUpdateAutomaticUpdater源代码。您可以蚕食它并将其用于您自己的目的。它包含的一些算法:

  • 完整的Windows Vista / Windows 7 UAC支持
  • 有限的用户可以检查,如果他们有凭据则更新
  • 支持不稳定的企业inernet。 (如果你曾与公司合作过这是一个真正的问题)。
  • 快速提取,修补和安装文件。
  • 注册表支持。
  • 回滚档案&注册表错误或用户取消
  • 自我更新(没有留下文件)

我们也有file specifications here

自动更新

由于要求自动是一项要求,让我告诉您我们如何使用AutomaticUpdater control

我们使用命名管道在独立更新程序(wyUpdate)和程序表单上的自动更新程序控件之间进行通信。 wyUpdate向自动更新程序报告进度,自动更新程序可以告诉wyUpdate取消进度,开始下载,开始提取等。

这使更新程序与您的应用程序分开。

事实上,我们使用的确切命名管道C#代码包含在我写的一篇文章中: Multi-process C# app like Google Chrome

答案 2 :(得分:6)

这是我为满足WinForms和WPF应用程序的特定需求而编写的开源解决方案。一般的想法是尽可能以最低的开销获得最大的灵活性。

所以,集成非常容易,而且库可以为您完成一切,包括同步操作。它也高度灵活,让您确定要执行的任务以及在什么条件下 - 您制定规则(或使用已经存在的规则)。最后一点是对任何更新源(web,BitTorrent等)和任何 Feed格式的支持 - 任何未实现的内容,您都可以自己编写。

还支持冷更新(需要重启应用程序),并自动完成,除非为任务指定了“热交换”。

这可以归结为一个DLL,大小不到70kb。

http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/

的更多详情

代码位于http://github.com/synhershko/NAppUpdate(根据Apache 2.0许可证授权)

我计划在我有更多时间的时候扩展它,但老实说,你应该能够自己快速增强它,无论它目前不支持什么。

自动更新WCF服务和ASP.NET网站应该可以使用它,使用文件的“热插拔”和必要时的“iisreset”任务。

答案 3 :(得分:3)

ClickOnce用于管理工具。

答案 4 :(得分:2)

我们调查了一些选项,并决定将AppLife Update库用于我们的企业项目。

AppLife Update可以快速轻松地为您的.NET应用程序添加自动更新功能,但由于它具有全面的API,因此也非常灵活。

查看其网站上的完整功能列表和一些演示视频。

答案 5 :(得分:1)

对于可能使用Xcopy安装的简单WPF应用程序,您可以使用this AppUpdater module。它是一个源代码模块,只需几行代码即可为简单的WPF应用程序添加更新功能。

它是免费的。