条件在Setproperty中未按预期工作

时间:2013-04-03 13:53:37

标签: installer wix wix3.5

我想在UI对话框中显示是否已安装先决条件。安装了ASP.NET功能的IIS是安装我的设置的先决条件之一。

我根据条件在属性中设置了图像(右键单击或错误点击)。

<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.

我无法找到问题的根本原因。你能帮我解决这个问题吗?有没有其他方法可以显示是否安装了先决条件? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

听起来您希望在未启用ASP.NET时将IISico属性设置为"WrongClick"。如果是这样,你的情况看起来应该更像:

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

该条件表示,“如果定义了SetProperty(又名:不是空字符串)并且ASPNETENABLEDIISMAJORVERSION或{{},请运行#6自定义操作1}}。“

我不知道为什么你原来包含#7。它会在已经安装软件包的任何时候设置Installed。这听起来不像你描述的那样。