Ошибка WIX с недопустимым именем элемента документа 'Wix' - PullRequest
1 голос
/ 19 мая 2011

У меня есть несколько файлов WXS, которые создаются с помощью heat.exe. Каждый файл имеет корневой элемент Wix, два дочерних фрагмента, а каждый из элементов 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 как <? Include wixfile.wxs?>. Когда я пытался построить свой проект (я пробовал и в Visual Studio, и в SharpDevelop, я даже пробовал командную строку), я получаю сообщение об ошибке: «Недопустимое имя элемента документа« Wix ». Необходимо включить XML-файл установщика Windows» Включить "в качестве имени элемента документа. (CNDL0048) - C: \ WorkingDir \ anexmcmsetup.wxs: 2". Я не знаю, как исправить эту ошибку. Я ценю вашу немедленную помощь. Спасибо!

Ответы [ 2 ]

4 голосов
/ 08 февраля 2013

У меня была похожая проблема, потому что я неправильно реализовывал фрагменты ...

Хорошее базовое объяснение фрагментов можно найти здесь ...

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

В моем случае

В моем конкретном сценарии я разделил мой установщик на два файла wxs.

  1. Product.wxs - основной XML-файл)
  2. FilesFragment.wxs - XML-файл, содержащий все файлы, которые я получил от жары).

В чем я ошибся, так это в том, что мне нужно было иметь какую-то ссылку для включения в Product.wxs, которая ссылалась бы на FilesFragment.wxs. Подобно тому, как вы сделали бы в проекте C ++. Например, я предполагал, что если я захочу включить дополнительный файл wxs с именем wixfile.wxs в основную установку, мне понадобится что-то вроде

<?include wixfile.wxs?>

Это было неверное предположение. Это отношение устанавливается в вашем файле проекта (оканчивающемся на .wixproj), поскольку он там существует, он знает, что файл существует.

В файле Product.wxs мне нужно было настроить компонент, который имел ComponentGroupRef с идентификатором, который ссылался на идентификатор ComponentGroup в моем файле FilesFragment.wxs.

Пример содержимого файла ...

Файл Product.wxs

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

FilesFragment.wxs file

<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>

Это достигло того, что мне было нужно. Я думаю, это то, что вы пытаетесь сделать?

2 голосов
/ 29 октября 2011

У меня было такое же сообщение об ошибке для включенного файла xws. Я изменил действие сборки для этого файла с «Compile» на «None», и ошибка исчезла.

...