C ++自动更新到新版本

时间:2017-03-24 11:36:31

标签: c++ version-control download version

我现在一直在寻找一个好的解决方案3天,但到目前为止我还没有找到任何解决方案。我的情况是:

客户端已安装应用程序(C ++,控制台应用程序)。启动时的应用程序将检查它与服务器的版本号并返回,或者它是最新的还是应该下载新版本。

如果必须下载新版本,我想用Curl下载新脚本,名称为: Application2.exe

但是,我希望它替换触发下载新版本的旧 Application.exe

我的解决方案是: Application.exe 下载 Application2.exe 。下载后,它应该触发 Updater.exe ,让我们睡5秒钟。在这5秒内(或任何最佳套房的时间跨度)。在这5秒内, Application.exe 有时间关闭,5秒后 Updater.exe Application.exe 替换为 Application2 .EXE

现在更新已完成,客户端已安装最新版本。

关于系统锁定文件等,这个解决方案是否可行?

1 个答案:

答案 0 :(得分:6)

好消息是,您可以重命名在Windows上打开的文件(可执行文件和DLL)。锁可以防止您删除文件,而不是重命名文件。

  1. 当前正在运行的程序在运行时重命名为Application_old.exe
  2. 将下载的程序写入Application.exe
  3. 运行新的Application.exe
  4. 关闭旧的。
  5. 使用新执行的程序删除旧版本。
  6. 这样,您将在更新后自动重启。我一直这样做。