在线更新C#程序

时间:2011-03-26 12:16:31

标签: c# ftp auto-update

问候,

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

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

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

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

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

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

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

当我开发和发布此类应用程序时,我通常按以下方式执行此操作:

  1. 开发.NET Windows窗体应用程序
  2. 使用ASMX Web服务开发一个小型ASP.NET应用程序。
  3. 将ASMX Web服务发布到我的公共网站。
  4. 将Web服务的WSDL引用添加到我的Windows窗体应用程序。
  5. 创建设置(我比ClickOnce更喜欢Unicode NSIS。)
  6. 我在SOAP Web服务中实现的逻辑基本上只是一个函数:

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

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

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

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

答案 3 :(得分:0)

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

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

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

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

还有更多内容,最好的方法是their video tutorial如何设置更新。

答案 4 :(得分:0)

这是我写的一个开源库,用于满足我们对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许可证授权)

我计划在我获得更多时间时更多地扩展它,但老实说,你应该能够自己快速增强它,无论它目前还不支持。