终止程序然后从正在终止的程序运行附加代码的最佳方法是什么?例如,程序自我更新的最佳方式是什么?

有帮助吗?

解决方案

您有几个选择:

您可以使用另一个应用程序 .exe 来进行自动更新。这可能是最好的方法。

您还可以在程序运行时重命名程序的 exe。因此,您可以从某个更新服务器获取该文件并替换它。在程序下次启动时,它将使用新的 .exe。然后您可以在启动时删除重命名的文件。

其他提示

本来就是 真的 有助于了解我们在这里谈论的是什么语言。我确信我可以为您提供一些在 PowerBuilder 或 Cobol 中执行此操作的非常好的技巧,但这可能不是您真正想要的!但是,如果您正在谈论 Java,那么您可以使用关闭挂钩 - 对我来说非常有用。

另一件需要考虑的事情是,我一直在使用的大多数“主要”应用程序(FileZilla、Paint.NET 等)都让更新程序卸载以前版本的应用程序,然后重新安装新版本的应用程序。

我知道这不适用于真正的大型应用程序,但这似乎确实是中小型应用程序的“首选”过程。

我不知道有什么方法可以在主程序关闭之前启动第二个程序的情况下完成此操作。程序 2 下载并安装更改,然后重新启动主程序。

我们在之前的应用程序中做了类似的事情。我们通过 X 或关闭按钮捕获了程序的终止(在 .NET 2.0 中),然后启动了用户看不到的后台更新过程。它会检查服务器(客户端-服务器应用程序)是否有更新,如果有可用的更新,它将使用 BITS 在后台下载。然后,下次应用程序打开时,它会意识到有新版本(我们设置了一个标志),并弹出一条消息,提醒用户新版本,如果用户想查看添加的新功能,则单击按钮到这个版本。

如果您有一个运行的辅助应用程序来执行更新,则会更容易。您将执行“更新程序”应用程序,然后在其中等待其他进程退出。如果您需要访问常规应用程序 DLL 等,但它们也需要更新,您可以从具有已更新 DLL 的辅助位置运行更新程序,这样它们就不会在原始位置使用。

如果您正在编写 .NET 应用程序,则可以考虑使用 ClickOnce。如果您需要大量定制,您可能会寻找其他地方。

我们有一个外部流程为我们执行更新。当它找到更新时,会将其下载到辅助文件夹,然后等待主应用程序退出。退出时,它会替换所有当前文件。主进程每 4 小时启动一次更新进程。由于更新过程将等待主应用程序退出,因此主应用程序除了启动更新应用程序之外无需执行任何特殊处理。

这是一个附带问题,但如果您正在考虑编写自己的更新过程,我鼓励您考虑使用某种压缩来(1)保存下载并(2)提供一个文件以从更新服务器提取。

希望这是有道理的!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top