同じコード ベースを 2 つの異なる ActiveX に使用する必要がある ActiveX に取り組んでいます。つまり、複数の DLL から構築された単一のソリューションがあります。ActiveX A の CAB を作成するためのソリューションをビルドするときに、DLL のクラス ID を特定のものに変更し、2 番目の ActiveX の CAB を作成するためにソリューションをビルドするときに、クラス ID を別のものに変更しました。
同じマシンで実行できるようにするには、両方の ActiveX が必要です。基本的に、異なるバージョンの ActiveX を実行する特定のシナリオ (ActiveX A は ActiveX B よりも古いコード バージョン) で望ましくない動作が発生することを除いて、正常に動作します。ActiveX が ActiveX B (別のコード バージョン) からいくつかの DLL をロードしているようです。
長い説明で申し訳ありませんが、最後の重要な情報は、両方の ActiveX が同じコードに由来するため、ActiveX を呼び出す JavaScript に公開される同じクラス名を持っていることです。レジストリでは、以下を除くすべてのキーが完全に分離されています (NetworkInterface は公開クラスです)。
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyActiveX.NetworkInterface\CLSID]
@="{31ED2205-F6AE-4133-AD30-60CA2783ADA6}"
ActiveX をインストールすると、正しいクラス ID でこのエントリが表示されますが、2 番目の ActiveX をインストールすると、キーは 2 番目の ActiveX によって上書きされます。
私が達成しようとしていることを達成することは可能ですか? 同じクラスを異なるクラス ID で登録する方法はありますか?
ありがとう。