2013-04-03 2 views
1

Я хочу отобразить Предварительные требования установлены или нет в диалоговом окне пользовательского интерфейса. IIS, установленный с включенной функцией ASP.NET, является одним из предварительных условий для установки моей установки.Состояние не работает должным образом в 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]" /> 

Состояние заданного состояния работает нормально, как и ожидалось, без свойства ASPNETENABLED. Но он всегда терпит неудачу и показывает, что ASP.NET не включен. Я проверил журнал, он показывает, что свойство ASPNETENABLED задано при запуске действия AppSearch.

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 было установлено в "WrongClick", когда ASP.NET не включен. Если это так ваше состояние должно выглядеть как:

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

Это условие говорит, «Выполнить SetProperty пользовательское действие, если ASPNETENABLED определяется (иначе: не пустая строка), и что IISMAJORVERSION либо #6 или #7

Я не знаю, почему вы включили Installed в состояние первоначально. Это сделало бы WrongClick установленным в любое время, когда пакет уже был установлен. Это не похоже на то, что вы описали.

+0

Спасибо, Роб. Вы спасли мою жизнь. – Vinoth

Смежные вопросы