在WIX设置中进行配置转换

时间:2013-07-15 13:29:46

标签: msbuild web-config wix installation configuration-files

我正在使用WIX为我的Web应用程序创建一个MSI设置。这是正确的。我唯一无法工作的是启用标准Web应用程序发布方法的配置转换。

据我所知,您可以为现有目标文件添加using标记。我尝试将TransformXml添加到WIX安装程序的项目文件中的AfterBuild目标,但这不起作用。

<TransformXml Source="Web.Config" Transform="Web.$(Configuration).config" Destination="Web.Config" />

有人可以帮助我吗?

我为此创建了一个名为WebApplicationWix

的测试项目

1 个答案:

答案 0 :(得分:2)

我没有在您的示例项目中看到任何提及TransformXml的内容。

您需要与此类似的代码:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile">
  <CallTarget Targets="TransformWebConfiguration" Condition="Exists('web.$(Configuration).config')"/>
</Target>

<Target Name="TransformWebConfiguration">
  <!-- Generate transformed web configuration -->
  <TransformXml Source="web.config" Destination="web.transformed.config" Transform="web.$(Configuration).config" />
</Target>

有几点需要注意:

  1. 检查UsingTask元素中的Microsoft.Web.Publishing.Tasks.dll路径(更改您的Visual Studio版本)
  2. 在您的示例中,源和目标是相同的;你应该确保目标是一个不同的文件,这样你就不会遇到文件锁定问题,或者覆盖你试图用转换过的文件转换的web.config。
  3. 在Visual Studio 2010中,TransformXml存在文件锁定问题,因此如果您使用的是2010,请小心。