自动更新.NET应用程序

Ale*_*tic 27 .net auto-update

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

dr.*_*vil 35

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

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

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

  • 有什么方法可以**做到这一点_无需安装程序_?** (2认同)

Wya*_*Day 27

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

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

我们还为开源项目提供wyBuild的免费许可,但如果你只是想建立自己的更新程序,你可以自由地蚕食我们的源代码.

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

建立自己的更新程序

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

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

我们这里也有文件规范.

自动更新

由于是自动要求,让我告诉你我们如何使用我们的AutomaticUpdater控件.

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

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

事实上,我们使用的确切命名管道C#代码包含在我写的一篇文章中:像Google Chrome这样的多进程C#应用程序.

  • 是的,它绕过了_some_代理问题.因此,例如,有些情况下客户配置错误的代理,但尝试访问文件而没有代理工作正常.因此,wyUpdate首先尝试使用任何代理,如果失败,则会通过故意避开代理服务器再次尝试.最糟糕的情况是,对于代理配置错误且无法直接访问Internet/Intranet的情况,wyUpdate会花费1或2秒的时间. (2认同)

syn*_*hko 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"任务.