1

C# で作成した COM オブジェクトは、後で VBScript によって使用されます。VBScript がオブジェクトをインスタンス化できるようにするには、オブジェクトを登録する必要があります。以前は、任意の .NET Framework に付属の RegAsm ツールを使用して手動でオブジェクトを登録していました。

ただし、現在インストーラーを作成しているため、このオブジェクトを別のマシンにインストールできます。InstallShield 2012 Spring Express を使用しているときに、dll が自己登録していないという警告が表示されます。

DLL を自己登録するにはどうすればよいですか? C# で Process オブジェクトを使用して RegAsm を呼び出すガイドと例を見つけましたが、私のオブジェクトは実行可能ファイルではありません。

4

2 に答える 2

6

カスタム アクションと自己登録はベスト プラクティスではありません。

InstallShield のバージョンが COM Interop をサポートしていない場合は、次のコマンドを実行します。

regasm foo.dll /regfile:foo.reg

次に、reg ファイルを InstallShield にインポートし、ファイル foo.dll を [INSTALLDIR]foo.dll に微調整します。

お使いのバージョンの InstallShield が reg ファイルのインポートをサポートしていない場合は、メモ帳で編集し、手動で値を InstallShield に入力してください。

これは、失敗するカスタム アクションがなく、MSI が登録を処理しているため、データのアンインストールとロールバックの方法を知っているため、最もクリーンなアプローチです。

于 2013-02-28T13:00:45.640 に答える
1

InstallShield を使用している場合は、InstallShield にタイプ ライブラリの登録を依頼できます。Components -> YOUR DLL -> .NET Settings -> .NET COM Interopを Yes に設定します。

InstallShield 設定のスクリーンショット

これをサポートしていないバージョンの InstallShield を使用している場合は、RegAsm.exe を呼び出して dll を登録するカスタム アクションを記述します。

于 2013-02-27T05:55:12.793 に答える