我有安裝產品的MSI安裝程序,該產品有幾個廣泛使用的API DLL。 這些DLL可能會被加載到升級過程中無法控制的進程中(例如,我無法要求用戶關閉explorer.exe或svchost)。 因此,在MSI升級過程中,這些dll被鎖定,無法重新啓動就無法升級。我需要在不重啓的情況下進行升級。 這些API dll是非常穩定的,並且當新版本的這些dll被加載到新的正在運行的進程中時,可以保留舊的進程在舊進程中工作。 因此,當我們沒有使用MSI時,我們只是使用標準技巧 - 重命名文件,將其標記爲在重新引導時刪除,寫入新文件。如何告訴MSI升級鎖定的DLL並避免重新啓動
如何在MSI中執行此操作的最佳方法是什麼? 我應該創建自定義操作來完成這個標準技巧嗎? 或者也許MSI有更好的方法來做到這一點?
謝謝!
這不完全正確。正如我在第一篇文章中所說的,我可以將舊的dll加載到舊的進程中。只有新的會使用新的DLL。 – Oleg 2010-09-08 15:26:50
你的意思是新的DLL使用新名稱和新鉤子?嗯... – ewall 2010-09-08 16:01:56