我對WiX比較陌生。這是一個很棒的工具,但我仍然需要一些時間來更好地學習它。 我遇到註冊和註銷COM 組件的問題。我爲兩個應用程序創建了安裝程序,我們稱它們爲A 和B.兩者都使用相同的COM組件。我已經使用了加熱工具,建議使用 。安裝A或B時,組件註冊時沒有任何 問題。WIX:COM在取消兩個程序中的一個時取消註冊
但是,當我安裝A和B,然後刪除A(與添加/刪除程序)的COM 類獲取未註冊和B不能再使用它。有沒有一個乾淨的 解決方案來防止這種情況發生?當B和A都被卸載時,我想取消註冊COM 。
任何幫助,將不勝感激,
最好的問候, madbadger
編輯:感謝您的答覆。我在兩個安裝程序中將GUID設置爲相同的值,現在正在正確刪除註冊表項,即從系統中刪除最後一個程序。
Hovewer,問題仍然存在的原因之一。我已經在HKEY_CLASSES_ROOT/CLSID/[適當的COM GUID]下檢查了註冊表。這是發生了什麼:
- 我安裝A和COM的路徑設置爲[路徑到A/component.dll]
- 我安裝B和COM的路徑設置爲[路徑B/component.dll ]
- 我刪除B和COM的路徑仍然[B/component.dll的路徑]
- 現在由於[B/component.dll的路徑]不存在,A不能通過註冊COM組件不再
現在我認爲必須將COM組件放在兩個應用程序的相同目錄中。 Windows Installer無法恢復到舊路徑,還是我缺少的東西?
我應該把COM組件放在兩個安裝程序的一個位置嗎? system32文件夾是否適合它? – madbadger 2010-03-22 01:52:59
是的,你必須把它放在同一個位置。(Windows安裝程序標識GUID和文件/註冊表路徑)。 System32不是一個好地方。我會建議在普通文件文件夾下的某個地方(通常是「Program Files \ Common Files \ YourCompanyName」)。你可以這樣輸入Wix:'Directory =「[CommonFilesFolder] \ YourCompanyName」' – 2010-03-22 03:26:19
非常感謝你對此的深入解釋! – madbadger 2010-03-22 12:47:53