none
ActiveXコントロールの64bitOSへのCOM登録/削除について RRS feed

  • 質問

  • 初投稿になります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

    アンインストール時に①②を削除する方法があればお教え頂けないでしょうか。
    宜しくお願い致します。
    2012年8月27日 5:45

回答

  • 自己解決しました。

    WiXのCOM抽出(Heatコマンド)を利用することで、下記のみのレジストリ登録、削除、コントロールのIEへの埋込みができました。

    ---------------------------------------------------------------------------------

    ①HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{ID}
    ②HKEY_CLASSES_ROOT\Wow6432Node\Interface\{ID}

    ---------------------------------------------------------------------------------

    Visual Studioセットアッププロジェクトの問題は解消されていませんが、

    業務上アップデートパッチの作成も必要となり、今後WiXを使用していこうと思いますので、

    セットアッププロジェクトの問題解析は私の方ではストップしたいと思います。

    何か分かりましたらご報告して頂けると幸いです。

    ご検討して頂いた皆様、ありがとうございました。

    • 編集済み geysee 2012年9月3日 1:16
    • 回答としてマーク geysee 2012年9月3日 1:16
    2012年9月3日 1:14

すべての返信

  • ActiveXコントロールのソリューションプロパティの[構成プロパティ]のプラットフォームはx86でしょうか?
    2012年8月27日 8:01
  • 764さん、ご返信ありがとうございます。

    ソリューションプラットフォームはWin32となっています。

    2012年8月27日 8:15
  • ソリューションプロパティの[構成プロパティ]には、私の環境では"x86"がありませんでしたので、"Win32"を選択していました。

    x86とWin32は意味が異なりますか?

    また、x86をプラットフォームに追加することはできますか?


    • 編集済み geysee 2012年8月31日 2:52
    2012年8月31日 2:31
  • 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
    2012年8月31日 2:49
  • 自己解決しました。

    WiXのCOM抽出(Heatコマンド)を利用することで、下記のみのレジストリ登録、削除、コントロールのIEへの埋込みができました。

    ---------------------------------------------------------------------------------

    ①HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{ID}
    ②HKEY_CLASSES_ROOT\Wow6432Node\Interface\{ID}

    ---------------------------------------------------------------------------------

    Visual Studioセットアッププロジェクトの問題は解消されていませんが、

    業務上アップデートパッチの作成も必要となり、今後WiXを使用していこうと思いますので、

    セットアッププロジェクトの問題解析は私の方ではストップしたいと思います。

    何か分かりましたらご報告して頂けると幸いです。

    ご検討して頂いた皆様、ありがとうございました。

    • 編集済み geysee 2012年9月3日 1:16
    • 回答としてマーク geysee 2012年9月3日 1:16
    2012年9月3日 1:14