Как отметил @Trampster, heat.exe не справляется с сбором записей в реестре с серверов COM. Я попытался, но результаты были неполными.
Вместо этого, следуя рекомендациям Monitor Registry Accesses (InstallSite Tools: Monitoring), я использовал InstallShield RegSpyUI. Это предположительно поставляется с версиями Installshield v7 и выше, включая оценочную версию. Эта информация может быть устаревшей; Я могу подтвердить, что это не поставляется с довольно бесполезным Installshield LE, который поставляется с VS2013.
К счастью, у меня была копия InstallShield 2010, и это действительно было с RegSpyUI.
Во всяком случае, RegSpyUI был легкий ветерок: укажите его на COM .exe, извлеките информацию о реестре в .reg-файл. Затем с помощью тепла, чтобы собрать это в .wxs файл вы можете добавить в свой проект Wix
heat reg <some.reg> -gg -o <some.wxs>
Тогда это просто вопрос изменения каких-либо жестко закодированные пути, которые указывают на местоположение СОМ .exe, чтобы они отражают предназначенную для установки папку.
например. если.WXS файл, созданный RegSpyUI + тепло есть что-то вроде этого
<Fragment>
<DirectoryRef Id="TARGETDIR">
<Component Id="blah" Guid="{xxxxxxxxxxxxxxxxxxxxxxxxx}" KeyPath="yes">
<RegistryKey Key="TypeLib\{xxxxxxxxxxxxxxxxxxxxxx}\4.1\0\win32" Root="HKCR">
<RegistryValue Value="C:\Users\you\projects\MyProject\dependencies\installation\COMFOO.exe" Type="string" />
</RegistryKey>
</Component>
</DirectoryRef>
</Fragment>
и вы устанавливаете в основной файл WIX в
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="COMPANY" Name="My Company">
<!--This is the actual installation folder-->
<Directory Name="MyProduct" Id="MYPRODUCT">
затем просто изменить путь RegistryValue @ значение для ... «[MYPRODUCT]\COMFOO.exe
»
для справки: жир больше не является частью wix. Начиная с wix3, он был заменен на heat.exe. – 2009-01-21 00:43:48