C++程序開發,如何解决軟件更新時覆蓋原文件的問題?

CSDN問答 2022-01-07 21:12:19 阅读数:27

c++ 程序 何解 解决 更新

1,假設軟件更新的方式是簡單的文件複制(覆蓋),那麼進程還未關閉的情况下,新版本的文件應該無法覆蓋舊版本的文件。如何解决這一問題?

2,假設軟件更新的方式不止有簡單的文件覆蓋,那麼有哪些更優雅的方式?

(本人菜請輕噴)




采納答案:

實現一個update組件唄,單獨的進程,啟動時先kill主進程,再覆蓋(...),然後退出update時啟動主進程(現在軟件都這麼搞的好嘛)



其他答案2:

樓上的說的很對,先殺進程,更新後,再起動進程 可參考:https://blog.csdn.net/weixin_38739598/article/details/108216486


其他答案3:

假設你原來程序為A,做成兩個程序,小a是新的啟動程序,在啟動器檢查是否要更新程序,需要更新就更新。更新後啟動A程序,小a退出。

A程序運行中需要更新,就先將需要替換的文件寫成帶有更新字樣的文件如 update-controller.dll,先存放一邊,都下載好所有更新文件,啟動小A

退出當前程序執行前面的更新檢查。

如果想運行時更新,需要對程序解耦,以模塊方式加載運行,像控制類功能都放到controller.dll中,類似驅動加載一樣load module進行加載運行,需要更新停止相關組件工作,卸載dll,然後替換後再此加載。

linux 不是.dll, 是.so,但原理一樣。

版权声明:本文为[CSDN問答]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201072112190057.html