运行时如何自我更新应用程序

时间:2019-03-19 17:53:22

标签: windows go

我在Windows中有一个自我更新的独立应用程序。当前的更新过程如下:

  1. 主应用程序从服务器下载文件,并使用临时名称将其保存到磁盘。
  2. 主应用程序执行带有参数的辅助应用程序。
  3. 主要应用退出。
  4. 辅助应用程序重命名临时文件以覆盖主app.exe。
  5. 辅助应用程序执行主应用程序。
  6. 辅助应用程序退出。

以上工作。但是我想知道是否可以在不使用辅助应用程序的情况下做到这一点?尤其是Golang。

2 个答案:

答案 0 :(得分:3)

可执行文件在运行时被锁定。但是,即使您无法删除文件,也可以重命名该文件。因此,将新应用程序下载到一个临时文件,使您的应用程序将app.exe重命名为app-old.exe,然后将临时文件重命名为app.exe。下载开始重命名热之前,也请删除app-old.exe。

答案 1 :(得分:2)

不。当有任何进程在运行时,Windows将锁定写入或删除可执行文件或DLL。

例如,见此SO问题-Locking Executing Files: Windows does, Linux doesn't. Why?

如果可以运行该应用程序的过时版本,并且只需要在下次运行该应用程序时对其进行更新(跳过立即重新启动该应用程序的步骤Secondary app executes main app.),请参见< strong> Sami Sallinen 对重命名正在运行的EXE和DLL的答案。