如何在Windows上最好地实现软件更新?

时间:2008-08-31 18:57:29

标签: windows installation

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

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

10 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:7)

没有像Sparkle那样平滑的解决方案(我知道)。

如果您需要简单的部署和更新应用程序,ClickOnce是一种选择。不幸的是,它不灵活(例如,没有每个机器安装而不是每个用户),不透明(你对其部署实际工作方式的影响和清晰度和控制很少)和非标准(它存储安装的应用程序的路径)与Windows上的任何其他内容不同。

更接近你所要求的是ClickThroughWiX的副项目,但我不确定它是否还在开发中(如果是的话,他们应该更加清楚......) - 它会在任何情况下使用MSI,而不是NSIS。

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

答案 2 :(得分:5)

Google Chrome自动更新基于奥马哈:

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

他们overview对于为什么需要它有一个很好的部分:

  

浏览器通常会向用户提示一系列技术性,混乱和可怕的对话框,这些对话都试图说服用户不要安装。然后向用户提示一个向导,这些向导充满了他们不需要的选项,或者知道如何决定。在应用程序安装过程中,这些因素相结合,形成了糟糕的用户体验和大幅下降

答案 3 :(得分:4)

使用第三方解决方案是一个好主意,导致自动更新可能会很麻烦,尤其是对于Windows Vista / 7(UAC)。对于它的价值,我公司使用的产品是AutoUpdate+,它似乎工作得相当好。

答案 4 :(得分:3)

对于.NET,一段时间后,Microsoft Patterns + Practices发布了Application Updater Block。这(在我看来)过于夸张和过度设计,但做得很好。

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

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

虽然Patterns + Practices代码是特定于.NET的,但是没有任何东西无法复制到非.NET应用程序,特别是如果您能够在后台静默运行安装过程。

答案 5 :(得分:3)

我问了一个类似的问题。点击链接查看回复。 Self Updating

答案 6 :(得分:2)

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

答案 7 :(得分:2)

wyUpdate看起来非常好。观看视频: http://wyday.com/wybuild/help/automatic-updates/

答案 8 :(得分:1)

对于.NET应用程序,您可能需要查看NetSparkle,这是.NET程序的Sparkle变体。这是一个非常新的(从2011年开始)并积极发展。

答案 9 :(得分:0)

刚刚回答我自己关于同一主题的问题的答案 - 我在updating solution中提到另一个question。它使用存根加载程序和xml文件指向最新的可执行文件。