2013-07-18 44 views
4

我有一個註冊Windows資源管理器外殼擴展的應用程序。WiX/MSI:如何在Windows XP上更新註冊的外殼擴展

該應用程序的安裝程序是使用WIX開發的。

我刪除舊的產品我安裝新前:

RemoveExistingProducts Before="InstallInitialize" 

的問題是,這種失敗在Windows XP上。當Windows資源管理器正在使用擴展時,不會感到驚訝。當然,Windows資源管理器通常沒有默認窗口,所以文件在用對話框也不會顯示出來。

所以我的大問題:什麼是使用WiX更新Windows資源管理器外殼擴展的最佳方法?

有沒有比ForceReboot更好的解決方案?

一個想法:前一段我寫了一個NSIS安裝程序,在那裏我通過重命名舊擴展來解決了一個類似的問題。但是這對於WiX來說是不可能的,是嗎?

注意:我要求Windows XP,因爲在Vista或更高版本上,重啓管理器做得很好。

回答

0

附表RemoveExistingProducts緊接在InstallFinalize之前,InstallExecute緊接在RemoveExistingProducts之前的行動。這不僅更有效,而且還能夠替換文件(如果不是硬鎖定)並在重新引導時計劃舊文件的刪除或在重新引導後安排新文件複製舊文件(均使用PendingFileRename) 。