为 Windows 窗体项目处理基于 Web 的自动软件更新有哪些好的解决方案?我知道微软一键,但目前对它不感兴趣。
8 回答
ClickOnce 适用于千篇一律的东西,但在安全方面有一些限制(即无法创建桌面图标、无法访问 COM 等)
假设您使用 MSI 来安装您的应用程序。使用 WIX ( http://wix.sourceforge.net/ ) 创建补丁 (.msp)。您将需要查看 Vista 的最低特权用户帐户 (LUA) 修补程序,因为如果您不这样做,UAC 会搞砸您。
然后您的应用程序执行以下操作:
- 通过 HTTP 检查新版本
- 下载 MSP(由于 UAC,请注意在 Vista 中将其 DL 到的位置)
- 启动一个 Shim exe
- 等待您的应用关闭
- 启动 msp(在非交互模式下)
- 重启你的应用
这一切都可以在 XP 和 Vista 上以零用户交互在幕后自动发生。
一个很好的起点,一般来说,WIX 是:
http://www.tramontana.co.hu/wix/index.php (第 4 课正在更新中)
Not to get too spammy, but our company offers an automatic updating solution. It comes in 3 parts:
- The open source wyUpdate, which is an updater written in C#
- The free AutomaticUpdater control
- wyBuild is used to build patches and manage your versions
wyUpdate handles all of the Vista/Windows 7 UAC problems and all the file permission problems that inevitably pop up when you're trying to update complex software.
我们一次写了自己的……这不是一个好主意。在许多情况下,您可以使用 ClickOnce。我们实际上使用了一个我们可以推荐的名为AutoUpdate+的产品。它的特别之处在于它可以避免 UAC 弹出问题。
这实际上取决于更新过程的复杂程度。
我有一些客户的简单需求,我们创建了自己的流程设置来处理它,在大约 3 小时的开发中,我们有一个完全有效的解决方案,可以满足他们的所有需求。
微软一键?你是说 ClickOnce 吗?单击一次以赢得表格非常好。部署速度很快,所有更新过程都由自己处理。
但是ClickOnce是您可以拥有的最好的,您可以选择用户是否需要下载新版本、使用旧版本、返回版本等...
您可以随时构建自己的解决方案,检查某个网址中的 XML 设置文件的版本号,如果它比当前版本更新,请更改用户以下载新版本,例如...
我也听说过它叫做 clicktwice :+> WIX 解决方案是我更感兴趣的。是否有使用这种技术的示例应用程序(带有源代码)?
这是我为解决我们对 WinForms 和 WPF 应用程序的特定需求而编写的一个开源解决方案。总体思路是以尽可能低的开销获得最大的灵活性。
因此,集成非常简单,该库几乎可以为您完成所有工作,包括同步操作。它也非常灵活,可以让您确定要执行哪些任务以及在什么条件下执行 - 您制定规则(或使用一些已经存在的规则)。最后一点是对任何更新源(网络、BitTorrent 等)和任何提要格式的支持——任何未实现的内容您都可以自己编写。
还支持冷更新(需要重新启动应用程序),并且会自动完成,除非为任务指定“热交换”。
这归结为一个 DLL,大小不到 70kb。
更多详情请访问http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/
代码位于http://github.com/synhershko/NAppUpdate(在 Apache 2.0 许可下获得许可)