Как удалить/удалить элемент из XML файла в WiX?
Удаление элементов XML в WiX
Ответ 1
Учитывая файл .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 с использованием обету в визуальной студии.
Ответ 2
Я знаю, что это старо, но я искал всюду для своей проблемы и никогда не мог найти ее, пока я, наконец, не наткнулся на ответ. Так что, возможно, разместив здесь, кто-то найдет это полезным.
В дополнение к вышеуказанному ответу, если использовать V4.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.