2012-01-09 24 views
1

我需要在繼續安裝之前檢查系統中是否已安裝某些服務。 也就是說我已添加如何使用自定義動作的條件?

<Condition Message="Svc must be installed"> 
    Installed OR SVC_V1 
</Condition> 

但是我可以檢查它是否僅通過使用自定義操作安裝,因爲Svc是Windows服務。我如何在這種情況下使用CA?

回答

1

實際上,您不需要自定義操作來檢測您的服務。服務中獲得HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\下注冊的,所以你可以使用RegistrySearch

<Property Id="SVC_V1"> 
    <RegistrySearch Id='RegSampleService' 
        Type='raw' 
        Root='HKLM' 
        Name='ImagePath' 
        Key="SYSTEM\CurrentControlSet\services\YourService" /> 
</Property> 

然而要注意的註冊表讀取權限是必需的。

+0

我通常使用自定義操作,因爲我們想知道服務是否設置爲自動並且不僅運行它而且運行它。 – 2012-01-10 01:40:42

+0

確實如此,但他要求「檢查一些服務是否已安裝」。 – KMoraz 2012-01-10 08:12:24

+0

是的,理解。但作爲一名防禦性程序員,通常當有人問這個問題時,這意味着他們對實際運行的服務有依賴性。例如,檢查mssqlserver是否存在和/或正在運行會對安裝程序產生很大影響。 – 2012-01-11 14:08:36

2

自定義操作設置可用於評估條件的屬性。