2011-07-26 75 views
2

我知道,我能有Updater.exe & MainProgram.exe但我想保持我釋放一個EXE文件。c#應用程序更新程序從內存運行?

我可以從內存中運行updater.exe(updater.exe將包含在mainprogram.exe中),然後關閉mainprogram.exe並讓更新程序在新線程中工作(它將更新mainprogram.exe)?可能嗎?

或者有沒有其他的解決方案,我可以只保留一個單獨發佈的EXE文件?

回答

1

附上updater.exe爲您的應用程序資源,然後將其保存到一個臨時文件並運行。

1

決不做這樣的東西,說實話,但可以分享一些想法上的主題:

  1. 使用CodeDome在運行時編譯的程序集Updater.exe並執行它(不喜歡這個)
  2. 如果從某個位置檢查新的軟件版本/更新,爲什麼不首先從同一位置Updater.exe太下載?

Updater.exe必須非常輕巧+它可以讓你在你決定改變更新了一下(對百萬個理由,你可以有),您只需重新編譯它,並把它的二進制到共享文件夾,而不會影響主機會建立。

我個人不喜歡合併更新與主設置。

希望這會有所幫助。

問候。

+0

+1爲第二個想法! – IDWMaster

0

首先,失去與嵌入和更新記憶「前男友」多管閒事的想法。

試試這個: 從主應用程序檢查更新服務器是否有可用的程序的新版本。如果有,請下載新的exe文件,下載或創建一個簡單的批處理文件,刪除當前的exe文件並重命名新文件,然後分叉並執行批處理文件,然後退出。該批處理文件將稍等片刻,重命名該exe文件,也許啓動新文件並刪除它自己。

0

我已經看到了這解決了2種方式,但我相信有很多更

  1. 使用ClickOnce的功能來自動更新
  2. 使用已啓動,但等待用戶按下OK批處理文件,在提示OK的時候,真正的程序在後臺關閉。然後批處理完成更新並重新啓動應用程序。

兩者都爲我們工作,但我從來沒有完全滿意#2,因爲它需要用戶按下一個鍵。也許你可以加入延遲。