我正在编写一个迟早需要更新的 C++ 程序。我希望这需要与用户的交互尽可能少,因为程序在后台不断运行并且永不终止。我知道在正常情况下,您不能写入正在执行的文件,所以这是我的问题:应用程序是否可以修改自身而不只是运行另一个可执行文件并让另一个可执行文件接管?我不能拥有多个文件。
最佳答案
大多数使用自动更新功能的程序使用另一个可执行文件来接管执行以避免该问题。
不过我看到了一个比较简单的解决方案:
old program
下载new program
到临时位置旧程序
启动新程序
(可能带有特殊参数)并自行终止new program
将自身复制到old program
(运行中的程序读取自身应该没问题,只要它不打开自身进行写入)new program
使用特殊参数运行new program (copy)
,然后自行终止new program (copy)
删除new program
并恢复正常操作
够清楚了吗? :)
关于c++ - 通过写入当前正在执行的文件来更新程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3363592/