在升级操作文件之前,如何强制wix更新文件

Jas*_*son 1 xml wix upgrade

我有一个wix安装程序,它将安装一个XML文件,然后进行修改.安装工作很棒.今天,我需要为这个XML文件添加几个节点.所以我修改了原始文件,然后添加了一些额外的指令给wix来分配这些项目值.

好吧,我每次都说它无法找到节点时出错.我查看并查看它在目录中的文件,它仍然具有没有该节点的旧文件.如何告诉它先替换XML文件然后修改它?我不想使用"CreateElement",因为我不知道如果它已经存在,如何不创建元素(没有尝试过,所以也许它可以工作).此外,我希望我的XML文件是配置的定义.

这是我的XML示例:

      <Component Id="MyProgExeConfigComponent" Guid="*">
    <File
      Id="MyProgExeConfig"
      Name="MyProg.exe.config"
      DiskId="1"
      Source="../Published/MyProg/MyProg.exe.config"
      PatchWholeFile="yes"
      KeyPath="yes"/>
    <util:XmlFile
      Id="MyProgExeConfigUser"
      Action="setValue"
      Permanent="yes"
      File="[INSTALLLOCATION]\MyProg.exe.config"
      ElementPath="/configuration/appSettings/add[\[]@key='UserName'[\]]"
      Name="value"
      Value="[USER]"/>
    <util:XmlFile
      Id="MyProgExeConfigPassword"
      Action="setValue"
      Permanent="yes"
      File="[INSTALLLOCATION]\MyProg.exe.config"
      ElementPath="/configuration/appSettings/add[\[]@key='Password'[\]]"
      Name="value"
      Value="[PASSWORD]" />
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Chr*_*ter 8

Windows Installer可能没有覆盖该文件,因为您有INSTALLMODE = omus并且XML的创建和修改日期不同.

XML文件是它自己组件的密钥文件吗?如果是这样,请尝试使用File @ DefaultVersion属性来诱使Windows Installer认为新文件具有版本#(我们在谷歌搜索时称之为"版本说谎"),因此胜过非版本化文件.您的文件将被覆盖然后您可以从那里应用XML更新.