Действие WIX XmlConfig не выполняется при откате исправления - PullRequest
3 голосов
/ 17 января 2011

У меня есть компонент, который выполняет несколько действий XmlConfig: одно при установке и одно при удалении:

  <Component Id="machine.config.Update" Guid="573DF5B0-438D-498d-8919-C4B96835C1EF">
    <RegistryKey Root="HKLM" Key="[REGISTRYKEY]\Settings\[TITLE]" Action="createAndRemoveOnUninstall">
      <RegistryValue Action="write" Type="integer" Name="MACHINEMEMORYLIMIT" Value="1" KeyPath="yes"/>
    </RegistryKey>
    <util:XmlConfig
      Id="CacheNode.memoryLimit.add"
      File="[WindowsFolder]\Microsoft.NET\[FRAMEWORKDIR]\v2.0.50727\CONFIG\machine.Config"
      Action="create"
      ElementPath="/configuration/system.web/processModel"
      Name="memoryLimit"
      Node="value"
      On="install"
      Value="90" />
    <util:XmlConfig
      Id="CacheNode.memoryLimit.remove"
      File="[WindowsFolder]\Microsoft.NET\[FRAMEWORKDIR]\v2.0.50727\CONFIG\machine.Config"
      Action="delete"
      ElementPath="/configuration/system.web/processModel"
      VerifyPath="/configuration/system.web/processModel"
      Name="memoryLimit"
      Node="value"
      On="uninstall" />
  </Component>

Компонент является частью патча, который я могу установить и выполнить откат. Проблема в том, что действие удаления не запускается при удалении патча. Странная часть заключается в том, что то же действие XmlConfig выполняется, если я изменил его на On="install". Я вижу, что ключ реестра удаляется при удалении. Почему также не запускается действие XmlConfig? Я проверил логи и не увидел ни ошибок, ни объяснений, почему этого не произошло.

Обновление: Действие XmlConfig работает при полной деинсталляции. Только не при откате патча.

Ответы [ 2 ]

1 голос
/ 19 января 2011

Получил ответ из списка рассылки wix-пользователей.

Роб Меншинг: «Добавление пользовательских действий в патчи работает не очень хорошо. Патчи по существу применяют преобразование к существующему MSI, а затем восстанавливают MSI. В случае удаления исправления преобразование удаляется и MSI восстанавливается. Очевидно, что если пользовательский действие преобразуется с преобразованием, то у него нет шансов на выполнение.

Установщик Windows выполняет особые действия, чтобы отслеживать состояние MSI до и после преобразования, чтобы они могли правильно удалять данные. "

Они также говорили о том, что в MSI 4.5 есть функция, которая может позволить вам это сделать, но WIX необходимо было поддерживать совместимость с более ранними версиями, и все еще были некоторые проблемы с хранением данных.

Короче говоря, пользовательские действия при удалении патча не работают в WIX.

0 голосов
/ 17 января 2011

Я проверил ваш образец (почти) как есть, у него все отлично работает. Проблема может быть в вашей собственности FRAMEWORKDIR. Убедитесь, что он установлен как на установку, так и на удаление правильно.

Возможно, он возвращается к значению по умолчанию для потока удаления, и атрибут удаляется, но из другого файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...