【发布时间】:2011-01-12 08:26:12
【问题描述】:
Google Chrome 会在后台自行更新。无需用户操作。我发现这是更新应用程序的一种非常好的和用户友好的方式。有谁知道这在技术上是如何完成的,是否可以为 .NET (WPF) 应用程序做同样的事情?
【问题讨论】:
标签: .net google-chrome auto-update
Google Chrome 会在后台自行更新。无需用户操作。我发现这是更新应用程序的一种非常好的和用户友好的方式。有谁知道这在技术上是如何完成的,是否可以为 .NET (WPF) 应用程序做同样的事情?
【问题讨论】:
标签: .net google-chrome auto-update
是的。您可以使用ClickOnce,也可以使用ShadowCopying。
这里有一个 ShadowCopying 的例子,描述很好,它显示了一个 Web 服务器的例子,但同样的技术可以应用于桌面应用程序。另一个很好的例子是here。
【讨论】:
ClickOnce 是一个糟糕的解决方案,因为它不在后台执行,它只在启动时进行检查,并且会显着减慢启动时间。
另一方面,Chrome 会在应用程序运行时定期检查,静默下载更新,然后在您说“好的,为什么不”时安装它。
从用户的角度来看,几乎没有延迟,而且东西只是不停地咕咕叫。
Shadow Copy 将是您的最佳选择。您需要编写一个定时事件,定期检查 Web 服务器是否有更新的组件,并根据需要下载它们。 Shadow Copy 是替代它们的方法。
为模块化设计您的系统也将有所帮助 - 您不必下载执行应用程序所涉及的每个文件,您可以设计它以便可以独立更新核心区域,从而减少最终用户每次的负载他们会下载您的更新。
对于更极端的解决方案,各个供应商都提供更新服务,例如 InstallShield。
【讨论】: