「自己登録」 (Regsvr32、Regasm、GACUTIL、InstallUtil など) は、プロセス外で実行され、宣言的ではなく、トランザクション的ではないため、Windows インストーラーのベスト プラクティスとは見なされません。ターゲット マシンに加えられた変更に関する Windows インストーラーの知識を無効にし、速度が遅く、壊れやすいことが多く、修復、アップグレード、ダウングレード、ロールバックなどのシナリオで破損することがよくあります。
別の方法として、アセンブリに関連付けられている COM メタデータを "収集" または "抽出" し、それらを MSI にネイティブに作成することもできます。これを正確に行う方法は、MSI の作成に使用しているツールによって異なります。InstallShield には「.NET Com Visible」という設定があり、WiX には「Heat」という機能があります。より生のアプローチは、コマンド regasm foo.dll /regfile:out.reg を実行し、パスを MSI ディレクトリ プロパティに手動で置き換えて、regfile の内容をインストーラーに作成することです。
MSDN のregasmトピックに記載されているように、 regasm /regfile には 1 つの問題があります。
.reg ファイルには、ユーザー定義のレジスタ関数によって実行できるレジストリの更新は含まれていないことに注意してください。