1

我想在 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]" />

在没有 ASPNETENABLED 属性的情况下,Setproperty 条件可以正常工作。但它总是失败并显示 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.

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

4

1 回答 1

2

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

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

该条件表示,“SetProperty如果ASPNETENABLED已定义(又名:非空字符串)并且IISMAJORVERSION#6or ,则运行自定义操作#7。”

我不知道您为什么Installed最初包含在条件中。它会WrongClick在软件包已经安装的任何时候进行设置。这听起来不像你描述的那样。

于 2013-04-03T14:28:26.650 回答