自动更新.NET的库?

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

有没有什么类似的.NET? 还是只是普通的Win32?

ClickOnce有其自身的安全限制(可以这么理解)。 如果您想要Windows应用程序的全部function和控制权,请使用.NET 应用程序更新程序组件。 它就像一个魅力,甚至已经被微软内部用于他们的基于.NET的游戏(虽然我不记得游戏名称)。

首先让我们说我们提供了一个完整的更新解决scheme,其中包括:

  • 用C#编写的开源更新程序wyUpdate ,
  • 免费的AutomaticUpdater控件 ,你可以添加到你的.NET应用程序的forms
  • wyBuild被用来构build补丁和pipe理你的版本

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

这就是说,如果你想build立自己的更新这里有一些提示:

build立你自己的更新

一个好的开始是我上面提到的wyUpdate C#源代码 。 您可以拆分它并将其用于您自己的目的。 它包含的一些algorithm:

  • 完整的Windows Vista / Windows 7 UAC支持
  • 有限的用户能够检查,然后更新,如果他们有凭据
  • 支持wonky企业inernet。 (如果你曾经与一家公司合作,这是一个真正的问题)。
  • 快速提取,修补和安装文件。
  • registry支持。
  • 回滚文件和registry错误或用户取消
  • 自我更新(没有文件留下)

我们也有这里的文件规格 。

自动更新

由于自动化是一个要求,让我告诉你如何用我们的AutomaticUpdater控制 。

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

这使更新程序与应用程序分离。

事实上,我们使用的确切的命名pipe道C#代码包含在我刚才写的一篇文章中: 多进程的C#应用​​程序,如Google Chrome

ClickOnce是我的首选方法。 它有一些疣,但它与Visual Studio来,工作相当好。

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

  • 在VB.NET中的应用程序自动更新

  • 应用程序自动更新重访

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

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

我刚刚经历了这个过程,并使用NetSparkle 。

它的工作方式与使用MSI安装程序覆盖以前版本的Windows窗体应用程序一样。 我很高兴我也find了 – 我即将推出自己的产品。 我是唯一一个真正简单的.NET应用程序吗? 我所看到的大部分内容似乎都是一种彻底的矫枉过正。

我还没有尝试NetSparkle(我将在以后),但它似乎是你在找什么。

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

我觉得WyBuild是很好的Sparkle替代品)

下面是我写的一个开源解决scheme,以解决我们对WinForms和WPF应用程序的特定需求。 总的想法是在尽可能最低的开销下具有最大的灵活性。

所以, 集成是非常容易的,图书馆几乎为你做了一切,包括同步操作。 它也非常灵活 ,可以决定要执行哪些任务以及在什么条件下 – 制定规则(或者使用已经存在的规则)。 最后但并非最不重要的是对任何更新源 (网页,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许可证获得许可)

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

有一个非常好的实用程序称为更新 。 它看起来像是用C或C ++编写的。 我已经能够configurationXML文件并将它们加载到生产服务器上,然后我可以使用更新程序运行并检查XML文件以获取其他版本,并下载使用Nullsoft脚本安装系统构build的新更新安装包(NSIS)。

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

在他们的网站上查看完整的function列表和一些演示video。

DotNetAutoUpdate

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

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

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

免责声明 – 我与AppLife更新。