我的系统有两个Web应用程序,一个Web服务,一个Windows服务和一个24小时在触摸屏上运行的WPF应用程序。所有这些都连接到数据库。
我希望能够通过将升级文件上传到数据库来升级所有这些应用程序,并设置升级的日期和时间。
我对如何做到这一点有一个想法。
我不确定应该如何完成所有这些步骤,尤其是最后一步。但是我想对此有一些评论。这完全错了吗?我是在正确的轨道上吗?关于如何以这种方式或以其他方式做到这一点的任何提示?
答案 0 :(得分:1)
我认为你在这里走的是正确的路线。用于检查数据库是否存在新更新,然后是xcopy部署脚本的轮询应用程序可以执行此操作。
这也可能来自PowerShell脚本,它按计划运行,例如每10分钟运行一次。它可以检查数据库,关闭进程和服务,xcopy应用程序(来自共享源)并重新启动所述服务和应用程序。
所有这些都假设您最初没有使用Windows Installer打包和部署应用程序。虽然直接替换二进制文件的xcopy不会损害MSI包,但不建议这样做。我们在工作中使用AD MSI部署,这在最好的时候是痛苦的!
MSDN包含针对WPF应用程序的MSI与XCopy部署的引用(以及安全要求)。
这是我从PowerShell查询SQL时发现的第一个链接:http://elegantcode.com/2008/03/27/discovering-windows-powershell/
祝你好运!答案 1 :(得分:1)
使用ClickOnce执行此操作时会遇到问题。 ClickOnce仅适用于您的WPF应用程序,它无法对服务或Web应用程序执行任何操作。您可以编写一个单独的ClickOnce部署的“更新程序”应用程序,其作用是更新其他应用程序,但这似乎仍然有点不确定。
这可能听起来很愚蠢,但我会从我能想到的最简单的事情开始。如何使用Dropbox推送更新文件;然后是一个在启动时运行的AutoHotKey脚本,在Dropbox文件夹中查看新的更新并运行它们?
听起来很不错,但这是你可以在一两个小时内证明的事情。
答案 2 :(得分:0)
微软有一个Updater Application Block可能就是你想要的。
答案 3 :(得分:0)
您真的想从数据库运行更新,还是只是一个可能的解决方案?你正在重新发明轮子。
查看ClickOnce部署,您已经完成了所需的一切并集成到VisualStudio中。如果您使用已经存在的东西,那么您将获得现有文档的好处,以及那些已经经历过痛点,更新和修复的人的有用博客。
ClickOnce Deployment in .NET Framework 2.0
您希望如何使用ClickOnce取决于您想要从中获得什么。开箱即用,您可以非常轻松地创建每次运行应用程序时检查升级的部署,但是您也可以使用一些代码让应用程序在运行时检查更新。
Dominic Zukiewicz提到的Updater Application BlockVersion是ClickOnce的前置光标。
修改
ClickOnce在服务器端和客户端都提供回滚方案。客户端可以使用常规添加删除程序对话框回滚到以前的版本,您可以轻松地重新发布以前的版本。
答案 4 :(得分:0)
您可以创建另一个每天执行更新的Windows服务。如果有任何要处理的更新,该服务将查找特定文件夹。例如,它可以查找一个xml文件,告诉它新版本的应用程序以及要更新的文件。它将关闭应用程序/服务,备份需要更新的文件,启动应用程序/服务,并清理备份文件,保留至少三个备份文件。该服务应跟踪安装的最新版本和当前版本,以便在读取xml文件时可以检查它是否是新更新,或者只需在完成时删除xml文件即可。
答案 5 :(得分:0)
Google Omaha怎么样?它是一个开源工具,目前用于推动谷歌浏览器和谷歌地球的更新。奥马哈也可以处理应用程序安装。可以找到高级设计概述here。