2009-01-20 69 views

回答

2

https://stackoverflow.com/questions/264788/can-i-update-a-exe-that-is-running-closed

是的,你可以有EXEFILE下載本身。只需將運行的exe文件重命名爲.bak,將新的exe文件下載爲.exe,然後重新啓動應用程序。

這裏的關鍵是,你不能在程序運行時下載新版本而不是舊版本,解決方案是你可以重命名正在運行的exe文件,然後下載與正在運行的exe文件具有相同名稱的新文件在重命名之前。然後它只是驗證下載的exe文件的大小並重新啓動程序,你就可以開始運行了!

1

如果你正在做一個.NET應用程序,並且需要一些簡單的東西。微軟有一個click once deployment,可以做你正在尋找的東西。在使用ClickOnce部署之前,我開發了一個基本的更新程序。執行過程發生了,當程序啓動時,它在後臺線程上檢查了新版本的文件。如果有更新可用,它將在該後臺線程下載。如果更新是針對updater可執行文件的,那麼我會替換可執行文件。否則,我會通知用戶更新已準備好進行安裝。他們會保存他們的工作,然後點擊更新按鈕。這將運行updater可執行文件,替換文件並重新啓動程序。這非常簡單,但沒有很好地進行增量更新或版本控制。我還提供了回滾功能,以便在用戶想要回滾到以前的版本時保留被替換的文件。我沒有保留版本的歷史。相反,我認爲最後的版本是一個很好的版本。

4

可執行文件無法替換它自己的文件,但它可以將新的Exe下載到同一目錄中的已知位置或文件名,然後在退出時啓動切換文件的進程,以便進行更新下一個它運行的時間。

如果您仔細考慮,無論如何這是一個更好的方法,因爲您無法確定文件下載是否完成。即使你可以,你是否真的想讓用戶等到下載完成?沒有...更好地讓下載在後臺運行。

+0

這是一個很好的方法,迄今爲止最接近完美:) 得到我upvote,如果沒有更好的回答,直到明天我會接受這一點。 謝謝! – 2009-01-20 00:46:21

0

如果您使用的是.NET Framework,我強烈建議使用ClickOnce。它可以設置爲在每次執行時執行更新。

有幾種方法可以讓ClickOnce更新更新,可以這麼說。我會在這些日子裏寫一篇博客文章。這個想法是讓更新像正常一樣運行,但是當應用程序啓動時顯示更新已更改的對話框,然後重定向用戶再次下載並安裝該exe。發送鍵盤命令可以自動執行該過程。

相關問題