在Mac上有一个非常好的名为Sparkle的库,程序可以使用它来实现自动更新的检查/安装功能.
.NET有什么类似的东西吗?或者只是常规的Win32?
ClickOnce有自己的安全限制(可以理解).如果您想要Windows应用程序的全部功能和控制权,那么请使用.NET 应用程序更新程序组件.它就像一个魅力,甚至已被微软内部用于基于.NET的游戏(我不记得游戏名称).
首先我要说的是我们提供完整的更新解决方案,其中包括:
一个开放源码的更新,wyUpdate,用C#编写
您可以添加到.NET应用程序表单的免费AutomaticUpdater控件
wyBuild用于构建补丁并管理您的版本
wyUpdate处理所有Vista/Windows 7 UAC问题以及当您尝试更新复杂软件时不可避免地出现的所有文件权限问题.
话虽这么说,如果你想建立自己的更新程序,这里有一些提示:
一个好的起点是我上面提到的wyUpdate C#源代码.您可以蚕食它并将其用于您自己的目的.它包含的一些算法:
完整的Windows Vista/Windows 7 UAC支持
能够让有限的用户检查,如果他们有凭据则更新
支持wonky公司inernet.(如果你曾与公司合作过这是一个真正的问题).
快速提取,修补和安装文件.
注册表支持.
用户在错误或取消时回滚文件和注册表
自我更新(没有留下文件)
我们这里也有文件规范.
由于是自动要求,让我告诉你我们如何使用我们的AutomaticUpdater控件.
我们使用命名管道在独立更新程序(wyUpdate)和程序表单上的自动更新程序控件之间进行通信.wyUpdate向自动更新程序报告进度,自动更新程序可以告诉wyUpdate取消进度,开始下载,开始提取等.
这使更新程序与您的应用程序分开.
事实上,我们使用的确切命名管道C#代码包含在我写的一篇文章中:像Google Chrome这样的多进程C#应用程序.
ClickOnce是我的首选方法.它有一些瑕疵,但它配备了Visual Studio,并且工作得相当好.
ClickOnce被大量使用,但你可以做我为大型应用程序所做的事情并尝试这些:
VB.NET中的应用程序自动更新
重新访问应用程序自动更新
我修改了一下逻辑并构建了我认为更好的XML更新文件.现在,当我需要更新客户端时,我只发布新的EXE文件或DLL文件,并在公共XML文件中设置正确的版本.我的应用程序检测到较新的版本,如果它更旧并自行更新.如果您在Windows Vista上执行此操作,则需要提示管理员权限,以便可以写入Program Files(如果您在那里安装).
您也可以使用C#/ VB.NET Converter轻松将其转换为C#.
我刚刚完成了这个过程并使用了NetSparkle.
它的工作方式与Windows窗体应用程序一样,其中包含覆盖以前版本的MSI安装程序.我很高兴我也发现了 - 我正要自己动手.我是唯一一个制作非常简单的.NET应用程序的人吗?我看到的大部分东西看起来都像是一个彻底的矫枉过正.
我还没有尝试NetSparkle(我会稍后),但它似乎正是你在寻找的东西.
NetSparkle是一个易于使用的软件更新框架,适用于Windows,Mac或Linux上的.NET开发人员.它的灵感来自 Cocoa开发人员的 Sparkle项目和 WinSparkle项目( Win32端口).