2010-12-08 45 views
0

J'essaie d'utiliser l'élément XmlFile dans un programme d'installation WIX (v3.5) pour mettre à jour la chaîne de connexion dans le fichier web.config en cours d'installation. Mais je reçois l'erreur suivante en lumière.Erreur "clé étrangère non valide" avec l'élément XmlFile

N'est pas une clé étrangère valide; Tableau: xmlFile, Colonne: Fichier, clé (s): UpdateConnectionString

Le composant web.config et les éléments des fichiers sont situés dans un .wxs qui est récolté en utilisant la chaleur. Voici à quoi il ressemble dans « 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> 

Voici la composante que je l'ai utilisé plus récemment dans « 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> 

Voici quelques références page que je l'ai utilisé jusqu'à présent:

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

http://www.mail-archive.com/[email protected]/msg03256.html

Répondre

2

Les ID dans MSI et WiX sont sensibles à la casse. Votre fichier Xml utilise Web.Config mais l'identifiant du fichier est Web.config.

+0

duh! J'aurais juré que je copierais/collerais cette clé ... et probablement à un moment donné. Je comprends maintenant mieux le message d'erreur. Il disait que l'attribut File était la clé avec laquelle il avait des problèmes. J'ai continué à penser qu'il n'aimait pas l'ID 'UpdateConnectionString'. Merci! – Rick