У меня есть библиотека классов vanilla .net, которая содержит некоторые типы, [ComVisible], а сама сборка помечена как «Регистрация для взаимодействия COM». Я пытаюсь создать установщик WIX для приложения, которому нужно будет не только скопировать сборку .net в INSTALLATIONDIR на целевом компьютере, но и выполнить регистрацию этого объекта, чтобы использовать некоторые устаревшие приложения VB6. .net сборки.
Я использую heat.exe (точнее, задачу теплового файла), чтобы собрать фрагмент, который я включил с помощью componentGroupRef в мой основной файл wix. Мой вопрос: должен ли файл, который собирает heat.exe, быть выходным файлом .tlb моей библиотекой классов или самой dll? Если я использую heat.exe на .tlb, я не получаю никаких элементов реестра во фрагменте, но я делаю с DLL. Если я должен использовать dll, какую роль играет .tlb в этом процессе?
Я использую приведенную ниже задачу нагрева в msbuild
<HeatFile
NoLogo="true"
ToolPath="$(WixToolPath)"
TreatWarningsAsErrors="false"
AutogenerateGuids="true"
GenerateGuidsNow="true"
OutputFile="$(MSBuildProjectDirectory)\fragments\DemoTypeLib.wxs"
File="$(SolutionDir)DemoClassLibrary1\bin\Debug\DemoClassLibrary1.dll"
ComponentGroupName="DemoTypeLibComponent"
PreprocessorVariable="var.DemoClassLibrary1.TargetDir"
SuppressCom="false"
DirectoryRefId="INSTALLLOCATION"
SuppressRegistry="false"
SuppressRootDirectory="true" />