.net 强制更新到多个客户端

.net 强制更新到多个客户端,.net,installation,.net-4.5,auto-update,.net,Installation,.net 4.5,Auto Update,我们正在开发一个(WPF)软件,它作为独立的应用程序在每个客户机上运行,并连接到数据库服务器。您可以这样看:1个数据库服务器=1个客户=dosens/数百台连接到此数据库的客户端PC。目前,我们已经使用WIX制作了一个安装程序 让我们考虑一下这种潜在情况:我们发布了一个新版本的软件,其中包含一些数据库模式更改。这意味着,如果一个客户机安装了新版本,并更新了数据库模式,那么来自所有其他客户机的软件将变得不起作用 那么,在这个场景中有哪些可用的更新选项?是否存在从单个位置向所有客户端发出的强制更新

我们正在开发一个(WPF)软件,它作为独立的应用程序在每个客户机上运行,并连接到数据库服务器。您可以这样看:1个数据库服务器=1个客户=dosens/数百台连接到此数据库的客户端PC。目前,我们已经使用WIX制作了一个安装程序

让我们考虑一下这种潜在情况:我们发布了一个新版本的软件,其中包含一些数据库模式更改。这意味着,如果一个客户机安装了新版本,并更新了数据库模式,那么来自所有其他客户机的软件将变得不起作用


那么,在这个场景中有哪些可用的更新选项?是否存在从单个位置向所有客户端发出的强制更新

我们有类似的更新要求。当应用程序的更新与数据库或存储过程的更改一致时,数据库或存储过程的更改与更新的客户端应用程序之间的任何差异都可能导致错误

除了彻底修改数据库模式之外,如果只是SP中的一个更改,您可以对SP进行版本设置,并且只从更新的软件中调用新的SP

因为我们的产品都部署在网络上,所以我们使用ClickOnce进行部署。我们手动运行代码来检查更新。为此,我们实际上读取了清单文件。我们更喜欢这种方法,而不是跟踪数据库上的版本,因为它不需要我们维护版本控制。(这就是ClickOnce的用途)


我们在启动时运行版本检查。如果需要更新,我们将强制更新,并要求用户重新启动应用程序。

问题在于,我们的应用程序不会停止,而是不断收集数据。那么,如何确保同时更新所有这些文件呢?在我看来,一个客户端可以重新启动应用程序,看到更新,并启动更新过程,而所有其他客户端仍在运行。我不知道ClickOnce有什么优势,但是写一个应用程序更新检查是很容易的,如果它存在,启动一个更新过程。这里的问题是#何时#:我们不能依赖时钟,因为不同PC上的时钟可能不会同步。我们也不能依靠互联网来检查时间。在所有机器上同时滚动更新非常重要。