我目前正在尝试修改我的 Wix(V3.5) 安装程序以编辑我要安装的 .NET 应用程序的 Web.config 设置。这对于普通的 ASP.NET 应用程序来说很好,但现在我试图将我的 Wix 设置项目应用到实体框架 .NET 应用程序,您可能知道该应用程序具有更复杂的连接字符串设置和模型 .csdl 和 .ssdl 设置。
因此,如果我的 web.config 连接字符串设置看起来像这样:(其中 [DBSERVER] 和 [DBNAME] 是从对话框中检索的属性)
<connectionStrings>
<add name="SSITacticalSolutionEntities" connectionString="metadata=res://*/Model.TacticalSolutionModel.csdl|res://*/Model.TacticalSolutionModel.ssdl|res://*/Model.TacticalSolutionModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=sd-sql2008r2;Initial Catalog=SsiTacticalSolution1.2.4;Integrated Security=True;MultipleActiveResultSets=True" />
</connectionStrings>
我在我的 Product.Wsx 文件中编辑我的 Web.config ,如下所示:
<util:XmlFile Id="ModifyConnectionString" Action="setValue" Permanent="yes" File="[INSTALLLOCATION]Web.config"
ElementPath="/configuration/connectionStrings/add[\[]@name='!(loc.EntityName)'[\]]" Name="connectionString"
Value="Data Source=[DBSERVER];Initial Catalog=[DBNAME];Integrated Security=true;providerName=System.Data.EntityClient;MultipleActiveResultSets=True"" Sequence="5"/>
我得到一个这样的连接字符串:
<connectionStrings>
<add name="SSITacticalSolutionEntities" connectionString="Data Source=sd-sql2008r2;Initial Catalog=SsiTacticalSolution1.2.4;Integrated Security=true;providerName=System.Data.EntityClient;MultipleActiveResultSets=True""/>
</connectionStrings>
这当然是有道理的,因为我要求它用我在值中定义的内容替换当前的连接字符串属性。
但我在这里真正需要的是编辑我的连接字符串的特定部分并保留其余部分(我可以在这里使用某种替换操作),即保留我所有的模型设置并替换数据库服务器和名称等我需要。我以前用 Visual Studio 安装程序来做这件事没问题,而且它很容易使用。
所以我的问题是这可以使用 util.XMLFile 或者 util:XmlConfig 来完成吗?我都试过了,没有任何运气。
或者这不可能用 util.XMLFile 做,我必须在 CustomAction 中做这个吗?任何想法都会有很大帮助,在此先感谢...