I need to remove elements from an existing config file on uninstall. Here is the relevant Wix:
<Component Id="Dynamics.exe.config" DiskId="1" Permanent="yes">
<File Id="AppConfig" Name="Dynamics.exe.config" Source="$(var.ProgramFilesDir)\Microsoft Dynamics\GP2010\Dynamics.exe.config" KeyPath="yes" />
<util:XmlConfig
Id="AppSettings"
Action="create"
ElementPath="//configuration"
Name="appSettings"
File="[#AppConfig]"
Sequence="1"
VerifyPath="appSettings"
Node="element"
On="install"/>
<util:XmlConfig
Id="AppSettings1"
Action="create"
ElementPath="//configuration/appSettings"
Name="add"
File="[#AppConfig]"
Sequence="2"
VerifyPath="add[\[]@key='AppName'[\]]"
Node="element"
On="install"/>
<util:XmlConfig
Id="AppSettingsKey1"
ElementPath="AppSettings1"
Name="key"
Value="AppName"
File="[#AppConfig]"
Sequence="3" />
<util:XmlConfig
Id="AppSettingsValue1"
ElementPath="AppSettings1"
Name="value"
Value="MyApp"
File="[#AppConfig]"
Sequence="4" />
<util:XmlConfig
Id="AppSettingsRemove1"
Action="delete"
ElementPath="//configuration/appSettings"
File="[#AppConfig]"
Sequence="2"
VerifyPath="add[\[]@key='AppName'[\]]"
Node="element"
On="uninstall"/>
The create Actions run. However, the delete/uninstall Action does not run. It does not modify the file. It seems like the file is being skipped over during an uninstall.
You have configure the component Permanent attribute as Yes. That way the change will be kept during uninstall.
Try set as false.
I have test the following code, and it meets your requirements.
You can find full test code here