Ошибка «Не действительный внешний ключ» с элементом xmlfile
Вопрос
Я пытаюсь использовать элемент XMLFILE в установщике WIX (v3.5), чтобы обновить строку подключения в веб -сайте. Конфиг, который устанавливается. Но я получаю следующую ошибку в свете.
Не является действительным иностранным ключом; Таблица: XMLFILE, столбец: файл, ключ (S): UpdateConnectionString
Компонент Web.Config и элементы файлов расположены в .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>
Вот компонент, который я использовал совсем недавно в "site.feature.wxs"
<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-ding-installation/
http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg03256.html
Решение
Идентификаторы в MSI и WIX чувствительны к случаям. Ваш XMLFILE использует web.config, но идентификатор файла - web.config.