Обнаружен повторяющийся символ «Файл: X.dll», но файлы имеют разные пути - PullRequest
0 голосов
/ 01 октября 2019

Когда я компилирую свой проект WIX, я получаю следующие ошибки:

ошибка LGHT0091: Найден повторяющийся символ «Файл: X.dll». Обычно это означает, что идентификатор дублируется. Убедитесь, что все ваши идентификаторы данного типа (файл, компонент, функция) уникальны.
ошибка LGHT0092: расположение символа, связанного с предыдущей ошибкой.

Мои компоненты определены следующим образоми на каждом из элементов <file> происходят две ошибки.

<!-- ... -->
<Component Id="AXdll" Guid="{12CFD2B0-CB29-458C-BCEF-35C9AFA88363}" Directory="A">
    <File KeyPath="yes" Source="!(bindpath.A)\X.dll" />
</Component>
<!-- ... -->
<Component Id="BXdll" Guid="{3DE33C12-72FD-412A-8685-BE4A6FB5A538}" Directory="B">
    <File KeyPath="yes" Source="!(bindpath.B)\X.dll" />
</Component>
<!-- ... -->

Два файла X.dll - это разные файлы, которые находятся в разных каталогах.

1 Ответ

0 голосов
/ 01 октября 2019

Как указано, тег <file> не имеет атрибута ID. Когда WIX сталкивается с этим, он создает идентификатор по умолчанию. Он делает это, беря только имя файла атрибута Source. Таким образом, не имеет значения, что эти два файла находятся в разных каталогах, они по-прежнему имеют одинаковый идентификатор «X.dll».

Чтобы исправить это, необходимо явно дать атрибутам идентификатора что-то вроде этого:

<!-- ... -->
<Component Id="AXdll" Guid="{12CFD2B0-CB29-458C-BCEF-35C9AFA88363}" Directory="A">
    <File ID="A_X.dll" KeyPath="yes" Source="!(bindpath.A)\X.dll" />
</Component>
<!-- ... -->
<Component Id="BXdll" Guid="{3DE33C12-72FD-412A-8685-BE4A6FB5A538}" Directory="B">
    <File ID="B_X.dll" KeyPath="yes" Source="!(bindpath.B)\X.dll" />
</Component>
<!-- ... -->
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...