Wix XML错误 - 当Component元素嵌套在Directory元素下时,无法指定Component / @ Directory属性

时间:2014-10-16 20:19:32

标签: wix wix3.6

第一次做一些Wix练习,所以我是全新的。

这是我的简短剧本:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="SampleMSI" Language="1033" Version="1.0.0.0" Manufacturer="Nunya" UpgradeCode="b2c39f9b-1de1-433e-bc59-a3548cc531b9">

        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Description="Installs Signout Utility" Keywords="Practice,Signout,Utility,MSI,Installer" />

        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate />

        <Feature Id="ProductFeature" Title="SampleMSI" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="INSTALLFOLDER" Name="SampleMSI" />
         <Directory Id="APPFOLDER" Name="APPDir" >
         </Directory>
            </Directory>
        </Directory>
    </Fragment>

    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      <Component Id="CMP_ADispOCX"
              Guid="5E23B839-35CA-480E-8AFC-2E914BA8E32A"
              Directory="INSTALLLOCATION">
      <File Id="FILE_ADispocx"
              Source="ADisp.ocx"
              KeyPath="yes" />
        </Component>
     <Component Id="CMP_Abtn32ocx"
              Guid="98B357F2-C295-4019-A878-885E56AA3BF3"
              Directory="INSTALLLOCATION">
      <File Id="FILE_Abtn32a20ocx"
              Source="btn32a20.ocx"
              KeyPath="yes" />
        </Component>
   </ComponentGroup>
    </Fragment>
</Wix> 

我只是想确保他们要去同一个文件夹,进行基本的安装检查。 (这是我的第一次)

但我得到了这个错误: 错误2当Component元素嵌套在Directory元素下时,无法指定Component / @ Directory属性。

我为每个组件ID获取两次。

我错过了什么吗?我使用Wix 3.6 A开发者指南作为参考。

编辑:旁边的问题......如何指定确切的路径?喜欢C:\ Herp \ Derp

1 个答案:

答案 0 :(得分:2)

如果已经在ComponentGroup元素中这样做,则不需要指定Component的目录。删除片段中两个Components元素中的Directory属性。

将您的代码更改为此

    <Fragment>
            <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
          <Component Id="CMP_ADispOCX"
                  Guid="5E23B839-35CA-480E-8AFC-2E914BA8E32A">

          <File Id="FILE_ADispocx"
                  Source="ADisp.ocx"
                  KeyPath="yes" />
            </Component>
         <Component Id="CMP_Abtn32ocx"
                  Guid="98B357F2-C295-4019-A878-885E56AA3BF3">

          <File Id="FILE_Abtn32a20ocx"
                  Source="btn32a20.ocx"
                  KeyPath="yes" />
            </Component>
       </ComponentGroup>
</Fragment>