2014-09-09 3 views
2

J'ai de l'expérience avec Wix. Initialement, j'avais un fichier de configuration avec une chaîne de connexion (le premier ci-dessous) et l'installateur fonctionnait parfaitement. Maintenant que j'ai ajouté une autre chaîne de connexion, je rencontre des problèmes. XML:Installateur Wix - Mise à jour de plusieurs chaînes de connexion

<util:XmlFile Id="leID2" File="[INSTALLFOLDER]Queue.exe.config" Sequence="3" Action="setValue" ElementPath="/configuration/connectionStrings/add[@name='String1']/@connectionString" Value="metadata=res://*/EntityModels.String1.csdl|res://*/EntityModels.String1.ssdl|res://*/EntityModels.String1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=[DBSERVER];initial catalog=[DBNAME];User=User;Password=password;MultipleActiveResultSets=True;App=EntityFramework&quot;" Permanent="yes" /> 

<util:XmlFile Id="leID3" File="[INSTALLFOLDER]Queue.exe.config" Sequence="4" Action="setValue" ElementPath="/configuration/connectionStrings/add[@name='String2']/@connectionString" Value="metadata=res://*/EntityModels.String2.csdl|res://*/EntityModels.String2.ssdl|res://*/EntityModels.String2.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=[DBSERVER];initial catalog=[SECONDDBNAME];User=User;Password=password;MultipleActiveResultSets=True;App=EntityFramework&quot;" Permanent="yes" /> 

DBSERVER, DBNAME, SECONDDBNAME sont toutes les propriétés étant définies à partir d'une fenêtre d'entrée utilisateur personnalisée. Lors de l'installation, cela est le résultat dans le fichier de configuration:

<add name="String1" connectionString="metadata=res://*/EntityModels.String1.csdl|res://*/EntityModels.String1.ssdl|res://*/EntityModels.String1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=**mydbserver**;initial catalog=**seconddbname**;User=User;Password=password;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient"/> 

<add name="String2" connectionString="metadata=res://*/EntityModels.String2.csdl|res://*/EntityModels.String2.ssdl|res://*/EntityModels.String2.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=[default from project];initial catalog=[default from project];User=User;Password=password;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient"/> 

La première chaîne de connexion prend le nom DBSERVER correctement, mais il prend le nom deuxième DB entré. La deuxième chaîne de connexion reste complètement inchangée par rapport à ce que j'avais dans mon projet de studio visuel. Ce n'était pas modifié.

Des idées?

Répondre

0

Puisque vous utilisez XPATH, vous devez définir cet attribut dans votre noeud util:XmlFile:

SelectionLanguage="XPath" 

Source:

http://wixtoolset.org/documentation/manual/v3/xsd/util/xmlfile.html

Edit:

Essayez ceci:

<util:XmlFile Id="leID2" File="[INSTALLFOLDER]Queue.exe.config" Sequence="3" Action="setValue" ElementPath="/configuration/connectionStrings/add[\[]@name='String1'[\]]/@connectionString" Value="metadata=res://*/EntityModels.String1.csdl|res://*/EntityModels.String1.ssdl|res://*/EntityModels.String1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=[DBSERVER];initial catalog=[DBNAME];User=User;Password=password;MultipleActiveResultSets=True;App=EntityFramework&quot;" Permanent="yes" /> 

<util:XmlFile Id="leID3" File="[INSTALLFOLDER]Queue.exe.config" Sequence="4" Action="setValue" ElementPath="/configuration/connectionStrings/add[\[]@name='String2'[\]]/@connectionString" Value="metadata=res://*/EntityModels.String2.csdl|res://*/EntityModels.String2.ssdl|res://*/EntityModels.String2.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=[DBSERVER];initial catalog=[SECONDDBNAME];User=User;Password=password;MultipleActiveResultSets=True;App=EntityFramework&quot;" Permanent="yes" /> 
+0

Merci pour la réponse rapide, fait la modification, mais toujours le même résultat –

+0

Il y avait un problème dans le * ElementPath *. Essayez de mettre à jour ceci (j'ai mis à jour la réponse) - cela devrait, espérons-le, résoudre votre problème. Vous avez toujours besoin du * SelectionLanguage * défini sur * XPath * –

+0

Excellent, essayé et cela fonctionne parfaitement. Je n'ai jamais soupçonné que quelque chose n'allait pas avec ça parce que ça fonctionnait tant qu'il y avait une seule corde de conn. Merci! –

Questions connexes