gpt4 book ai didi

c# - 应用程序启动器如何 self 更新?

转载 作者:IT老高 更新时间:2023-10-28 21:02:31 24 4
gpt4 key购买 nike

启动器在游戏中最为常见。想想英雄联盟、星际争霸 II 或几乎所有的 MMO。在开始实际游戏之前,您有一个负责更新和修补的小型启动器应用程序。

我想通过我正在开发的特定非游戏应用程序来插入这个方向。启动器的概念非常有意义:它检查更新、替换适当的二进制文件/库、可能运行完整性检查并启动应用程序。但是,启动器如何 self 更新?这往往是一个罕见的事件,但它是如何完成的?启动器是否真的只是覆盖了它当前运行的二进制文件?或者下载后是否有某种交换步骤?我需要能够向启动器推送(罕见的)更新(特别是如果我在启动器中发现了一些错误)。

我的特定项目将使用 C#,但我也对概念上相似的 C++ 和/或 Java 解决方案感兴趣,以供将来引用。

最佳答案

我从未尝试过,但这是我的猜测(假设您无法覆盖正在执行的文件。如果可以,这一切都更简单)

Updater A checks if its the newest version
If launcher isnt the newest version
Download the differences (to save bandwidth) to file B
Apply the delta to own code into file C
Launch file C.
Close
If file C exists (update happened recently)
Try to delete C (update was previous launch, delete temporary file)
If delete fails (We are C, means A is out of date)
Copy C over A (update launcher)
Note that you can keep going, dont have to restart even though we are C.
If game isnt newest version
Download the differences (to save bandwidth) to file B
Apply the delta to game into file D
delete game
Rename D -> game
Run game

André Caron向我展示了使用 transactional file IO 的交换技巧做得更好.

关于c# - 应用程序启动器如何 self 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8944681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com