3

次の問題があります: WiX セットアップで、COM オブジェクトを登録する必要があります。「.tlb」ファイルと「.dll」ファイルがあります (私の例では、XYCommon.dll と XYCommon.tlb)。TLB を登録するためのセットアップを行います。Windows Installer XML でこれを行うにはどうすればよいですか?

私の最初の試みは、CustomAction を使用して "Regasm.exe" を開いて登録することでしたが、Regasm.exe を使用して XYCommon.tlb を登録する方法がわかりません。

ヘルプはありますか?ありがとう

4

1 に答える 1

12

Heatという WiX ハーベスター ユーティリティを使用します。COM オブジェクトを正しく登録 (および登録解除) するために必要なレジストリ エントリを含む WiX ソースを生成します。

COM オブジェクト (XYCommon.dll および XYCommon.tlb) は頻繁に変更されますか?

いいえの場合:これらの 2 つのファイルに対して Heat を実行し (コマンドライン パラメーターを調べて、目的の出力が得られるように実験します)、必要に応じてそれらをクリーンアップし、プロジェクトに追加します。

もし、そうなら:

Heat を Visual Studio のビルド前イベントとして実行したい場合は、この SO の回答がいくつかのガイダンスを提供するはずです:ファイルではなく wix のインストーラーにフォルダーを追加しますか?

Heat を使用する場合、生成された .wxs ファイルを微調整する必要がある場合があります。したがって、ファイルのリストまたはディレクトリに対して heat を呼び出し、出力を希望どおりにクリーンアップするラッパー ユーティリティを作成することをお勧めします。その後、ユーティリティをビルド プロセスに追加できます。

個々のファイルで heat を使用する例:

heat.exe ファイル myFile.dll -gg -g1 -suid -svb6 -out myFile.wxs

ディレクトリ全体で heat を使用する例:

heat.exe dir myDirectory -gg -g1 -suid -svb6 -out myDirectory.wxs

私が使用したいくつかのパラメータの内訳:

  • heat.exe: パスにない場合は、実行可能ファイルへのフル パスを指定する必要があります。
  • file myFile.dll: 1 つのファイル myFile.dll に対して heat を実行するように指定します。
  • dir myDirectory: ディレクトリ myDirectory で heat を実行することを指定します。
  • gg: コンポーネントの GUID を生成します
  • g1: 中括弧なしで GUID を生成します
  • suid: ファイルとコンポーネントの一意に生成された ID の作成を抑制し、代わりにファイル名を ID として使用します
  • svb6: VB6 ランタイムの COM 情報の収集を抑制します。注: VB6 ランタイムを使用する COM オブジェクトを登録する場合は、VB6 ランタイムのレジストリ エントリを上書きしないように、このフラグを使用する必要があります。
于 2012-08-28T12:33:10.380 に答える