XmlFile元素的“不是有效的外键”错误

时间:2010-12-08 19:58:21

标签: wix wix3.5

我尝试在WIX(v3.5)安装程序中使用XmlFile元素来更新正在安装的web.config中的连接字符串。但我明白了以下错误。

  

不是有效的外键;表:   XmlFile,列:文件,密钥:   UpdateConnectionString

web.config Component和File元素位于使用Heat收集的.wxs中。以下是" Site.Components.wxs"中的内容:

        <Component Id="Web.config" Guid="{E66D901B-8140-4162-96F3-8A29253659FE}">
            <File Id="Web.config" KeyPath="yes" Source="$(var.WEBSOURCEFOLDER)\Web.config" />
        </Component>

以下是我最近在&#34; Site.Feature.wxs&#34;

中使用的组件
<Directory Id="SiteRoot" Name="SiteRoot">
    ...
    <Component Id="WebConfigChanges" Guid="{A242616E-5515-4E77-8CB3-361A449118A4}" >
      <RegistryValue Id="WebConfigChanged" Root="HKLM" Key="SOFTWARE\CompanyName\ProductName" Name="WebConfigChanged" Value="1" Action="write" Type="string" KeyPath="yes" />
      <util:XmlFile Id="UpdateConnectionString"
          File="[#Web.Config]"
          Action="setValue"
          ElementPath="//configuration/connectionStrings/add[\[]@name=’Default’[\]]/@connectionString"
          Value="[CONNNECTIONSTRING]"/>
    </Component>
  </Directory>

以下是我目前使用的参考页面:

http://ranjithk.com/2009/11/06/wix-update-application-configuration-files-during-installation/

http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg03256.html

1 个答案:

答案 0 :(得分:2)

MSI和WiX中的Ids区分大小写。您的XmlFile使用Web.Config,但文件的ID是Web.config。