更新应用程序而不关闭它

时间:2009-07-22 13:47:05

标签: c# auto-update

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

或者,如果没有用户注意到它已关闭,有没有一种好的方法呢?

6 个答案:

答案 0 :(得分:6)

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

某些情况下,您可以在不重新启动的情况下更新某些应用程序的部分 - 但增加的复杂性非常重要,坦率地说,最好不要尝试99%的案例,IMO。

当然,您还没有说过您正在编写什么类型的应用程序 - 如果您能提供更多信息,那将会有所帮助。

答案 1 :(得分:3)

应用程序需要在更新之前关闭,因为更新应用程序通常意味着用新版本替换可执行文件(.exe,.dlls等),如果不关闭应用程序就无法完成。

作为Jon said,在某些案例中,您可以升级应用程序而不关闭它。但是,这是不可取的,因为它可能会导致更新程序失败,并且整个更新可能会回滚。

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

答案 2 :(得分:0)

您可以将后端分成单独的进程/模块,并通过重新启动它来更新后端,而无需用户意识到。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

除非您正在进行某种自动化或非常严重的事情......即便如此,您应该考虑进行故障转移,以便在需要时关闭/重启。

答案 5 :(得分:0)

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