2009-06-18 103 views
4

我有一個自動更新系統,在重新啓動時替換我現有的程序文件。 (可以說,這是一個非常複雜的程序,包含許多驅動程序,服務和用戶級別的模塊,實際上沒有其他辦法,請相信我)MoveFileEx與MOVEFILE_DELAY_UNTIL_REBOOT刪除而不是移動

函數MoveFileEx與MOVEFILE_DELAY_UNTIL_REBOOT一起使用來設置此文件替換。我發現它通常工作得很好。但是,如果源文件和目標文件位於不同的驅動器上,目標將被刪除,但源不會移動。結果是,當用戶將軟件安裝在與系統分區不同的驅動器上時,更新將刪除產品文件而不是更新它們。

現在,我看到MOVEFILE_COPY_ALLOWED應該從一個卷移動到另一個文件時可用於MoveFileEx的文件中。但它也表示該標誌不能用於MOVEFILE_DELAY_UNTIL_REBOOT。

問:我如何才能將在重新啓動一個文件,覆蓋現有文件,當源和目標是不一樣的捲上?

回答

2

爲什麼不把文件複製到用戶安裝程序的驅動器上?

據我看到有做你想要僅僅依靠這個功能沒有什麼直接的方式。

同一驅動器上找到可寫入的位置可能是在Vista上的問題,但你提到你的服務 - 如果他們運行與本地系統privilleges讓他們寫新的文件。我已經使用(不工作的司機雖然)

另外一個簡單的更新機制是有專門的更新程序 - 殺/結束一切,讓更新程序完成其工作,並重新開始一切。

+0

+1把文件應用程序目錄的子目錄一個懸而未決重啓 – 2009-06-18 16:34:52