自动更新C#程序

时间:2010-10-04 02:28:32

标签: c# .net windows

我正在为客户端PC编写一套程序 -

  • Windows服务
  • 用户空间Windows窗体应用程序

我需要能够发布这些程序的更新版本,并让客户端PC自动且透明地(无需用户交互)自行更新。此更新将通过不可靠的3G连接(EvDO)完成。应用程序将持续运行,因此更新必须正常关闭服务/关闭应用程序,然后在更新后再次将其重新启动。

在我花时间编写自己的解决方案之前,是否有任何类似的预先存在的解决方案?

注意:由于Windows服务以及其他一些原因,ClickOnce在此处不起作用。我也无法利用BITS,因为我正在使用缺少BITS IIS插件的Windows Azure。

2 个答案:

答案 0 :(得分:9)

为什么不考虑卷影副本。

  

卷影复制可以启用程序集   用于应用程序域   无需卸载即可更新   应用领域。这是   对应用程序特别有用   必须连续可用,   例如ASP.NET站点。

使程序非常简单的shell。然后让他们观察(FileWatcher)更新加载它们的文件夹(以及传递更新的位置)。然后动态重新加载AppDomain。

有关详细信息,请参阅herehere

  

您可以使用的属性   AppDomainSetup类如下   为其配置应用程序域   影子复制:

     

通过设置启用阴影复制   ShadowCopyFiles属性为字符串   价值“真实”。默认情况下,此设置   导致所有组件   要复制到的应用程序路径   在加载之前下载缓存。   这是由维护的相同缓存   要存储的公共语言运行库   下载的文件...

答案 1 :(得分:2)