在单独的目录中将多个Web.config文件添加到WIX安装程序

时间:2013-08-19 19:29:26

标签: asp.net wix installer

我正在为我的ASP.net应用程序创建一个Wix安装程序包,但是在尝试添加多个Web.config文件时出现错误,即使它们位于不同的目录中。

到目前为止我的代码看起来像这样:

<Directory Id="INSTALLLOCATION" Name="Site" >
  <Component Id="Web.Config" Guid="F9D6C6E5-887E-4D90-BDEB-5D16AAA8F194">
    <File DiskId="1" KeyPath="yes" Source="$(var.SolutionDir)\publish\Web.config" />
  </Component>
  <Directory Id="Account.Dir" Name="Account">
    <Component Id="Account.Web.Config" Guid="53FC1820-3ADD-41C0-92D6-9A66348C33A4">
      <File DiskId="1" KeyPath="yes" Source="$(var.SolutionDir)\publish\Account\Web.config" />
    </Component>
  </Directory>
</Directory>

<Feature Id="DefaultFeature" ConfigurableDirectory="TARGETDIR" Level="1">
  <ComponentRef Id="Web.Config"/>
  <ComponentRef Id="Account.Web.Config"/>
<Feature>

我收到的错误消息是:"Duplicate symbol 'File:Web.config' found. This typically means that an Id is duplicated. Check to make sure all your identifiers of a given type (File, Component, Feature) are unique."

据我所知,您无法使用WIX两次安装相同的文件,但这些是不同位置的不同文件,只有相同的名称。当我重命名其中一个文件时,安装程​​序按预期工作,但这没有帮助,因为这两个文件都需要命名为Web.config。我不认为ID或GUID是一个问题,因为它们是唯一的,并且更改文件名有效。

有没有人有想法?

2 个答案:

答案 0 :(得分:1)

错误消息正确但不承认WiX正在生成Id。为了减少混乱,连续版本的WiX越来越多地允许省略某些属性,因为它们通常不需要在创作的其他部分中引用。

根据schema documentation文件/ @Id必须是唯一的。

  

此File元素的唯一标识符。如果你省略Id,它   默认为Source属性的文件名部分,如果   指定。可以通过指定[#value]来引用它作为属性。

您只需要一个或两个File元素的Id属性,以便分配和生成的File / @ Id元素是唯一的。

答案 1 :(得分:0)

为每个文件元素指定唯一的ID属性:

<File Id="Web" DiskId="1" KeyPath="yes" Source="$(var.SolutionDir)\publish\Web.config" />

   <File Id="Account" DiskId="1" KeyPath="yes" Source="$(var.SolutionDir)\publish\Account\Web.config" />