WIX - 在安装期间更改配置文件

时间:2014-07-06 14:55:15

标签: asp.net wix

我有一个ASP.NET项目,一个针对它的WIX安装程序项目,以及一个安装程序的构建文件。构建文件:

  • 构建我的项目
  • 将网站发布到目录(SetupFiles/publish/
  • WIX' {#1}}'收获网站的文件
  • 之后使用heat.execandle.exe
  • 创建安装程序

我想在安装过程中修改其中一个配置文件(从light.exe目录中获取的Web.Release.config)。我找到了以下代码:

SetupFiles/publish

来自this问题。

我的问题是,我应该在File的标签Source属性中写什么?如果我写<Component Id="ChangeConfig" Guid="[YOUR_GUID_HERE]"> <File Id="App.config" Name="MyApplication.exe.config" Vital="yes" KeyPath="yes" Source="[Path to project dir]\app.config" /> <util:XmlFile Id="AppConfigSetConnStr" Action="setValue" Permanent="yes" File="[#App.config]" ElementPath="/configuration/connectionStrings/add[\[]@name='MyDatabaseName'[\]]" Name="connectionString" Value="Your Connection string values here" /> </Component> ,则light.exe会出现以下错误:

SetupFiles/publish/Web.Release.config

如果我只写 D:\Works\Employer\MyProject12345\trunk\Project.Setup\SetConfigFile.wxs(7): er ror LGHT0204: ICE30: The target file 'cktmp8gm.con|Web.Release.config' is insta lled in '[TARGETDIR]\Inetpub\Proje\' by two different components on an LFN syst em: 'cmpA0B9415D5BC7EAB6CA7F504326ED1B32' and 'ChangeConfig'. This breaks compo nent reference counting. [D:\Works\Employer\MyProject12345\trunk\Project.Setup\ setup.build] ,则light.exe表示无法找到该文件。

我尝试Web.Release.config[INSTALLDIR]/Web.Release.config是我的设置项目中的变量),但在这种情况下,light.exe也说它无法找到该文件。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

为什么要更改Wix项目中的web.release.config,确实Web.release.config已在其中进行转换,在构建过程中应用于Web.config。如果您需要一组不同的转换,请创建不同的构建配置文件。

转换后,然后收集包含在部署包中的Web.config,然后Wix需要/可以在安装过程中根据用户选择的选项更改此设置。在这种情况下,您将使用WixTolset的xmlConfig操作。请参阅以下链接。

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

答案 1 :(得分:0)

您误解了如何使用util:XmlFileheat.exe已经制作了<File Id="App.config" ...的组件?正确?如果是 - 那么您需要将<util:XmlFile Id="AppConfigSetConnStr" Action="setValue" ...添加到此组件。

即:

<Component Id="heat_generated_something" ....>
  <File Id="heat_generated_app.config" ... />
  add this-> <util:XmlFile Id="AppConfigSetConnStr" Action="setValue" ... /> 
</Component>