2013-04-03 22 views
1

我想要顯示先決條件已安裝或未安裝在UI對話框中。安裝了ASP.NET功能的IIS是安裝我的安裝程序的先決條件之一。SetProperty中的條件未按預期工作

我已經根據條件在屬性中設置了圖像(右擊或錯誤點擊)。

<Property Id="ASPNETENABLED"> 
     <RegistrySearch Id="IIS_ASPNET_RegKey" Root="HKLM" Type="raw" Key="SOFTWARE\Microsoft\InetStp\Components" Name="ASPNET" /> 
</Property> 

<Property Id="IISico" Value="RightClick" /> 
<SetProperty Id="IISico" Value="WrongClick" After="CostFinalize"><![CDATA[Installed OR ASPNETENABLED OR (IISMAJORVERSION AND (IISMAJORVERSION = "#6" OR IISMAJORVERSION = "#7"))]]></SetProperty> 

<Control Type="Bitmap" Id="IISico" Width="35" Height="17" X="154" Y="105" Text="[IISico]" /> 

Setproperty條件正常工作正常,沒有ASPNETENABLED屬性。但它總是失敗,並顯示ASP.NET未啓用。 我已檢查日誌,它顯示AppSearch操作正在運行時設置ASPNETENABLED屬性。

Action start 18:47:31: AppSearch. 
AppSearch: Property: ASPNETENABLED, Signature: IIS_ASPNET_RegKey 
MSI (c) (90:E4) [18:47:31:927]: PROPERTY CHANGE: Adding ASPNETENABLED property. Its value is '#1'. 

但是IISico屬性在CostFinalize之後運行,它在日誌中顯示如下所示。

Action 18:47:31: SetIISico. 
Action start 18:47:31: SetIISico. 
MSI (c) (90:E4) [18:47:31:930]: PROPERTY CHANGE: Modifying IISico property. Its current value is 'RightClick'. Its new value: 'WrongClick'. 
Action ended 18:47:31: SetIISico. Return value 1. 

我無法找到問題的根本原因。你能幫我解決這個問題嗎?是否有任何其他方式來顯示先決條件已安裝或沒有? 在此先感謝。

回答

2

聽起來好像您希望IISico屬性在未啓用ASP.NET時設置爲"WrongClick"。如果是的話你的病情應該更像:

<SetProperty Id="IISico" Value="WrongClick" After="CostFinalize"> 
    ASPNETENABLED AND (IISMAJORVERSION = "#6" OR IISMAJORVERSION = "#7") 
</SetProperty> 

這個條件說,「運行SetProperty自定義操作,如果ASPNETENABLED定義(又名:不是空字符串),以及IISMAJORVERSION或者是#6#7」。

我不知道你爲什麼在原來的條件中包含Installed。它會使WrongClick在任何時候已經安裝了軟件包。這聽起來不像你所描述的。

+0

感謝羅布。你救了我的命。 – Vinoth