为桌面应用程序执行静默更新的最佳方法有哪些?

时间:2010-01-23 17:55:09

标签: c# .net desktop

具体来说,这适用于.NET 2.0桌面应用程序。目前,我们要求用户通过我们的网站手动完成更新过程。

在幕后进行客户端静默或自动升级的最佳方法是什么?

谢谢!

4 个答案:

答案 0 :(得分:9)

我建议阅读微软的第4章。NET Applications Lifecycle Guide。我要推广的是连接自动更新系统 - 您可以编写一个小型系统来联系您拥有的Web服务器,检查是否有可用的升级,下载并安装升级补丁。

答案 1 :(得分:5)

您可以查看ClickOnce或Updater Application Block

答案 2 :(得分:1)

我不是ClickOnce的忠实粉丝。我喜欢这个概念,但不喜欢具体的实现。

我过去完成应用程序更新系统的方法是将所有应用程序的文件压缩到容器文件中并将其放在我的Web服务器上。为了简化操作,我自动创建了容器文件。在Web服务器上,我有一个版本信息文件,列出了当前版本和容器的URL,如下所示:1.0.0.0|http://www.example.com/path/to/container.file。要解析版本​​信息文件,所有应用程序需要做的是使用管道符“|”拆分文件内容。第一个数组元素是版本号,第二个元素是容器文件路径。

在启动时以及每隔2天的常规间隔(以防用户离开应用程序一段时间),我让应用程序检查Web服务器上的版本信息文件并确定是否在运行版本之后出现的版本。如果有更新,则应用程序会提示用户。如果用户想要更新,应用程序将从版本信息文件中指定的URL下载容器,并将内容保存在应用程序的文件夹中,将当前正在运行的exe重命名为xxx.exe.old以允许将新exe保存为xxx.exe。然后应用程序重新启动,新的exe删除xxx.exe.old

如果要发布应用程序的新版本,只需增加应用程序的版本号,使用新版本号更新版本信息文件,并将更新的容器文件上载到Web服务器

答案 3 :(得分:0)

我宁愿没有应用程序在我不知情的情况下进行静默更新。

事实上,我更愿意被告知需要更新,静默更新将被视为恶意,隐藏用户的某些内容并在未经我同意的情况下接管计算机。如果静音更新搞砸了机器,而不知道机器因为注册表等问题导致机器“破损”,会发生什么......

是的,这是有争议的......

My 2cents