这个问题已经有一个答案在这里:

我们正处在一个过程的发展中一个非常复杂的系统几个组成WCF服务,ASP.NET 软应用程序,管理工具(Windows形式的应用程序)...其中一些,将有运行的实例在几个服务器。我们正在寻找一个良好的自动更新方案为这样一个系统。最有可能的,我们需要一个独立的自动更新的应用程序(服务),将做的工作,或者某些集中管理的应用程序,将知道关于版本的所有安装的实例和做更新的远程。是否有任何良好的产品/库,为此目的,是你知道的或有经验?

有帮助吗?

解决方案

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

  • 有一个安装
  • 检查新的版本(很简单Web客户端和比较数字与当前AssemblyVersion()
  • 如果该版本是较高的下载最新的安装程序(应在SSL于安全原因)
  • 运行下载程序和附近的应用程序。(在这个阶段需要有管理员权限如果你需要安装你是一个管理)

安装应该照顾的其余部分。这样你就会总是有最新版本,一个安装有最新版本。

其他提示

首先,请允许我说我是公司的创始人,拥有一个完整的更新方案,其中包括:

wyUpdate处理所有的Vista/Windows7UAC问题和所有文件的权限问题,不可避免地会流行起来的时候你是在尝试更新的复杂的软件。

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

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

建立你自己的更新

一个良好的开始是的 wyUpdateAutomaticUpdater 源代码,我在上面提到的。你可以蚕食它,用它为自己的目的。一些算法,它包含:

  • 全Windows Vista/Windows7UAC支持
  • 能力有限的用户检查和随后的更新,如果他们有凭证
  • 支持为靠不住的企业inernet.(如果你曾经使用过一个公司,这是一个真正的问题)。
  • 快速提取、修补和安装的文件。
  • 登记册的支持。
  • 滚回的文件和注册表上的错误或取消的用户
  • 自我更新(无文件留下的)

我们还有 文件规格在这里.

自动更新

由于被自动化是一个要求让我告诉你我们如何这样做与我们的 AutomaticUpdater控制.

我们使用的命名管道之间进行通信的独立的更新(wyUpdate)和自动更新程序控制坐在你的节目的形式。wyUpdate报告的进展以自动更新而自动更新可以告诉wyUpdate取消的进展,开始下载,开始提取,等等。

这个不断更新独立自己的应用程序。

实际上,确切的命名管道C#码我们使用的是包含在一篇我写了一个小时回: 多进程C#应用程序,如谷歌铬.

这里是一个开放源码解决方案,我写信给地址的特定需要我们对它和WPF应用程序。总的想法是具有最大的灵活性,以最低的开销可能的。

所以, 集成 是超级-方便,以及图书馆不会很多的你的一切,包括同步行动。它也是 高度灵活, 和可以确定什么任务的执行和在什么条件下-你做的规则(或使用一些是已经有).最后的通过并非最不重要的是支持 任何更新的来源 (网络,BitTorrent,等等)和任何 饲料的格式 -什么是没有实现你可以写你自己。

冷更新(需要一个应用程序重新启动)也是支持的,并自动完成的,除非"热交换"是指定的任务。

这boild下一个问题,少于70kb在大小。

更多详细信息 http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/

代码是 http://github.com/synhershko/NAppUpdate (Apache2.0许可证)

我计划》的延伸,它更多的时候,我会得到一些更多的时间,但老实说,你应该能够迅速地加强它自己为什么它目前不支持。

自动更新的服务和WCF ASP.NET 网站应该是可以做到的,以及它使用"热交换"的文件及"iisreset"任务的必要。

ClickOnce对你的管理工具。

我们调查的一些选择和决定使用 AppLife更新 图书馆为我们的企业项目。

AppLife更新可以迅速和容易添加新功能。净的应用程序,但也是灵活的,因为它是全面的。

看到完整的清单的功能和一些视频演示他们的网站上。

为简单的WPF应用,那些可能使用Xcopy安装,可以使用 这AppUpdater模块.这是一个源模块,只有几行的代码,添加新功能以一个简单的WPF应用程序。

它是免费的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top