2011-04-08 79 views
0

我正在爲我們的應用程序編寫更新程序,並且存在覆蓋文件的問題。這是一個很長的例子。 Test.exe是我們的主要應用程序,update.exe是我們的更新程序應用程序。 Test.exe需要啓動update.exe,然後關閉test.exe。 Update.exe會從我們的網站下載新的更新到臨時目錄,然後複製新的更新。我遇到的問題是Test.exe有更新時,我試圖複製新文件,它說它不能,因爲test.exe仍在使用中。我「相信」會發生這種情況,因爲test.exe仍然在appdomain中運行,因爲update.exe是在關閉該應用程序之前從test.exe啓動的。那麼,我是否嘗試創建一個新的AppDomain並從中啓動update.exe,或者是否有其他方式我沒有看到?請幫忙!如何啓動新應用程序並從任何打開的進程中刪除調用應用程序?

回答

1

這太複雜了。

在Test.Exe中,只要啓動Update.Exe,就退出。

在Update.exe的:

  1. 扔了一個 「請等待」 或 「請稍等」 屏幕。
  2. 從網站下載新的更新。
  3. 將計數器初始化爲0.
  4. 嘗試刪除Test.Exe。如果沒有例外,請跳至步驟6.
  5. 如果計數器小於30(*),則休眠2秒,然後添加一個並返回步驟3.
    否則,我們已經等了整整一分鐘我們仍然無法刪除Test.Exe - 顯示錯誤消息並中止(錯誤退出)。
  6. Test.Exe has been deleted!安裝更新版本。
  7. 啓動TEST.EXE,然後從Update.exe的

結果退出是你等到你能刪除test.exe的,但你永遠不等待一分鐘以上。 (*)如果您的程序可能需要超過60秒纔會在慢速計算機上退出,請調整迭代次數。

相關問題