【问题标题】:Online updating a C# program在线更新 C# 程序
【发布时间】:2011-03-26 12:16:30
【问题描述】:

您好,

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

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

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

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

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

希望你们能帮我解决这个问题,我希望我能充分解释我的情况!

【问题讨论】:

    标签: c# ftp auto-update


    【解决方案1】:

    NetSparkle 是具有更多部署选项的单击一次的不错替代方案。 http://netsparkle.codeplex.com/

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 看起来正是我想要的。当我让它正常工作时会更多地研究它并接受它作为答案:)
      • ClickOnce 对我来说失败了。可能是因为我缺乏完全弄清楚的意愿。编写了我自己的简单更新程序!
      • @TheunArbeider 你的程序是开源的吗?你愿意和我们分享吗? Clickonce 不太符合我的需求
      【解决方案3】:

      当我开发和发布此类应用程序时,我通常会这样做:

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

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

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

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

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

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

      【讨论】:

      • 由于我只使用 winforms,并且读到它存储在 web.config 中,我认为这不是我想要的?
      • Depends :-) 我将 ASP.NET only 用于更新检查机制。它自己的应用程序完全是 Windows 窗体(this one,例如 BTW)
      【解决方案4】:

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

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

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

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

      还有更多内容,最好从their video tutorial 开始了解如何设置更新。

      【讨论】:

      • 该网站对我来说似乎离线。
      • @Uwe:这很奇怪,我现在和当我发布答案时都是如此。 downforeveryoneorjustme.com/wyday.com 同意我的看法。
      • 是的,现在又恢复了。谢谢:-)
      【解决方案5】:

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

      因此,集成非常简单,该库几乎可以为您完成所有工作,包括同步操作。它也非常灵活,可以让您确定要执行哪些任务以及在什么条件下执行 - 您可以设置规则(或使用一些已经存在的规则)。最后一点同样重要的是支持任何更新源(网络、BitTorrent 等)和任何提要格式 - 任何未实现的内容您都可以自己编写。

      还支持冷更新(需要重新启动应用程序),并且会自动完成,除非为任务指定“热插拔”。

      这一切都归结为一个 DLL,大小小于 70kb。

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

      代码位于http://github.com/synhershko/NAppUpdate(根据 Apache 2.0 许可证获得许可)

      当我有更多时间时,我计划进一步扩展它,但老实说,你应该能够自己快速增强它,以应对它目前不支持的任何东西。

      【讨论】:

        猜你喜欢
        • 2014-01-17
        • 2012-10-28
        • 2014-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多