2011-08-26 206 views
1

我正在編寫Wix C++自定義操作來檢測SCCM 2012是否已安裝。我正在通過從註冊表中讀取產品GUID來執行此操作:SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\如何檢測SCCM 2012是否安裝?

但是,在安裝了SCCM 2012的系統上沒有這樣的功能,因此在註冊表中沒有這樣的信息。

任何人都可以請指出我在正確的方向來實現這一目標嗎?

我想僅在SCCM 2012安裝時安裝我的軟件。

回答

2

您應該利用Condition這個元素。如果將它放置在產品或片段下,它將作爲啓動條件工作。瞭解更多關於發射條件here

這個條件,你將作者將檢查一個屬性。如果您正在查找的軟件已安裝,並且沒有另行設置(這是最簡單的情況),則應該設置該屬性。爲了實現此目的,請編寫RegistrySearch元素,以便在找到正確的註冊表路徑的情況下定義屬性。 RegistrySearch元素應該是Property元素的子元素。

正如你所看到的 - 這裏沒有自定義操作,那太棒了! :)

+0

非常感謝。這是非常有幫助 – Mark

2

您不應該依賴無證內部來檢測軟件 - 它們可以在沒有警告的情況下更改。 (例如,在升級過程中的產品代碼GUID的變化所以除非SCCM團隊已經表示,他們不會改變它,它可能改變SCCM 2012 RTM,甚至2012的更新。)

相反,看看球隊有記錄了一種檢測它的方法。大多數團隊記錄一個註冊表值,以檢測安裝了哪個版本等。如果他們不這樣做,你可能會更願意看註冊表,因爲價值觀不太可能消失。

+0

非常感謝:) – Mark