登录
首页 >  Golang >  Go问答

更新应用程序的方法在运行时

来源:stackoverflow

时间:2024-03-22 22:45:34 404浏览 收藏

在 Windows 系统中,如何实现自我更新的独立应用程序,同时避免使用辅助应用程序?本文探讨了这一问题,指出可执行文件在运行时被锁定,导致无法直接重命名或删除。不过,文章提供了替代方案,包括将新应用程序下载到临时文件,重命名正在运行的应用程序为旧名称,然后将临时文件重命名为新应用程序名称。

问题内容

我在 Windows 中有一个自我更新的独立应用程序。目前的更新流程为:

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

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


解决方案


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

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

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

如果可以运行应用程序的过时版本,并且您只需要在下次运行时更新它(跳过立即重新启动应用程序的步骤 Secondary app 执行 main app.),那么请参阅Sami Sallinen关于重命名正在运行的 EXE 和 DLL 的答案。

本篇关于《更新应用程序的方法在运行时》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>