wixを使用して、com interopにマークされた.netアセンブリを登録します
-
02-10-2019 - |
質問
comvisible]のいくつかのタイプを含むバニラ.NETクラスライブラリがあり、アセンブリ自体に「com Interopの登録」とマークされています。アプリ用のWIXインストーラーを構築しようとしています。アプリのインストーラーは、ターゲットマシンの.NETアセンブリをインストールディールにコピーするだけでなく、一部のレガシーVB6アプリケーションが使用できるようにオブジェクトを登録する作業を行います。 .NETアセンブリの。
heat.exe(ヒートファイルタスク)を使用して、メインWIXファイルのコンポーネントGroupRefを介して含めたフラグメントを収穫しています。私の質問は、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" />
解決
DLLとCOMでフラグメントを出荷するだけです。 TLBは必要ありません。
他のヒント
.tlbと.dllファイルの両方を収穫する必要があります。一部のツールはDLL登録のみを使用できますが、スクリプト言語のような他のツールにはタイプライブラリも必要です。両方を加熱するだけで、最終プロジェクトに両方の出力を含めます。たとえば、PythonのWin32comとPerlのWin32 :: OLEライブラリはどちらも、機能するために登録されているタイプライブラリが必要です。
所属していません StackOverflow