現在、Wix (V3.5) インストーラーを変更して、インストールする .NET アプリケーションの Web.config 設定を編集しようとしています。これは通常の ASP.NET アプリケーションでは問題ありませんが、Wix セットアップ プロジェクトを Entity Framework .NET アプリケーションに適用しようとしています。
したがって、私の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 でこれを行う必要がありますか? 事前に感謝します...