ComponentGroupRef не работает с библиотекой WiX

Я создал библиотеку в WiX с одной ComponentGroup, Component и File, таким образом:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
  <ComponentGroup Id="MyComponentGroup" Directory="WindowsFolder">
    <Component Id="MyComponent" Guid="...">
      <File Id="MyFile" Source="file.txt" KeyPath="yes" />
    </Component>
  </ComponentGroup>
</Fragment>
</Wix>

Затем я создал проект WiX, добавил ссылку на эту библиотеку (как ссылку на проект), и я использую этот код:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="My Product" Language="1033"
         Version="1.0.0.0" Manufacturer="Myself"
         UpgradeCode="xxxxx">
  <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

  <Feature Id="Feature_Product" Title="Main Product"
         Level="1" Absent="disallow" Description="Core functionality.">
    <ComponentGroupRef Id="MyComponentGroup" />
  </Feature>
</Product>

<Fragment>
  <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="WindowsFolder" />
  </Directory>
</Fragment>
</Wix>

Но я получаю сообщение об ошибке Unresolved reference, Я что-то пропустил? Или библиотеки работают только с пользовательским интерфейсом, а не с файлами?

РЕДАКТИРОВАТЬ:

Я добавил полный код.

И это работает, если я использую FeatureRef и я двигаю Feature в библиотеку, но я хотел бы сохранить функцию в основном проекте и иметь только Component в библиотеке.

1 ответ

Решение

Вы не опубликовали всю свою ошибку, но ошибка, которую я получаю при использовании вашего примера:

Неразрешенная ссылка на символ "Медиа:1" в разделе "Фрагмент:"

Неразрешенная ссылка - это отсутствующий медиа-элемент; Файл должен храниться в шкафу, и по умолчанию он File/@DiskId="1" вот почему он ищет "Media:1". Вы должны указать WiX, где хранить установочные файлы. Если вы используете WiX 3.7, добавьте это в свой <Package> элемент:

<MediaTemplate EmbedCab="yes" />

Если вы используете более раннюю версию:

<Media Id="1" Cabinet="Cab1.cab" EmbedCab="yes" />
Другие вопросы по тегам