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