我有一个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]" />
有什么想法吗?
答案 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。我个人最喜欢伴侣文件方法。