我们正在开发一个真正复杂的系统,包括几个WCF服务,ASP.NET MVC应用程序,管理工具(Windows窗体应用程序)......其中一些将在几个服务器上运行实例.我们正在为这样的系统寻找一个好的自动更新解决方案.最有可能的是,我们需要一个单独的自动更新应用程序(服务)来完成这项工作,或者需要一些集中管理应用程序来了解所有已安装实例的版本并远程执行更新.是否有为此目的而制作的优质产品/库,您知道或有过经验吗?
dr.*_*vil 35
就个人而言,我使用一种非常简单的方法进行任何类型的自动更新:
安装人员应该处理其余的事情.这样您将始终拥有最新版本和最新版本的安装程序.
Wya*_*Day 27
首先让我说我是公司的创始人,拥有完整的更新解决方案,其中包括:
wyUpdate处理所有Vista/Windows 7 UAC问题以及当您尝试更新复杂软件时不可避免地出现的所有文件权限问题.
我们还为开源项目提供wyBuild的免费许可,但如果你只是想建立自己的更新程序,你可以自由地蚕食我们的源代码.
话虽这么说,如果你想建立自己的更新程序,这里有一些提示:
一个好的起点是我上面提到的wyUpdate和AutomaticUpdater源代码.您可以蚕食它并将其用于您自己的目的.它包含的一些算法:
由于是自动要求,让我告诉你我们如何使用我们的AutomaticUpdater控件.
我们使用命名管道在独立更新程序(wyUpdate)和程序表单上的自动更新程序控件之间进行通信.wyUpdate向自动更新程序报告进度,自动更新程序可以告诉wyUpdate取消进度,开始下载,开始提取等.
这使更新程序与您的应用程序分开.
事实上,我们使用的确切命名管道C#代码包含在我写的一篇文章中:像Google Chrome这样的多进程C#应用程序.
这是我为满足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"任务.