Удаление элементов XML в WiX

Как вы удаляете/удаляете элемент из XML-файла в WiX?


person David Gardiner    schedule 15.01.2010    source источник


Ответы (2)


Дан файл .config со следующим содержимым:

<configuration>
 <thingy>
  <stuff>
   <item type='value' />
   <item type='value2' />
  </stuff>
 </thingy>
</configuration>

Чтобы удалить элемент элемента с атрибутом типа, для которого установлено значение «значение», это, кажется, помогает:

<util:XmlConfig
  On="install"
  Action="delete"
  Id="RemoveAnElement"
  Node="element"
  File="Application.dll.config"
  VerifyPath="/configuration/thingy/stuff/item[\[]@type='value'[\]]"
  ElementPath="/configuration/thingy/stuff"
  Sequence="100"
/>

Этот элемент XmlConfig определяется расширением Wix «Утилиты». Чтобы использовать это расширение, вы должны объявить пространство имен UtilExtension следующим образом:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
   xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

Вы также должны добавить -ext WixUtilExtension к параметрам команды light.exe или добавить ссылку на «WixUtilExtension.dll», если вы создаете проект wix, используя votive в Visual Studio.

person David Gardiner    schedule 15.01.2010
comment
ElementPath указывает на родителя VerifyPath. Очень полезно, спасибо! - person MK.; 17.05.2012
comment
Используя WiX 3.6, мне также пришлось добавить -ext WixUtilExtension к свече. - person Chris; 03.01.2013

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

В дополнение к приведенному выше ответу, при использовании версии 4.0 ссылка xmlns:util должна выглядеть так:

<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" 
xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util" >

В противном случае вы получите ошибку:

The Component element contains an unhandled extension element 'util:Blah'. Please ensure that the extension for elements in the 'http:⁄⁄schemas.microsoft.com⁄wix⁄UtilExtension' namespace has been provided.

person Elk    schedule 01.05.2013
comment
Спасибо за дополнение информации для v4 - person David Gardiner; 01.05.2013