У меня есть установщик, который связывает файл 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 c: 'foo \ foo2 \ foo.exe
Есть ли способ предотвратить добавление WiX (предположительно компоновщика?) Нескольких копий foo.exe в окончательный файл MSI, при этом все еще связывая foo.exe с wixlib?