c# - 使用 .NET/C# 应用程序自动更新的免费解决方案?

标签 c# .net auto-update

通过搜索我可以看到这个问题已经被多次询问过,但还不够充分,所以就来吧。我是一个没有预算的业余开发者。我一直在开发的一个程序需要定期修复错误,而我和用户已经厌倦了手动更新。

我,因为我目前的解决方案是通过 FTP 和网站上的下载链接更新文本文件,然后希望用户会看到“有更新消息”,最后让他们手动下载坦率地说,更新很糟糕。

用户,因为,嗯,“你打算实现自动更新吗?” “会有自动更新功能吗?”如果我碰巧搞砸了更新过程,干草叉就会开始到来。

过去我研究过:

  • WinSparkle - 无应用内更新,DLL 为 500 KB。我当前的解决方案是可执行文件中有几个 KB,并且没有应用内更新。
  • .NET Application Update Component - 很遗憾,我无法理解文档。
  • Eduardo Olivera's AutoUpdate - 除了处理未使用的文件外,这似乎不支持任何其他内容。
  • wyUpdate - wyBuild 不是免费的,虽然可以使用 wyUpdate 规范,但它太复杂且耗时,无法完成。
  • AppLife Update - 同上最后一句话。
  • ClickOnce - 实现启动时启动的变通办法是巨大的、可怕的,不值得为这样一个简单的功能付出代价。出版是一种痛苦;没有 FrontPage Extensions 的服务器需要手动 FTP 和替换所有文件

很令人失望的是,Windows 上的情况是这样的,而您已经为 Mac OS X 实现了非常好的和简单的实现,例如 Sparkle .

最佳答案

自己动手吧!应该会很好玩。创建一个仅包含更新逻辑的单独应用程序,即在线获取文件、下载它们、替换本地文件,并以可视化方式向用户显示。

因此您的主应用程序可以检查更新,如果存在更新,它会提示用户是否可以更新。如果用户愿意,它会运行更新程序,关闭自身(以便更新可以发生)并很快。

您需要的唯一东西在 C#、FTP 访问和 IO 中很容易获得。

编辑:我知道这不是一件容易的事,但这是学习的绝好机会:

  • 如何(正确地)下载文件,以一种可以扩展到 ftp、http 等的抽象方式。
  • 如何(正确地)对许多文件执行简单任务 - 复制或覆盖它们(这意味着错误处理)。
  • 练习(因为没有“正确”的方法)对软件进行分层和封装。
  • 如何处理操作系统/其他软件(防病毒/防火墙/等)不合作。

这些都是我们都需要了解的 - 如果编写一个更新程序需要几周的时间,这意味着您需要几周的时间来学习。如果你不需要学习,是时候磨练你的技能了!如果你不知道你是否需要,是时候找出来了! :)

注意:我知道我确实需要学习更好的文件和网络 I/O

关于c# - 使用 .NET/C# 应用程序自动更新的免费解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4524147/

相关文章:

c++ - 自动更新软件; FTP 是一个好的选择吗?

android - 创建可更新的 Android 应用程序

c# - UserManager 的异步方法给出 "Incorrect number of arguments for call to method Boolean Equals"

c# - 如何将 Linq 用作 IF - 条件

c# - 将 Kusto 客户端响应转换为对象列表会返回空对象

c# - 用户控件属性设计器属性

c# - 如何从字符串中获取数字

.net - 如何将 Unicode 字符串从托管函数传递到非托管函数

.net - WCF Message.ToString() 方法如何工作?

qt - 如何在 Qt 跨平台应用程序中启用自动更新?