23

我想为 Windows 应用程序实现“自动更新”系统。现在我正在半手动创建一个“appcast”,我的程序会检查它,并通知用户有新版本可用。(我正在为我的安装程序使用 NSIS)。

是否有我可以使用的软件来处理更新的“自动”部分,可能类似于 Mac 上的Sparkle?我应该注意的任何问题/陷阱?

4

9 回答 9

12

现在有 Sparkle 的 Windows 端口,请参阅http://winsparkle.org

于 2010-02-20T16:54:16.670 回答
7

没有像 Sparkle 一样流畅的解决方案(据我所知)。

如果您需要一种简单的方法来部署和更新应用程序,ClickOnce是一个选择。不幸的是,它不灵活(例如,没有按机器安装而不是按用户安装)、不透明(您对其部署的实际工作方式几乎没有影响、清晰和控制)和非标准(将安装的应用程序存储在的路径)不同于 Windows 上的其他任何东西)。

更接近您所要求的是ClickThrough ,它是WiX的一个附带项目,但我不确定它是否仍在开发中(如果是,他们应该对此更清楚......) - 无论如何它都会使用 MSI ,而不是 NSIS。

你可能最好自己滚动一些东西。我很想看到一个类似 Sparkle 的 Windows 项目,但到目前为止似乎没有人尝试过。

于 2008-08-31T19:10:46.227 回答
5

Google Chrome 自动更新基于 Omaha:

http://code.google.com/p/omaha/

他们的概述中有一个很好的部分说明了为什么需要它:

浏览器通常会通过一系列技术性、令人困惑和可怕的对话框来提示用户,所有这些对话框都试图说服用户不要安装。然后用户被提示一个向导,其中充满了他们不需要或不知道如何决定的选项。这些因素加在一起形成了应用安装过程中糟糕的用户体验和大量的掉线

于 2010-09-14T14:10:17.567 回答
4

使用第三方解决方案是个好主意,因为自动更新可能会很痛苦,尤其是在 Windows Vista/7 (UAC) 中。值得一提的是,我公司使用的产品是AutoUpdate+,它似乎运行良好。

于 2010-07-20T20:39:55.220 回答
3

对于 .NET,不久前 Microsoft Patterns + Practices 发布了Application Updater Block。这(在我看来)相当夸张和过度设计,但做得很好。

本质上,它使用“存根加载程序”来检查清单和 Web 服务,以查看是否可以使用比已安装程序更高的版本,然后使用 BITS 后台下载器技术下载新版本(如果可用)服务器。

一旦下载并安装了新版本(使用 .NET,这就像 xcopy 到相关文件夹一样简单),应用程序将更新清单。下次加载程序时,将启动新版本。

虽然 Patterns + Practices 代码是特定于 .NET 的,但对于非 .NET 应用程序来说,没有什么是无法复制的,尤其是当您能够在后台静默运行安装过程时。

于 2008-08-31T19:04:09.080 回答
2

如果您的应用程序是用 .Net 编写的,您可以尝试ClickOnce。但是,使用这种方法在安装过程中很难执行管理或自定义操作。

于 2008-08-31T19:02:19.257 回答
2

wyUpdate 看起来很不错。在此处查看视频: http ://wyday.com/wybuild/help/automatic-updates/

于 2011-08-12T07:28:13.673 回答
1

对于 .NET 应用程序,您可能想看看NetSparkle,它是 .NET 程序的 Sparkle 变体。它是相当新的(从 2011 年开始)并且正在积极发展。

于 2011-04-05T07:44:31.970 回答
0

刚刚从对我自己关于同一主题的问题的回答来到这里 - 我在我的问题中提到了另一个更新解决方案。它使用一个存根加载器和一个 xml 文件来指向最新的可执行文件。

于 2008-09-08T14:40:37.053 回答