У меня есть установщик, который связывает wixlib. Wixlib устанавливает исполняемый файл в несколько каталогов.
Когда я включаю «Привязать файлы в файл библиотеки» для wixlib (используя ключ -bf), lit.exe добавляет исполняемый файл в wixlib. Однако, когда я связываю wixlib в MSI, исполняемый файл добавляется несколько раз в MSI-файл, увеличивая размер установщика.
Когда я отключаю «Привязать файлы в файл библиотеки», проблема не возникает (но, очевидно, мне нужно настроить проект установщика WiX, чтобы знать, где найти исполняемый файл, а не находить внутри wixlib).
С ключом -bf и без него конечные файлы MSI выглядят одинаково при просмотре с помощью orca, поэтому я пытаюсь понять, почему в первом случае MSI необходимо включать несколько копий.
Файл wixlib wxs выглядит так:
<Fragment>
<ComponentGroup Id="cmpFoo1">
<ComponentRef Id="cmpFooExe1" />
</ComponentGroup>
<DirectoryRef Id="TARGET_PATH1">
<Component Id="cmpFooExe1" Guid="*">
<File Id="filFooExe1" Name="foo.exe" KeyPath="yes" Source="$(var.source_path)\foo.exe" />
</Component>
</DirectoryRef>
<ComponentGroup Id="cmpFoo2">
<ComponentRef Id="cmpFooExe2" />
</ComponentGroup>
<DirectoryRef Id="TARGET_PATH2">
<Component Id="cmpFooExe2" Guid="*">
<File Id="filFooExe2" Name="foo.exe" KeyPath="yes" Source="$(var.source_path)\foo.exe" />
</Component>
</DirectoryRef>
<Feature Id="ftFooFeatures" Level="1">
<ComponentGroupRef Id="cmpFoo1"/>
<ComponentGroupRef Id="cmpFoo2"/>
</Feature>
</Fragment>
И файл установщика wxs вроде:
<Product Id="MyProduct" Name="ProductName" Language="1033" Version="1.0.0.0" Manufacturer="MyCompany" UpgradeCode="{UpgradeCode_Guid}">
<!-- ...etc... -->
<Directory Id="ROOT_TARGET_PATH" Name="Foo">
<Directory Id="TARGET_PATH1" Name="Foo1" ComponentGuidGenerationSeed="{Guid1}" />
<Directory Id="TARGET_PATH2" Name="Foo2" ComponentGuidGenerationSeed="{Guid2}" />
</Directory>
<Feature Id="ftMain" Level="1">
<FeatureRef Id="ftFooFeatures" />
</Feature>
<!-- ...etc... -->
</Product>
Ожидается, что окончательный список установки будет выглядеть примерно так:
C: \ Foo \ foo1 \ foo.exe
с: 'Foo \ foo2 \ foo.exe
Есть ли способ запретить WiX (предположительно, компоновщику?) Добавлять несколько копий файла foo.exe в окончательный файл MSI, в то же время связывая foo.exe с файлом wixlib?