一些背景:
我们提供了一个由一个大型数据库和几个程序组成的复杂系统——大多数是用 C# 编写的,但是一些遗留应用程序仍在 MFC 上运行。
我们提供的大多数东西都在单个服务器上运行(运行 SQL Server 和 SQL Management Studio 2005),但是多个应用程序可以在多个客户端计算机上运行。更新这是一个真正的痛苦,因为在我们更新数据库后,过时的软件很可能由于数据库更改而中断。手动更新服务器软件是一回事,但确保所有客户端软件也能正常工作实际上是不可能的,而且随着时间的推移只会变得更糟。
我要编写一个更新服务,它将能够更新整个产品——更新数据库、重新安装服务和应用程序。(但是只有实际修改的程序/文件/表格/等应该更新。每次有可用更新时下载整个产品不是一种选择。此外,某些计算机可能只安装了可用程序的子集)
首先,是否有一种很好的方法来做到这一点?如果有类似于 ClickOnce 的东西也能够更新已经存在的数据库,我宁愿使用它。
如果没有,更新时的最佳做法是什么?所有和任何材料将不胜感激。
提交更新后,我需要尽快在服务器上安装一些更新,无需任何用户输入。这包括 Windows 服务(始终运行)和任何数据库更改。在进行了这些更改之后,我将不得不阻止任何不是最新的软件访问已更改的部分,或者根本无法运行。
任何建议将不胜感激 - 如果我必须编写这样的系统,我想把它做好。