2010-09-22 2 views
1

Я только хочу перезагрузиться при удалении. Это фрагмент из моего файла WiX:Почему мой установщик всегда запрашивает перезагрузку

<InstallExecuteSequence> 
    ... 
    <Custom Action="CleanRegistry" Sequence="7100">REMOVE~="ALL" AND NOT UPGRADINGPRODUCTCODE</Custom> 
    <ScheduleReboot Sequence="7200">REMOVE~="ALL" AND NOT UPGRADINGPRODUCTCODE</ScheduleReboot> 
</InstallExecuteSequence> 

Запуск сгенерированного MSI производит следующий журнал:

MSI (s) (48:7C) [10:19:29:951]: Skipping action: CleanRegistry (condition is false) 
MSI (s) (48:7C) [10:19:29:951]: Doing action: ScheduleReboot 

Как это возможно, что такое же условие имеет значение Ложь, то правда? Распределяет ли ScheduleReboot свое состояние?

Редактировать: Я также пытаюсь использовать условие REBOOT ~ = "Force", чтобы условно выполнить команду при запросе перезагрузки моим индивидуальным действием. Это условие никогда не оценивает true, и моя команда не запускается. Свойство задается вызовом MsiSetProperty из пользовательского действия. Либо это пользовательское действие не работает, либо я допустил ошибку в моем состоянии! Какие-либо предложения?

+1

Возможно, в вашем запуске MSI ScheduleReboot может быть другое действие. Вы пытались найти его с помощью Orca? –

+0

В моем файле WiX есть только одно действие ScheduleReboot, и журнал установки показывает, что он запускается сразу после того, как мое индивидуальное действие с тем же условием было пропущено. – mchr

ответ

0

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

<ScheduleReboot Sequence="7200">REMOVE~="ALL"</ScheduleReboot> 
1

Некоторое действие может быть связано с заданием свойства REBOOT. Вы должны уметь это видеть в журнале. Наиболее распространенная причина, вероятно, в использовании файлов.

+0

У меня есть обычное действие, которое я ожидаю установить REBOOT = FORCE. Будет ли это причиной того, что ScheduleReboot игнорирует его состояние? – mchr

+0

Я не знаю точную информацию о реализации, но я предполагаю, что все ScheduleReboot делает это, чтобы установить REBOOT = FORCE. По сути, вы сделали то же самое без него. –

+0

Звучит так, как ожидалось, но все же задает вопрос, почему журнал показывает, что действие ScheduleReboot выполнено. – mchr

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