我正在編寫一些代碼來通過從ftp站點獲取新的dll,根據清單文件來更新應用程序,也在ftp站點上,該站點指定了每個dll的版本。基本的想法是,一個更新程序在啓動時運行,它檢查FTP站點上的清單,下載比應用程序當前使用的DLL更新的DLL,然後啓動應用程序並關閉它。ftp站點的本地/遠程訪問同步
這導致了以下問題,我不知道最好的處理方式:假設我想在ftp站點上放一個新的dll,但同時一個更新應用程序實例試圖讀取DLL。如果我刪除dll,然後複製新的dll,updater可能看不到該文件,即使清單說明它應該在那裏。
我有一種標記文件的想法,它將作爲一個同步對象,其存在我和更新實例可以用作鎖,但不僅僅是移動問題?在檢查鎖是否存在以及鎖定其他人可以鎖定並開始修改ftp文件之間還有一段時間。另外,如果某些更新程序在刪除標記之前崩潰,則無法判斷是否應刪除剩餘標記。
編輯:我還看到了一個建議,將文件上傳到另一個文件夾,然後重命名該文件夾,因爲重命名應該是ftp中的原子操作,但是可以將該文件夾重命名爲現有的文件夾?不應該先刪除現有的文件夾,從而導致同樣的問題?
有沒有解決這個問題的標準方法?
謝謝。我認爲它可以工作。由於清單指定要使用哪個dll版本,因此在同一時間創建兩個dll版本並沒有什麼壞處。一旦新的DLL被上傳,我複製新的清單到網站。在版本之間的重疊中,客戶必須弄清楚哪個是最新的清單版本,但這當然是可行的。我想,我會堅持一些簡單的事情,但如果沒有其他答案來臨,我會接受這個。 – Boris 2010-12-03 15:31:19