トップ回答者
ActiveXコントロールの64bitOSへのCOM登録/削除について

質問
-
初投稿になりますgeyseeと申します。
ActiveXコントロールの64bitOSへのCOM登録/削除について質問があります。
よろしくお願い致します。
Visual Studio 2008のMFCを利用して、32bit版ActiveXコントロールを作成しています。
そのActiveXコントロールを64bitOS上でCOM登録すると、タイプライブラリとディスパッチインターフェイスが
以下のレジストリ階層に書き込まれました。
①HKEY_CLASSES_ROOT\TypeLib\{ID}
②HKEY_CLASSES_ROOT\Interface\{ID}
③HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{ID}
④HKEY_CLASSES_ROOT\Wow6432Node\Interface\{ID}
しかし、COM登録を削除すると、③④は削除されるのですが、
①②が残ってしまいます。
COM登録/削除を行う方法は次のものを試しました。
・セットアッププロジェクトのRegisterプロパティをvsdrpCOMSelfRegにしてインストール/アンインストール
・C:\WINDOWS\system32\regsvr32.exe
・C:\WINDOWS\SysWOW64\regsvr32.exe
アンインストール時に①②を削除する方法があればお教え頂けないでしょうか。
宜しくお願い致します。
回答
-
自己解決しました。
WiXのCOM抽出(Heatコマンド)を利用することで、下記のみのレジストリ登録、削除、コントロールのIEへの埋込みができました。
---------------------------------------------------------------------------------
①HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{ID}
②HKEY_CLASSES_ROOT\Wow6432Node\Interface\{ID}---------------------------------------------------------------------------------
Visual Studioセットアッププロジェクトの問題は解消されていませんが、
業務上アップデートパッチの作成も必要となり、今後WiXを使用していこうと思いますので、
セットアッププロジェクトの問題解析は私の方ではストップしたいと思います。
何か分かりましたらご報告して頂けると幸いです。
ご検討して頂いた皆様、ありがとうございました。
すべての返信
-
COM登録/削除を行う方法で次のものを試してみました。
・セットアッププロジェクトのRegisterプロパティをvsdrpCOMにしてインストール/アンインストールすると、書き込まれるレジストリ階層が以下のように変わりましたが、
アンインストールにて全て削除することができました。
---------------------------------------------------------------------------------
①HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{ID}
②HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{ID}
③HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\TypeLib\{ID}
④HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\Interface\{ID}⑤HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{ID}
⑥HKEY_LOCAL_MACHINE\SOFTWAREWow6432Node\\Classes\Interface\{ID}---------------------------------------------------------------------------------
但し、今度はインストールしたActiveXコントロールをInternet Explorerに埋め込むことができなくなりました。
HTML埋込みコードは次のように書いています。
---------------------------------------------------------------------------------
<object
id="xxx"
classid="clsid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
codebase="XXXXXXX.exe#Version=x,x,x,x"
width="x"
height="x"
>
</object>---------------------------------------------------------------------------------
これは、レジストリ階層が変わったことに起因しているように思えますが、
このレジストリ階層で、埋込みコード等を変更することでActiveXコントロールを埋め込めるように
できないでしょうか?
宜しくお願い致します。
- 編集済み geysee 2012年8月31日 2:52
-
自己解決しました。
WiXのCOM抽出(Heatコマンド)を利用することで、下記のみのレジストリ登録、削除、コントロールのIEへの埋込みができました。
---------------------------------------------------------------------------------
①HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{ID}
②HKEY_CLASSES_ROOT\Wow6432Node\Interface\{ID}---------------------------------------------------------------------------------
Visual Studioセットアッププロジェクトの問題は解消されていませんが、
業務上アップデートパッチの作成も必要となり、今後WiXを使用していこうと思いますので、
セットアッププロジェクトの問題解析は私の方ではストップしたいと思います。
何か分かりましたらご報告して頂けると幸いです。
ご検討して頂いた皆様、ありがとうございました。