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 ランタイムのレジストリ エントリを上書きしないように、このフラグを使用する必要があります。