我们正在开发一个非常复杂的系统,由多个WCF服务、ASP.NET MVC应用程序、管理工具(Windows Forms应用程序)组成...其中一些将在多台服务器上运行。我们正在寻找一个适用于这样一个系统的好的自动更新解决方案。很可能,我们需要一个单独的自动更新应用程序(服务)来完成这项工作,或者一些集中式的管理应用程序,它将了解所有已安装实例的版本并远程进行更新。您是否知道或有经验的任何为此目的而制作的好的产品/库?
我们正在开发一个非常复杂的系统,由多个WCF服务、ASP.NET MVC应用程序、管理工具(Windows Forms应用程序)组成...其中一些将在多台服务器上运行。我们正在寻找一个适用于这样一个系统的好的自动更新解决方案。很可能,我们需要一个单独的自动更新应用程序(服务)来完成这项工作,或者一些集中式的管理应用程序,它将了解所有已安装实例的版本并远程进行更新。您是否知道或有经验的任何为此目的而制作的好的产品/库?
对于任何类型的自动更新,我个人使用非常简单的方法:
安装程序会处理剩下的事情。这样,您始终拥有最新版本和最新版本的安装程序。
首先,我是一家公司的创始人,我们提供完整的更新解决方案,包括:
wyUpdate处理所有Vista/Windows 7 UAC问题,以及在尝试更新复杂软件时不可避免出现的所有文件权限问题。
我们还为开源项目提供免费的wyBuild许可证,但如果您只想构建自己的更新器,可以自由使用我们的源代码。
话虽如此,如果您想构建自己的更新器,以下是一些提示:
一个好的起点是上面提到的wyUpdate和AutomaticUpdater源代码。您可以将其拆分并用于自己的目的。它包含的一些算法:
我们还在这里文件规格。
由于自动化是一个要求,请允许我告诉您我们如何使用我们的AutomaticUpdater控件来实现它。
我们使用命名管道在独立的updater(wyUpdate)和位于程序窗体上的自动更新控件之间通信。wyUpdate向自动更新器报告进度,自动更新器可以告诉wyUpdate取消进度、开始下载、开始提取等等。
这使得更新程序与您的应用程序分离。
实际上,我们使用的确切命名管道C#代码包含在我写的一篇文章中:Multi-process C# app like Google Chrome。
代码在http://github.com/synhershko/NAppUpdate (根据Apache 2.0许可证授权)
当我有更多时间时,我计划进一步扩展它,但是老实说,您应该能够快速增强它,使其支持当前不支持的任何内容。
使用文件的“热交换”和“iisreset”任务,也应该可以使用它自动更新WCF服务和ASP.NET网站。