3 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個贊
建議程序本身和控制程序升級的程序分開,也就是2個exe。
同時服務(wù)端發(fā)布一個清單列表,里面包含構(gòu)成當(dāng)前運(yùn)行exe的各個組成部分的字節(jié)數(shù)及其MD5,以及版本,這樣控制升級的exe可以通過檢測清單列表里的內(nèi)容來判定哪些部分需要更新(單獨(dú)更新哪些dll還是程序整體)。程序啟動的時候保證更新的程序同時也是啟動的,其他的邏輯由控制程序來控制,當(dāng)程序退出后不再鎖定工作目錄,更新程序完成更新。
更新程序如果本身也是有可能升級的,這種情況如果也有很大可能會出現(xiàn),則可以在服務(wù)端也設(shè)置一個配置接口,在需要更新時,用瀏覽器跳轉(zhuǎn)進(jìn)行數(shù)據(jù)更新程序整體的安裝包。
這樣的話,假設(shè)程序本身為A, 負(fù)責(zé)更新的程序?yàn)閡pdate,角色關(guān)系如下
A的更新由update負(fù)責(zé),update的跟新由瀏覽器下載負(fù)責(zé)

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個贊
專門準(zhǔn)備一個簡單的updater的程序(可以用參數(shù)調(diào)整配置就好)
啟動的時候(或者不定期)把updater打開,如果沒有更新就自己退出
如果有更新就關(guān)掉主程序(當(dāng)然需要用戶確認(rèn)),開始升級,完成后重新打開主程序,然后自己悄悄退出

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個贊
在你的程序入口,先查看本地update目錄有沒有update的文件,如果有就先update那些dll,之后在load程序的dll,然后程序啟動。程序啟動后要有個update進(jìn)程負(fù)責(zé)檢查有么有update,如果有就負(fù)責(zé)下載update,下載完成后,提醒用戶有update,用戶選擇update就重新啟動程序。
這樣只需要一個exe就可以了,不過這個exe不能被update,所以這個exe里面只能包含最精簡的邏輯
添加回答
舉報