如何让我的C#应用​​程序检查更新?

35 c#

我正在构建一个C#windows应用程序.我想要它,所以每当我点击我的表单中的更新按钮时,应用程序将开始查找我的服务器上是否有新版本可用.

如果有,则继续更新软件.

这通常如何处理?

Kur*_*out 20

看看Click Once.这个主题也可能是一个有趣的读物.

  • @Krzysztof,它不需要这样做.这完全取决于您配置和构建更新解决方案的方式.您可以在应用程序内编写所有clickonce交互,而无需框架提供的对话框. (3认同)
  • ClickOnce 有一个主要缺点 - 它会在启动您自己的应用程序之前弹出自己的窗口,这对于初次使用的用户来说是丑陋且令人困惑的。它应该像 Firefox 或 Reflector 一样工作...... (2认同)

Wya*_*Day 13

首先我要说的是我们提供完整的更新解决方案,其中包括:

wyUpdate处理所有Vista/Windows 7 UAC问题以及当您尝试更新复杂软件时不可避免地出现的所有文件权限问题.

话虽这么说,如果你想建立自己的更新程序,这里有一些提示:

建立自己的更新程序

一个好的起点是我上面提到的wyUpdate C#源代码.您可以蚕食它并将其用于您自己的目的.它包含的一些算法:

  • 完整的Windows Vista/Windows 7 UAC支持
  • 能够让有限的用户检查,如果他们有凭据则更新
  • 支持wonky公司inernet.(如果你曾与公司合作过这是一个真正的问题).
  • 快速提取,修补和安装文件.
  • 注册表支持.
  • 用户在错误或取消时回滚文件和注册表
  • 自我更新(没有留下文件)

我们这里也有文件规范.

自动更新

由于是自动要求,让我告诉你我们如何使用我们的AutomaticUpdater控件.

我们使用命名管道在独立更新程序(wyUpdate)和程序表单上的自动更新程序控件之间进行通信.wyUpdate向自动更新程序报告进度,自动更新程序可以告诉wyUpdate取消进度,开始下载,开始提取等.

这使更新程序与您的应用程序分开.

事实上,我们使用的确切命名管道C#代码包含在我写的一篇文章中:像Google Chrome这样的多进程C#应用程序.

  • 我可以保证wyBuild和wyUpdate是一个很好的产品.它比ClickOnce灵活得多,而且非常实惠 - 软件工程的一个重要方面是知道何时购买以及何时构建,对我来说,这是一个明确的购买决定. (2认同)

Jal*_*lal 10

如果您希望自己的应用程序从网站自动更新并自行处理代码,请执行以下步骤:

  1. 例如,创建一个具有唯一名称的XML文件,help.xml并构建一个结构,以指定要在特定目录和版本等中更新的文件列表.然后将其上载到您的网站上.

  2. 连接到网站后的应用程序下载此help.xml文件并读取内容以确保网站上有任何新文件(更新文件)...

  3. 如果存在新版本的文件,则从help.xml文件中指定的URL开始下载!