2014-04-06 33 views
1

我已經設法讓我的應用程序檢查我的服務器上的WebService的更新,它會看到是否有更新。但我面對現在真正的問題是,我不知道如何下載的我的應用程序的.exe較新的版本,並取代目前我跑。更新C#應用程序替換.exe文件

總之,我需要知道如何下載我的應用程序的更新版本.exe,並替換當前正在運行的一個。

回答

1

您需要創建一個單獨的引導程序來爲您完成工作,否則應用程序將會運行,因此操作系統將會阻止您覆蓋它。

+0

嗯我看到其他人使用Application.Restart()並替換文件... – user3144640

+0

這隻適用於ClickOnce應用程序。 –

4

那麼實際上你需要創建一個單獨的進程來處理更新步驟。我曾經開發了一個桌面應用程序與接收更新形成一個Web服務器的能力,而我做了通過創建角色爲主要切入點,主要應用不同的工藝。

它啓動主應用程序進程,同時它繼續運行以檢查更新。然後,如果有任何更新它下載到臨時文件夾後,它關閉它,然後它提交新的更新,並再次重新啓動主應用程序之前通知的主要應用。

但是,如果你想堅持一個可執行文件和一個進程。我想這是運行不是由操作系統本身允許的,而你不能取代任何可執行文件。

0

那麼實際上有辦法。幾年前我發現了它。

您無法刪除當前正在執行的.exe程序文件。但你可以移動它。

所以,我從我的Web服務器的更新文件下載到 /updates/myprogram.exe

然後我 1)File.Delete以往任何myprogram.bak文件 2)File.Move的myprogram .exe到myprogram.bak。 3)File.Copy將/updates/myprogram.exe複製到/myprogram.exe位置。 4)詢問用戶是否要重啓,調用Application.Restart()

Voila。您的主程序已解決問題。無需啓動程序。

相關問題