0

是否可以在不关闭应用程序的情况下将应用程序更新到新版本?

或者有没有一种好方法可以做到这一点,而用户不会注意到它已关闭?

4

6 回答 6

6

通常,应用程序在启动时会注意到有可用更新,然后询问用户是否可以更新。然后他们开始更新过程并退出。更新过程会替换文件,然后启动新版本。

某些情况下,您可能无需重新启动即可更新应用程序的某些部分 - 但增加的复杂性是显着的,坦率地说,最好不要在 99% 的情况下尝试,IMO。

当然,你还没有说你正在编写什么样的应用程序——如果你能提供更多信息,那会有所帮助。

于 2009-07-22T13:49:22.483 回答
3

应用程序需要在更新之前关闭,因为更新应用程序通常意味着将可执行文件(.exe、.dll 等)替换为其较新的版本,而这在不关闭应用程序的情况下无法完成。

正如Jon 所说,在某些情况下,您可以升级应用程序而无需关闭它。但是,这是不可取的,因为它可能会导致更新程序失败,并且整个更新可能会回滚。

更新程序可以是另一个可执行文件,它将首先关闭主应用程序,然后下载更新,应用它们,启动主应用程序,然后退出(例如SkypeFireFox等)

于 2009-07-22T13:49:32.717 回答
0

您可以将后端分离到一个单独的进程/模块中,并通过在用户没有意识到的情况下重新启动来更新后端。

更新前端会有点棘手,但如有必要,可以避免或延迟。

于 2009-07-22T13:49:53.620 回答
0

实现此目的的一种不错且干净的方法是使用动态插件。您可以编写大量基于插件的应用程序。当需要更新时,卸载需要更新的插件,更新 .dll 文件并将其加载回应用程序。然而,让用户看不到它可能是一项艰巨的工作,因此它在很大程度上取决于您的设计和编码。

于 2009-07-22T13:51:38.673 回答
0

我记得 InTime 能够实时交换 exe,但必须仔细编码。我知道这是可能的,但正如 Jon Skeet 所说,你最好不要尝试。

除非您正在做某种自动化或非常严重的事情......即使那样,您也应该考虑故障转移,以便您可以在需要时关闭/重新启动。

于 2009-07-22T13:52:01.183 回答
0

如果您有某种启动应用程序和 dll 的骨架框架,您可以查看CreateDomain。不过,这将需要您认真的设计工作。祝你好运!

于 2009-07-22T14:00:45.650 回答