【问题标题】:Wix Installer - Updating more than one connection stringWix 安装程序 - 更新多个连接字符串
【发布时间】:2014-09-10 02:40:26
【问题描述】:

我对 Wix 有一些经验。最初我有一个带有一个连接字符串(下面的第一个)的配置文件,安装程序运行良好。现在我添加了另一个连接字符串,我遇到了问题。 XML:

<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 都是从自定义用户输入窗口设置的属性。当我安装时,这是配置文件中的结果:

<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"/>

所以第一个连接字符串正确地采用了 DBSERVER 名称,但它采用了输入的第二个 DB 名称。 第二个连接字符串与我在 Visual Studio 项目中的内容完全保持不变。它没有被修改。

有什么想法吗?

【问题讨论】:

    标签: c# wix installation windows-installer connection-string


    【解决方案1】:

    由于您使用的是XPATH,因此您需要在您的util:XmlFile 节点中设置此属性:

    SelectionLanguage="XPath" 
    

    来源:

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

    编辑:

    试试这个:

    <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" />
    

    【讨论】:

    • 感谢您的快速回复,进行了更改,但结果仍然相同
    • ElementPath 中存在问题。尝试更新这个(我已经更新了答案) - 这应该可以解决你的问题。您仍然需要将 SelectionLanguage 设置为 XPath
    • 很好,试过了,效果很好。我从不怀疑这有什么问题,因为只要只有一个 conn 字符串,它就可以工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    相关资源
    最近更新 更多