2009-02-26 9 views
0

ビジネス上の理由から現在アップグレードできない大規模で展開された3層.NETアプリケーションがあります。クライアントは、通常の相互運用メカニズムを通じて、多くの古典的なC++ ActiveXコントロールを使用します。.NETアプリケーションで使用されているCOMオブジェクトをオンザフライでアップグレードする

ActiveXコントロールの1つにいくつかの重大なバグを修正し、クライアントを再インストールせずに多くの顧客に修正プログラムを展開する必要があります。 dllのアップグレードを含め、パッチは許可されています。新しいクライアントを必要とせずにバグ修正ActiveX dllをインストールする方法はありますか?インターフェイス、ファイル名、GUIDなどはすべて変更されていません。

私は、成功していないdllを置き換えようとしました。多少の奇妙なエラーがありましたが、ActiveX dll(まだ開発中です)に欠陥がある可能性があります。

dllを単に置き換えるだけでいいですか?もしそうでなければ、再構築するのに手間のかからない別のアプローチを提案してから、クライアントを再インストールする必要がありますか?

+0

、彼らは他の人への重要な診断を提供することができ、DLLを上書きします。それは彼らがやるべきことでした。何も "うまくいかない"よりも優れています。 –

+0

公正なポイント - 彼らはバグレポートにはありませんが、私はそれらを得ることができるはずです。 – mlo

答えて

0

インターフェイスが変更されていない場合、元のdllを上書きすると機能します。

+0

FWIW、私はこの作業をこのようにすることができませんでした。 Microsoft MSDN Supportを使用した広範な作業により、2つの生成されたinteropsを置き換えることによって、最終的にそれが機能しました。私はまだ理由を理解していない。そして、私は、C++ - > interop-> COMインターフェイスの仕組みを正確に説明しているリファレンスを見つけることに興味があります。 – mlo

0

交換する前に登録を解除してから、再登録してください。

regsvr32.exe /u [YOUR DLL HERE] 

その後、あなたが見る、エラーがあなたに中国のように見えるかもしれませんが、その後

regsvr32.exe [YOUR DLL HERE] 
+0

私が見る限り、これはインタフェース、名前、GUIDが同一であれば何の効果もありません。本当ですか? – mlo

+0

ええ、私もそうだと思いますが、それは害を及ぼさないでしょう、そして、私は、それが不要であるように見えたが、そのトリックをしたケースをヒットしたと誓うことができます。 – Rory

関連する問題