.NET自动更新库?

时间:2009-03-27 22:15:40

标签: .net auto-update

在Mac上有一个名为Sparkle的非常好的库,程序可以使用它来实现自动更新的检查/安装功能。

.NET有什么类似的东西吗?或者只是常规的Win32?

12 个答案:

答案 0 :(得分:28)

ClickOnce有其自身的安全限制(可以理解)。如果您希望获得Windows应用程序的全部功能和控制权,请使用.NET application updater组件。它就像一个魅力,甚至已被微软内部用于基于.NET的游戏(我不记得游戏名称)。

答案 1 :(得分:15)

首先我要说的是,我们提供了一个完整的更新解决方案,其中包括:

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

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

构建您自己的更新程序

一个好的起点是我上面提到的wyUpdate C# source code。您可以蚕食它并将其用于您自己的目的。它包含的一些算法:

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

我们也有file specifications here

自动更新

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

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

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

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

答案 2 :(得分:10)

ClickOnce是我首选的方法。它有一些瑕疵,但它配备了Visual Studio并且工作得相当好。

答案 3 :(得分:6)

ClickOnce被大量使用,但你可以做我为大型应用程序所做的事情并尝试这些:

我修改了一下逻辑并构建了我认为更好的XML更新文件。现在,当我需要更新客户端时,我只发布新的EXE文件或DLL文件,并在公共XML文件中设置正确的版本。我的应用程序检测到较新的版本,如果它更旧并自行更新。如果您在Windows Vista上执行此操作,则需要提示管理员权限,以便可以写入Program Files(如果您安装在那里)。

您也可以使用C#/VB.NET Converter轻松将其转换为C#。

答案 4 :(得分:6)

我刚刚完成了这个过程并使用了NetSparkle

它适用于Windows Forms应用程序的广告,其中MSI安装程序覆盖了以前的版本。我很高兴我也发现了 - 我正要自己动手。我是唯一一个制作非常简单的.NET应用程序的人吗?大多数我看过的东西看起来都像一个完全矫枉过正。

答案 5 :(得分:5)

我还没有尝试过NetSparkle(我会稍后),但似乎这就是你要找的东西。

NetSparkle是一个易于使用的软件更新框架,适用于Windows,Mac或Linux上的.NET开发人员。它的灵感来自Sparkle开发人员的Cocoa项目和WinSparkle项目(Win32端口)。

答案 6 :(得分:3)

我认为WyBuild是很好的Sparkle替代方案)

答案 7 :(得分:2)

有一个名为Updater的非常好的实用工具。看起来它是用CC++编写的。我已经能够配置XML文件并将它们加载到生产服务器,然后我可以让Updater运行并检查XML文件以获取不同的版本并下载我使用{{3}构建的新的更新安装包(NSIS)。

答案 8 :(得分:2)

我们调查了一些选项并决定使用AppLife Update。 AppLife Update可以快速轻松地为您的.NET应用程序添加自动更新功能,但由于其全面的API,它也很灵活。

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

答案 9 :(得分:2)

  

DotNetAutoUpdate

我已经实现了一个名为DotNetAutoUpdate的库(原名eh?)。它的目标是:

  • 简单易用
  • 设置简单
  • 安全

答案 10 :(得分:2)

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

因此,集成非常简单,而且库可以为您完成一切,包括同步操作。它也高度灵活,让您确定要执行的任务以及在什么条件下 - 您制定规则(或使用已经存在的规则)。最后但并非最不重要的是支持任何更新源(web,BitTorrent等)和任何提要格式 - 无论您实施的是什么,您都可以自己编写。

还支持冷更新(需要重启应用程序),并且除非为任务指定“热插拔”,否则将自动完成。

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

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

的更多详情

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

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

答案 11 :(得分:-1)

要更新.Net客户端应用程序,请查看AppLife Update。它非常灵活,可扩展和可定制。

免责声明 - 我与AppLife更新有关。