我想要能够通过将升级文件上传到数据库并设置升级发生的日期和时间来升级所有这些应用程序。
我有一个关于如何做到这一点的想法。
- 一个应用程序在运行线程以查找可用的升级。
- 当找到升级时,文件会下载到应用程序的计算机上。
- 下载完成后,应用程序会触发重启。
- 应用程序启动时,它会在本地计算机上查找升级文件。
- 如果升级可用,则应用程序会自行升级。
使用ClickOnce可能会遇到麻烦。ClickOnce只适用于您的WPF应用程序,无法处理服务或Web应用程序。您可以编写一个单独的ClickOnce部署的“更新器”应用程序,其工作是更新其他应用程序,但这仍然似乎有点靠不住。
听起来可能很愚蠢,但我会从我能想到的最简单的事情开始。使用Dropbox推送您的更新文件;然后是一个AutoHotKey脚本,在启动时运行,监视新的更新文件夹并运行它们?
听起来有点牵强,但您可以在一两个小时内证明它可行。
你真的想从数据库运行更新,还是这只是一个可能的解决方案?你正在重复造轮子。
看看ClickOnce部署,你需要的一切都已经为你完成并集成到VisualStudio中。如果你使用已经存在的东西,你就可以获得现有文档、那些已经经历过痛点、更新和修复的人们的有用博客的好处。
.NET Framework 2.0中的ClickOnce部署
你如何使用ClickOnce取决于你想从中获得什么。开箱即用,你可以非常容易地创建一个部署,每次运行应用程序时都会检查升级,但你也可以通过一点代码让应用程序在运行时检查更新。
Dominic Zukiewicz提到的Updater Application BlockVersion是ClickOnce的前身。
编辑
ClickOnce在服务器端和客户端都提供了回滚的情景。客户端可以使用普通的添加/删除程序对话框回滚到先前的版本,您也可以轻松地重新发布先前的版本。
那Google Omaha怎么样?它是一个开源工具,目前用于推送Google Chrome和Google Earth的更新。Omaha也可以处理应用程序安装。可以在这里找到高级设计概述。