在 Wix 中,为什么我不能让 XmlConfig、卸载、删除工作? [英] In Wix, why can I not get XmlConfig, uninstall, delete to work?

查看:30
本文介绍了在 Wix 中,为什么我不能让 XmlConfig、卸载、删除工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在卸载时从现有配置文件中删除元素.这是相关的 Wix:

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.

推荐答案

您已将组件 Permanent 属性配置为 Yes.这样,在卸载过程中更改将被保留.

You have configure the component Permanent attribute as Yes. That way the change will be kept during uninstall.

尝试设置为 false.

Try set as false.

我已经测试了以下代码,它符合您的要求.
您可以在此处

I have test the following code, and it meets your requirements.
You can find full test code here

<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>

这篇关于在 Wix 中,为什么我不能让 XmlConfig、卸载、删除工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆