2012-09-04 70 views
2

如何用新版本替換正在運行的EXE?如何更新正在運行的EXE?

+0

一個常見的方法是創建一個批處理(* .bat),並在關閉當前應用程序之前啓動它...然後,該批次將替換以前的版本... – Whiler

+2

您不能。但是,您可以讓程序A(您的應用程序)啓動程序B(您的更新程序),然後關閉。然後,程序B可以更新程序A(未運行),然後啓動(新的)程序A.然後,如果你願意,程序A可以刪除程序B. –

+2

更新程序啓動程序要容易得多並在開始之前更新) – whosrdaddy

回答

3

短:通過停止它,並開始新版本。

長:啓動應用程序時,操作系統將應用程序加載到內存(或至少需要的部分)中,並設置運行程序的所有內存區域。在應用程序運行時,操作系統不再需要二進制文件(您稱爲EXE)。

如果您想替換正在運行的應用程序中的代碼,可以通過替換代碼段來實現。我不知道在Windows中是可行還是簡單。另一種選擇可能是使用某種插件系統,您可以在應用程序仍在運行時替換這些應用程序的某些部分。

5

你可以做到這一點this way

  1. 重命名運行EXE,
  2. 新版本複製到舊名稱,
  3. 當新版本開始已將其刪除重命名的EXE

請注意,這絕對是not recommended behaviour

+0

如果您的exe文件位於受保護的文件夾中,則會失敗,例如在啓用了UAC的程序文件下 –

+1

事實上:如果您沒有正確的權限或具有阻止它們的策略(只是嘗試在企業環境中生存並且您一定會熟悉),Windows上的任何內容都將失敗。但列舉所有這些都超出了問題的範圍。 –

+0

但這是你總是使用不同的過程來運行更新的原因之一。因爲該過程可以運行提升。 –