c++ - 通过写入当前正在执行的文件来更新程序

标签 c++

我正在编写一个迟早需要更新的 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/

相关文章:

c++ - DirectX11 监视器句柄

c++ - 使用 C++17 排序的链式复合赋值仍然是未定义的行为?

c++ - 在链接到动态库的静态库中导出符号

c++ - experimental::optional nullopt_t 构造函数

c++ - 使用递归反转链表的问题

c++ - 是否可以从外部设置 ClientHello 随机数

c++ - 如何在编译时使用 std::make_tuple ?

c++ - 我的应用程序中来自 Windows 的模拟时钟

c++ - 在类的所有方法中访问变量的方式,除了定义为全局变量

c++ - 从 float 组创建缓冲区