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

时间:2010-08-30 19:08:25

标签: 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]" />

有什么想法吗?

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:0)

以下是一些其他选项:Forcing an upgrade of a file that is modified during its initial installation。我个人最喜欢伴侣文件方法。