【问题标题】:Can a .NET application update itself in the background like Google Chrome?.NET 应用程序能否像 Google Chrome 一样在后台自行更新?
【发布时间】:2011-01-12 08:26:12
【问题描述】:

Google Chrome 会在后台自行更新。无需用户操作。我发现这是更新应用程序的一种非常好的和用户友好的方式。有谁知道这在技术上是如何完成的,是否可以为 .NET (WPF) 应用程序做同样的事情?

【问题讨论】:

    标签: .net google-chrome auto-update


    【解决方案1】:

    是的。您可以使用ClickOnce,也可以使用ShadowCopying。

    这里有一个 ShadowCopying 的例子,描述很好,它显示了一个 Web 服务器的例子,但同样的技术可以应用于桌面应用程序。另一个很好的例子是here

    【讨论】:

      【解决方案2】:

      ClickOnce 是一个糟糕的解决方案,因为它不在后台执行,它只在启动时进行检查,并且会显着减慢启动时间。

      另一方面,Chrome 会在应用程序运行时定期检查,静默下载更新,然后在您说“好的,为什么不”时安装它。

      从用户的角度来看,几乎没有延迟,而且东西只是不停地咕咕叫。

      Shadow Copy 将是您的最佳选择。您需要编写一个定时事件,定期检查 Web 服务器是否有更新的组件,并根据需要下载它们。 Shadow Copy 是替代它们的方法。

      为模块化设计您的系统也将有所帮助 - 您不必下载执行应用程序所涉及的每个文件,您可以设计它以便可以独立更新核心区域,从而减少最终用户每次的负载他们会下载您的更新。

      对于更极端的解决方案,各个供应商都提供更新服务,例如 InstallShield。

      【讨论】:

      • ClickOnce 可以设置为在应用程序启动后检查更新。您甚至可以使用 api 手动完成所有这些步骤。
      • 我还不确定 ShadowCopy。例如,您可以有一个文件夹来更新最新的 DLL,并在退出应用程序时将它们复制到旧的 DLL 上。但我一定会检查 ShadowCopy! ClickOnce 看起来不错,但安装更新需要用户确认,这正是我试图避免的。 Google 确实有一个在 Windows 中运行的进程(如果是 Windows),它会检查更新并更新正确的文件:googlesystem.blogspot.com/2009/07/…
      猜你喜欢
      • 1970-01-01
      • 2020-12-01
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多