[ComVisible] であるいくつかの型を含むバニラ .net クラス ライブラリがあり、アセンブリ自体は "Register for COM Interop" とマークされています。.net アセンブリをターゲット マシンの INSTALLATIONDIR にコピーするだけでなく、一部のレガシー VB6 アプリケーションが使用できるようにオブジェクトを登録する作業を行う必要があるアプリ用の WIX インストーラーを構築しようとしています。 .net アセンブリの。
メインのwixファイルにcomponentGroupRefを介して含めたフラグメントを収集するために、heat.exe(より正確にはheatファイルタスク)を使用しています。私の質問は、heat.exe が収集しているファイルは、クラス ライブラリまたは dll 自体によって出力された .tlb ファイルである必要がありますか? .tlb で heat.exe を使用すると、フラグメント内のレジストリ要素を取得できませんが、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" />