2

我需要在卸载时从现有配置文件中删除元素。这是相关的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"/>

创建操作运行。但是,删除/卸载操作不会运行。它不会修改文件。似乎在卸载过程中跳过了该文件。

4

1 回答 1

1

您已将组件永久属性配置为是。这样,在卸载期间将保留更改。

尝试设置为假。


我已经测试了以下代码,它符合您的要求。你可以在这里
找到完整的测试代码

<Fragment>
<ComponentGroup Id="ProductComponents"
                Directory="INSTALLFOLDER">
  <Component Id="CMP_ConfigFile"
             Guid="{24D22D04-1A98-40D1-83EC-87E68A87A07C}"
             Permanent="yes"
             KeyPath="yes"
             NeverOverwrite="yes">
    <File Id="ConfigFile"
          src="administration.config"></File>
  </Component>
  <Component Id="CMP_XMLConfigInstallChange"
             Guid="{B1B3B46A-0606-44F4-AEB6-58C5019F5C82}"
             KeyPath="yes">
    <util:XmlConfig Id="Add_ElementTest"
                    File="[#ConfigFile]"
                    ElementPath="/configuration/configSections"
                    Action="create"
                    Name="section"
                    Node="element"
                    On="install"
                    Sequence="5000">
      <util:XmlConfig Id="Name_Test"
                      File="[#ConfigFile]"
                      ElementId="Add_ElementTest"
                      Name="name"
                      Value="TEST"></util:XmlConfig>
    </util:XmlConfig>

  </Component>

  <Component Id="CMP_XMLConfig_UninstallChange"
             Guid="{E1A01B17-247E-4717-8DC0-A923A8E90BE4}"
             KeyPath="yes">
    <util:XmlConfig Id="Remove_ElementTest"
                    File="[#ConfigFile]"
                    ElementPath="/configuration/configSections"
                    VerifyPath="/configuration/configSections/section[\[]@name='TEST'[\]]"
                    Action="delete"
                    Node="element"
                    On="uninstall"
                    Sequence="5000">
    </util:XmlConfig>

  </Component>
</ComponentGroup>

于 2013-08-01T09:41:50.743 回答