我想在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.
我无法找到问题的根本原因。你能帮我解决这个问题吗?有没有其他方法可以显示是否安装了先决条件? 提前谢谢。
答案 0 :(得分:2)
听起来您希望在未启用ASP.NET时将IISico
属性设置为"WrongClick"
。如果是这样,你的情况看起来应该更像:
<SetProperty Id="IISico" Value="WrongClick" After="CostFinalize">
ASPNETENABLED AND (IISMAJORVERSION = "#6" OR IISMAJORVERSION = "#7")
</SetProperty>
该条件表示,“如果定义了SetProperty
(又名:不是空字符串)并且ASPNETENABLED
是IISMAJORVERSION
或{{},请运行#6
自定义操作1}}。“
我不知道为什么你原来包含#7
。它会在已经安装软件包的任何时候设置Installed
。这听起来不像你描述的那样。