4

インストール時に登録する必要のある.NETアセンブリがあります。を直接使用する場合と、のレジストリスクリプトregasmを介してインストールする場合では、レジストリに微妙な違いがあることに気づきました。regasm

これが私のテストです:

元のHKCRハイブをエクスポートしてから、次のコマンドを実行します。regasm my.dll

そこから、後続のHKCRハイブとパフォーマンスの差分をエクスポートします。

次に、その差分をの出力と比較しますregasm my.dll /regfile

regasm my.dllコマンドから出力されたレジストリファイルでは決して追加されない、を介して追加される非常に重要なエントリがいくつかありますregasmなんで?

インストールの観点から、私regasmはインストールプロセス中に電話をかけるのは非常に嫌です。この.regスクリプトを実行したいだけです。私は現在InstallShieldを使用していますが、内部には追加のレジストリエントリもありません(/regfileフラグとともに出力されたレジストリの変更が埋め込まれているようです)。

4

2 に答える 2

4

Regasm.exe (アセンブリ登録ツール)ごと(備考セクション)

/ regfileオプションを使用すると、レジストリに直接変更を加える代わりに、レジストリエントリを含む.regファイルを生成できます。レジストリエディタツール(Regedit.exe)を使用して.regファイルをインポートすることにより、コンピュータ上のレジストリを更新できます。.regファイルには、ユーザー定義のレジスタ関数で実行できるレジストリの更新が含まれていないことに注意してください。/ regfileオプションは、管理対象クラスのレジストリエントリのみを出力することに注意してください。このオプションは、TypeLibIDまたはInterfaceIDのエントリを発行しません。

InstallShieldには「.NETCOMInterop」と呼ばれる設定があり、基本的にビルドエンジンにregasm / regfileを実行し、MSIをビルドする前に結果をレジストリテーブルに変換するように指示します。必要に応じてこれを続けることができますが、静的に余分なものを追加する必要があります。

于 2013-02-02T02:39:55.700 に答える
3

ComRegisterFunction追加のレジストリ操作は、属性で装飾されたメソッドの舞台裏で行われています。どうやら、これらのメソッドは/regfileスイッチで呼び出されません。

于 2013-02-01T18:41:53.130 に答える