我在Windows中有一个自我更新的独立应用程序。当前的更新过程如下:
以上工作。但是我想知道是否可以在不使用辅助应用程序的情况下做到这一点?尤其是Golang。
答案 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的答案。