39

在 Mac 上有一个非常棒的库,叫做Sparkle,程序可以使用它来实现自动更新的检查/安装功能。

.NET 有类似的东西吗?还是只是普通的Win32?

4

12 回答 12

28

ClickOnce有其自身的安全限制(可以理解)。如果您想要 Windows 应用程序的全部功能和控制,请使用.NET 应用程序更新程序组件。它就像一个魅力,甚至被微软内部用于他们基于 .NET 的游戏(虽然我不记得游戏名称)。

于 2009-03-27T22:36:12.127 回答
15

首先让我说我们提供了一个完整的更新解决方案,其中包括:

wyUpdate 可处理所有 Vista/Windows 7 UAC 问题以及在您尝试更新复杂软件时不可避免地出现的所有文件权限问题。

话虽如此,如果您想构建自己的更新程序,这里有一些提示:

构建自己的更新程序

一个好的起点是我上面提到的wyUpdate C# 源代码。您可以将其蚕食并将其用于您自己的目的。它包含的一些算法:

  • 完整的 Windows Vista / Windows 7 UAC 支持
  • 有限用户能够检查然后更新他们是否有凭据
  • 支持不稳定的企业内部网。(如果您曾经与一家公司合作过,这是一个真正的问题)。
  • 快速提取、修补和安装文件。
  • 注册表支持。
  • 在用户出错或取消时回滚文件和注册表
  • 自我更新(不留下任何文件)

我们这里也有文件规范

自动更新

由于自动化是一项要求,让我告诉您我们如何使用AutomaticUpdater 控件来做到这一点。

我们使用命名管道在独立更新程序 (wyUpdate) 和位于程序窗体上的自动更新程序控件之间进行通信。wyUpdate 向 Automatic Updater 报告进度,Automatic Updater 可以告诉 wyUpdate 取消进度、开始下载、开始解压等。

这使更新程序与您的应用程序分开。

事实上,我们使用的确切命名管道 C# 代码包含在我不久前写的一篇文章中:Multi-process C# app like Google Chrome

于 2010-02-23T21:03:46.333 回答
10

ClickOnce是我的首选方法。它有一些缺点,但它带有 Visual Studio 并且运行良好。

于 2009-03-27T22:17:15.557 回答
6

ClickOnce 被大量使用,但您可以像我为大型应用程序所做的那样尝试这些:

我稍微修改了一下逻辑并构建了我认为更好的 XML 更新文件。现在,当我需要更新客户端时,我只需发布新的 EXE 文件或 DLL 文件并在公共 XML 文件中设置正确的版本。我的应用程序会检测到较旧的版本并自行更新。如果您在Windows Vista上执行此操作,则需要提示管理员权限,以便可以写入 Program Files(如果您安装在那里)。

您还可以使用C#/VB.NET Converter轻松地将其转换为 C# 。

于 2009-03-27T22:34:56.577 回答
6

我刚刚完成了这个过程并使用了 NetSparkle

它像广告宣传的那样使用覆盖先前版本的MSI安装程序的Windows 窗体应用程序。我很高兴我也找到了它——我正要自己动手。我是唯一一个制作真正简单的 .NET 应用程序的人吗?大多数情况下,我所看到的一切似乎都完全是矫枉过正。

于 2011-01-05T10:01:33.607 回答
5

我还没有尝试过 NetSparkle(我稍后会尝试),但它似乎正是您想要的。

NetSparkle是一个易于使用的软件更新框架,适用于 Windows、Mac 或 Linux 上的 .NET 开发人员。它的灵感来自Cocoa开发人员的Sparkle项目和WinSparkle项目(一个Win32端口)。

于 2011-02-22T10:18:50.137 回答
3

我认为WyBuild是很好的 Sparkle 替代品)

于 2009-08-07T19:46:36.833 回答
2

有一个非常好的实用程序,叫做Updater。看起来它是用CC++编写的。我已经能够配置 XML 文件并将它们加载到生产服务器,然后我可以让更新程序运行并检查 XML 文件的不同版本并下载我使用Nullsoft Scriptable Install System构建的新更新安装包(国家情报局)。

于 2009-03-27T23:27:08.057 回答
2

我们调查了一些选项并决定使用AppLife Update。AppLife Update 可以快速轻松地为您的 .NET 应用程序添加自动更新功能,但由于其全面的 API,它也很灵活。

在他们的网站上查看完整的功能列表和一些演示视频。

于 2009-06-17T12:37:12.560 回答
2

点网自动更新

我已经实现了一个名为DotNetAutoUpdate的库(原名是吗?)。它的目标是:

  • 使用简单
  • 设置简单
  • 安全的
于 2009-09-14T07:03:22.833 回答
2

这是我为解决我们对 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 许可下获得许可)

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

于 2010-08-24T22:35:29.827 回答
-1

要更新 .Net 客户端应用程序,请查看AppLife 更新。它非常灵活、可扩展和可定制。

免责声明 - 我与 AppLife 更新相关联。

于 2009-04-27T15:38:18.377 回答