在线更新C#程序

问候,

如果已经提出这个问题,我很抱歉。 我尝试过使用搜索function但找不到适合我情况的答案。

我有一个真正简单的C#表单应用程序只有1个文件,一个exe。 我目前通过4shared分发了这个,人们可以高兴地下载它。

但是,每次我对程序进行更改时,人们都必须从4shared下载新版本。

现在这不是一个理想的情况,在创建升级时我是一个菜鸟,但我希望的情况是该程序查看我部署新版本的网站/ ftp服务器。

我在我的程序中寻找一种方法来查看该网站/ ftp服务器上的文件并决定是否有新版本可用。 如果网站/ ftp服务器上有新版本,我希望程序能够将自己更新到最新版本。

希望你们能帮我解决这个问题,希望我能够解释一下我的情况!

看一下ClickOnce。 它会为你做到这一点。

NetSparkle是使用更多部署选项进行一次点击的不错选择。 http://netsparkle.codeplex.com/

当我开发和发布这样的应用程序时,我通常按以下方式执行:

  1. 开发.NET Windows窗体应用程序
  2. 使用ASMX Web服务开发一个小型ASP.NET应用程序。
  3. 将ASMX Web服务发布到我的公共网站。
  4. 将Web服务的WSDL引用添加到我的Windows窗体应用程序。
  5. 创建一个设置(我更喜欢基于ClickOnce的Unicode NSIS )。

我在SOAP Web服务中实现的逻辑基本上是一个单独的函数:

[WebMethod] public string CheckUpdateAvailable( string currentVersion ) { ... } 

Windows窗体应用程序调用此方法(例如,在程序启动时从后台线程),将其当前程序集版本作为字符串传递给函数。

WSDL函数依次检查传递的版本与最新的安装版本(例如,存储在web.config或从服务器上的setup.exe中实时提取)。 如果存在较新版本,则返回带有要从中下载的URL的字符串; 否则返回NULL。

当WSDL函数的调用者获得非NULL字符串时,它可以向用户显示消息,询问他是否要下载并安装可执行文件,然后只需执行URL(通过Process.Start )。

WyUpdate是前往这里的方式。 我们已经使用它超过一年,效果很好(他们也有很好的支持)。

它实际上使用补丁来更新文件,这样当5MB可执行文件只有一个小的更改时,客户端只需要以千字节的顺序下载文件。

它们为Windows窗体或WPF提供了一个自动更新组件,它看起来不错,效果很好。

您可以在FTP服务器或普通网站上托管更新文件,而无需任何服务器端配置。

还有更多内容,最好的起点是他们的video教程 ,了解如何设置更新。

这是我编写的一个开源库,用于满足我们对WinForms和WPF应用程序的特定需求。 一般的想法是尽可能以最低的开销获得最大的灵活性。 您所要做的就是创建更新Feed并从您的应用中引用该库。

因此,集成非常简单,并且库可以为您完成所有操作,包括同步操作。 它也非常灵活,可以让您确定要执行的任务以及在什么条件下 – 您设置规则(或使用已经存在的规则)。 最后一点是对任何更新源(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许可证授权)

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