Как указано, тег <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>
<!-- ... -->