2011-10-18 33 views
0

私のアプリケーションに重大な問題があります。私はいくつかのマネージクラスを使って動作するネイティブアプリケーションを持っています。アンマネージドコードとマネージコードの間のプロキシであるC++ \ Cliラッパーを作成しました。C++ Cli COMアセンブリをMSIで登録することはできません

このプロキシプロジェクトでは、公開されているいくつかのCOMオブジェクトを宣言し、それらの実装ではマネージアセンブリで宣言されたC#オブジェクトを使用しています。

私の開発環境では問題なく動作しますが、クリーンシステムにアプリケーションをインストールするときに問題が発生します。

私はvsdraCOMまたはvsdraCOMRelativePathを使用して、このCLRプロキシを登録shoul MSIプロジェクトを持っています。実際にはそれらのどれも動作しません。アプリケーションは、(このプロキシで定義された)特定のオブジェクトが登録されていないというエラーを表示します。

私はこのDLLをregsvr32を使用して手動で登録することができますが、これを避けて、私のMSIパッケージを使ってください。

私はこのdllでRegasmを使用しようとしましたが、登録対象が見つかりませんでした。公開されるすべてのインターフェースは、IDLファイルで定義されています。

IDLで定義されたこれらのインターフェイスをregasmに公開または公開する方法を教えてください。

答えて

0

私はこのDLLをregsvr32を使って手動で登録することができますが、 はこれを避けて、私のMSIパッケージが私にしてくれます。

Visual Studioで提供される登録オプションは、一般的な使用方法です。彼らがあなたにとってうまくいかない場合は、ファイルをどのように登録する必要があるかを判断し、カスタムアクションを使用してそれを実行する必要があります。

regsvr32.exeを使用する場合は、ファイルを登録するカスタムアクションで使用します。

私はこのdllでRegasmを使用しようとしましたが、登録されているオブジェクトは ではありませんでした。

Regasm.exeは、と同じではありません。 Regasm.exeはアセンブリを登録し、regsv32.exeはコマンドコンポーネントを登録します。

これらのIDL定義インターフェイスを に公開する方法、またはregasmに表示する方法を教えてください。

Regasm.exeは、厳密な名前のアセンブリのみを登録できます。詳しくはこちらをご覧ください: http://msdn.microsoft.com/en-us/library/xwb8f617.aspx

関連する問題