正如@Trampster所指出的那样,heat.exe在从COM服务器中收集注册表条目方面表现不佳。我尝试过,但结果不完整。
相反,遵循
Monitor Registry Accesses (InstallSite Tools: Monitoring)的建议,我使用了InstallShield RegSpyUI。据说这个工具随Installshield v7及以上版本一起提供,包括评估版。这些信息可能已经过时;我可以确认它
没有与VS2013一起附带的几乎无用的Installshield LE一起提供。
幸运的是,我有一份InstallShield 2010的副本,它确实带有RegSpyUI。
无论如何,使用RegSpyUI非常容易:将其指向COM .exe,将注册表信息提取到.reg文件中。然后使用heat将其收集到.wxs文件中,以便将其添加到您的Wix项目中。
heat reg <some.reg> -gg -o <some.wxs>
然后只需修改任何硬编码路径,使其指向COM .exe的位置,以便反映所需的安装文件夹即可。
例如,如果由RegSpyUI+heat创建的.wxs文件中有以下内容:
<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">
<Directory Name="MyProduct" Id="MYPRODUCT">
然后只需编辑RegistryValue@value路径为... "[MYPRODUCT]\COMFOO.exe
"