我想为Windows应用程序实现一个“自动更新”系统。现在我正在半手动创建一个 “应用广播” 我的程序会检查它,并通知用户有新版本可用。(我在用着 国家信息安全局 对于我的安装人员)。

是否有我可以使用的软件来处理更新的“自动”部分,也许类似于 火花 在苹果电脑上?我应该注意哪些问题/陷阱?

有帮助吗?

解决方案

没有任何解决方案能像 Sparkle(据我所知)一样顺利。

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

更接近你所要求的 通过点击, ,一个附带项目 维克斯, ,但我不确定它是否仍在开发中(如果是,他们应该更清楚这一点……)——并且无论如何它都会使用 MSI,而不是 NSIS。

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

其他提示

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

Google Chrome 自动更新基于 Omaha:

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

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

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

使用第三方解决方案是个好主意,因为自动更新可能很麻烦,尤其是在 Windows Vista/7 (UAC) 中。就其价值而言,我公司使用的产品是 自动更新+ 而且效果似乎相当不错。

对于 .NET,不久前 Microsoft Patterns + Practices 发布了 应用程序更新程序块. 。(在我看来)这有点夸张和过度设计,但工作做得相当好。

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

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

虽然模式 + 实践代码是 .NET 特定的,但对于非 .NET 应用程序来说,没有什么是不能复制的,特别是如果您能够在后台静默运行安装过程的话。

我问过类似的问题。点击链接即可查看回复。自我更新

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

wyUpdate 看起来真的很不错。请参阅此处的视频:http://wyday.com/wybuild/help/automatic-updates/

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top