2012-04-13 72 views
0

我有這樣的要求確定在註冊表中的不同的版本: 早期版本的產品離開回這需要在Visual使用WIX 3.5

方法使用維克斯3.5清理一些註冊表項: 搜索從註冊表 然後,搜索每個註冊表項不匹配產品版本的版本,並執行註冊表操作=刪除。

我該如何做到這一點? 如何在WIX中執行RegistrySearch時存儲產品的所有版本?

任何人都可以提供這個代碼嗎?

回答

0

如果註冊表項對於您的產品是唯一的,並且在安裝產品的最新版本時需要刪除,那麼確實不需要檢查各種以前的版本。只需在安裝過程中刪除註冊表項,而不管以前安裝的是什麼。如果密鑰已經存在,它們將被刪除,如果不存在,則不用擔心。

+0

我懷疑:當我們卸載一個軟件(由安裝shield或WIX創建)時會發生什麼。它是否刪除了在HKCR和HKLM中創建的註冊表值?如果我們使用install shield或WIX註冊COM dll和.net Dll,那麼當我們卸載COM dll時,註冊表項會發生什麼? – rakheep 2012-04-20 14:43:07

+0

一般來說,如果安裝程序寫入註冊表項,它將在卸載時將其刪除,至少取決於安裝程序的創建方式。關於註冊COM dll,取決於他們如何註冊。 InstallShield和Wix都允許您將dll標記爲自注冊(不推薦),這可能會導致註冊表條目在卸載時未被刪除的情況。 InstallShield和WiX都有工具來分析dll並獲取Com信息以寫入註冊表。 WiX工具被稱爲Heat。 – BryanJ 2012-04-20 15:09:06

+0

...忘了提及。 Heat生成的輸出將允許您在卸載時刪除這些COM註冊表項。 – BryanJ 2012-04-20 15:11:07