WIX错误文档元素名称“Wix”无效

时间:2011-05-19 15:59:42

标签: wix wix3

我有多个由heat.exe生成的wxs文件。每个文件都有一个根元素Wix,两个子Fragment,每个Fragment元素分别有一个DirectoryRef和ComponentGroup元素。样本如下:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="ANEXMCM">
            <Component Id="cmp06C5225B7EE36AAEA9ADB0AF882F1053" Guid="2924A2A0-D7A2-407E-B9B8-B40AAE1204ED">
                <File Id="filABF39DC4BC6ED4474A2C2DB1C1681980" KeyPath="yes" Source="SourceDir\content.txt" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="ANEXMCM_CID">
            <ComponentRef Id="cmp06C5225B7EE36AAEA9ADB0AF882F1053" />
        </ComponentGroup>
    </Fragment>
</Wix>

我将文件包含在主要的WIX文件中&lt;?include wixfile.wxs?&gt; 。当我尝试构建我的项目时(我尝试了Visual Studio和SharpDevelop,我甚至尝试过命令行),我得到的错误是“文档元素名称'Wix'无效.Windows Installer XML包含文件必须使用'包含'作为文档元素名称。(CNDL0048) - C:\ WorkingDir \ anexmcmsetup.wxs:2“。我不知道如何修复此错误。感谢您的直接帮助。谢谢!

2 个答案:

答案 0 :(得分:4)

我遇到了类似的问题,因为我没有正确实现片段......

可以在这里找到片段的基本解释......

http://wix.tramontana.co.hu/tutorial/upgrades-and-modularization/fragments

在我的实例中

在我的特定场景中,我将安装程序拆分为两个wxs文件。

  1. Product.wxs - main xml file)
  2. FilesFragment.wxs - 包含我从加热获得的所有文件的xml文件。
  3. 我出错的地方是我认为我需要在Product.wxs中使用某种类型的引用来引用FilesFragment.wxs。类似于你在c ++项目中的表现。例如,我假设我想在我的主安装中包含一个名为wixfile.wxs的附加wxs文件,我需要某种

    <?include wixfile.wxs?>

    这是一个不正确的假设。这个关系在你的项目文件中设置(以.wixproj结尾),由于它存在,它知道文件存在。

    在Product.wxs文件中,我需要设置一个功能,该功能具有一个ComponentGroupRef,其ID在我的FilesFragment.wxs文件中引用了ComponentGroup ID。

    文件内容示例......

    Product.wxs文件

     <Feature Id="ProductFeature" Title="Setup MaxCut" Level="1">
      <ComponentGroupRef Id="FilesFragment" />
    </Feature>
    

    FilesFragment.wxs文件

    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="APPLICATIONFOLDER">
            <Component Id="xyz" Guid="{abc...}">
                <File ... />
            </Component>
        ...       
        </DirectoryRef>
    </Fragment>
    ...
    
    <Fragment>
        <ComponentGroup Id="FilesFragment">
            <ComponentRef Id="xyz" />
        </ComponentGroup>
    </Fragment>
    

    这实现了我的需要。我认为这也是你想要做的事情?

答案 1 :(得分:2)

我对包含的xws-File有相同的错误消息。我将此文件的构建操作从“编译”更改为“无”,错误消失。