0

一些背景:

我们提供了一个由一个大型数据库和几个程序组成的复杂系统——大多数是用 C# 编写的,但是一些遗留应用程序仍在 MFC 上运行。

我们提供的大多数东西都在单个服务器上运行(运行 SQL Server 和 SQL Management Studio 2005),但是多个应用程序可以在多个客户端计算机上运行。更新这是一个真正的痛苦,因为在我们更新数据库后,过时的软件很可能由于数据库更改而中断。手动更新服务器软件是一回事,但确保所有客户端软件也能正常工作实际上是不可能的,而且随着时间的推移只会变得更糟。

我要编写一个更新服务,它将能够更新整个产品——更新数据库、重新安装服务和应用程序。(但是只有实际修改的程序/文件/表格/等应该更新。每次有可用更新时下载整个产品不是一种选择。此外,某些计算机可能只安装了可用程序的子集)

首先,是否有一种很好的方法来做到这一点?如果有类似于 ClickOnce 的东西也能够更新已经存在的数据库,我宁愿使用它。

如果没有,更新时的最佳做法是什么?所有和任何材料将不胜感激。

提交更新后,我需要尽快在服务器上安装一些更新,无需任何用户输入。这包括 Windows 服务(始终运行)和任何数据库更改。在进行了这些更改之后,我将不得不阻止任何不是最新的软件访问已更改的部分,或者根本无法运行。

任何建议将不胜感激 - 如果我必须编写这样的系统,我想把它做好。

4

2 回答 2

1

最佳做法是将应用程序打包在 MSI 中,并使用组策略将更新推送到每个客户端。

如果这不可能,那么您需要某种方式通知客户端应用程序它已过时(简单检查保存当前版本号的服务器可能就足够了)并拒绝工作,直到下载并安装更新补丁 -您甚至可以从应用程序本身内部启动此过程。

于 2009-12-15T10:42:05.643 回答
0

这个答案可能会对您有所帮助,我没有亲自使用过Wix,但这似乎与您正在寻找的内容相符。请务必查看链接教程中的第 4 课,因为它提供了您需要的详细信息。

我不确定在更新方面你会在哪里找到最佳实践,但在我个人看来,你不应该强迫用户更新,除非它破坏了底层应用程序(就像你的那样)。如果有人有指向该主题最佳实践列表的链接,我将非常感兴趣。

编辑

我对可能的更新最佳实践感兴趣,所以我在这里开始了另一个问题线程。答案中的普遍共识是“询问用户/客户”,但答案中可能还有一些其他细节可能会对您有所帮助,恐怕我在任何地方都找不到关于该主题的任何实际硬性规则(我期待)。

于 2009-12-16T05:41:20.157 回答