<link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=7879961974249152985&amp;zx=4f3d46e6-7f0b-4c48-a1fe-ebaea261d76d' rel='stylesheet'/>
  1. 前回の続きコンパイルしてできた、ocxをCabに圧縮し、IE上で表示させJavaScriptから関数を呼び出します。

    セットアップ情報ファイルの作成

    インターネット上でActiveXコントロールを配布するには作成したActiveXコントロールと一緒にセットアップ情報ファイルをCabファイルに圧縮してやることで可能になるそうです。
    適当なフォルダーに作成したActiveXコントロールをコピーして同フォルダー内にinfファイルを作成します。
    [version] 
    signature="$CHICAGO$"
    AdvancedINF=2.0  
    
    [Add.Code]
    AxGetOsVer.ocx=AxGetOsVer.ocx
    
    [AxDxVer.ocx]
    file-win32-x86=thiscab
    clsid={XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
    FileVersion=1,0,0,1
    RegisterServer=yes
    
    詳しくはこちらに情報があります。

    [version]

    ここは特に変更する必要はないようです。

    [Add.Code]

    インストールする全てのコントロールやDLLの一覧を挙列していきます。
    書き方は「ファイル名=セクション名」です。
    インストール処理は上から順に発生するそうなので、ファイルが多い場合、依存関係に注意したほうがいいかもです。

    [セクション名] (サンプルでは[AxDxVer.ocx])

    file-win32-x86
    Cabファイルに一緒に梱包するなら、thiscabでいいです。
    他にも〈LINK TYPE="GENERIC" VALUE="URL"〉〈/LINK〉なんて書いてURLからインストールさせることもできるみたいです。
    clsid
    idlファイルのコントロールクラスのuidを入力
    FileVersion
    ファイルのバージョンを入力
    RegisterServer
    この値をnoに設定すると登録されず、レジストリに登録情報が書き込まれません。

    CABの作成

    先ほど作成したセットアップ情報ファイルと、[thiscab]と書いたコントロール、DLL等をCabに圧縮します。
    Cabに圧縮できればなんでもいいです、Visual Studio 2012にはCabプロジェクトが消えてたので cabarc.exeを使用した方法で作成します。
    ※Visual Studio 2010をお持ちでしたらそちらで作成しても構いません。
    ここからダウンロード
    ダウンロードしたexeを作業フォルダーにコピー
    コマンドプロンプトをたちあげて作業ディレクトリに移動し下記を実行
    CABARC -s 6144 n AxGetOsVer.CAB AxGetOsVer.ocx AxGetOsVer.inf
    
    CABARC -s 6144 n cabファイル名 圧縮するファイル
    スペース区切りで圧縮するファイルを挙列していってください。

    IE上で動作させる。

    適当にHtmlファイルを作成して下記のようにOBJECTタグを設定
    ボタンをクリックした時にActiveXの関数からメッセージを受け取るようにします。
    <!DOCTYPE html>
    <html>
    <head><title></title></head>
    <body>
    <object ID="AxGetOsVer"
      CLASSID="clsid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      CODEBASE="AxGetOsVer.CAB#Version=1,0,0,1">
    </object>
    <input type="button" onclick="runAXHello();" />
    <script type="text/javascript">
        function runAXHello() {
            if (AxGetOsVer) {
                var msg = AxDxVer.GetHelloWorld();
                alert(msg);
            }
        }
    </script>
    </body>
    </html>
    
    CLASSID - セットアップ情報ファイルと同じclsidを入力
    CODEBASE - Cabファイルの場所。#Versionの値を変更するとバージョンアップした時にIEが自動で更新してくれます。
    今回署名も何もしていないため、IEのセキュリティーを下げないと実行できません。
    安全だとマークする方法、署名方法については、こちら参照ください。

    警告を無視しつつ実行すると無事に動作することが確認できます。
    前回の続きコンパイルしてできた、ocxをCabに圧縮し、IE上で表示させJavaScriptから関数を呼び出します。

    セットアップ情報ファイルの作成

    インターネット上でActiveXコントロールを配布するには作成したActiveXコントロールと一緒にセットアップ情報ファイルをCabファイルに圧縮してやることで可能になるそうです。
    適当なフォルダーに作成したActiveXコントロールをコピーして同フォルダー内にinfファイルを作成します。
    [version] 
    signature="$CHICAGO$"
    AdvancedINF=2.0  
    
    [Add.Code]
    AxGetOsVer.ocx=AxGetOsVer.ocx
    
    [AxDxVer.ocx]
    file-win32-x86=thiscab
    clsid={XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
    FileVersion=1,0,0,1
    RegisterServer=yes
    
    詳しくはこちらに情報があります。

    [version]

    ここは特に変更する必要はないようです。

    [Add.Code]

    インストールする全てのコントロールやDLLの一覧を挙列していきます。
    書き方は「ファイル名=セクション名」です。
    インストール処理は上から順に発生するそうなので、ファイルが多い場合、依存関係に注意したほうがいいかもです。

    [セクション名] (サンプルでは[AxDxVer.ocx])

    file-win32-x86
    Cabファイルに一緒に梱包するなら、thiscabでいいです。
    他にも〈LINK TYPE="GENERIC" VALUE="URL"〉〈/LINK〉なんて書いてURLからインストールさせることもできるみたいです。
    clsid
    idlファイルのコントロールクラスのuidを入力
    FileVersion
    ファイルのバージョンを入力
    RegisterServer
    この値をnoに設定すると登録されず、レジストリに登録情報が書き込まれません。

    CABの作成

    先ほど作成したセットアップ情報ファイルと、[thiscab]と書いたコントロール、DLL等をCabに圧縮します。
    Cabに圧縮できればなんでもいいです、Visual Studio 2012にはCabプロジェクトが消えてたので cabarc.exeを使用した方法で作成します。
    ※Visual Studio 2010をお持ちでしたらそちらで作成しても構いません。
    ここからダウンロード
    ダウンロードしたexeを作業フォルダーにコピー
    コマンドプロンプトをたちあげて作業ディレクトリに移動し下記を実行
    CABARC -s 6144 n AxGetOsVer.CAB AxGetOsVer.ocx AxGetOsVer.inf
    
    CABARC -s 6144 n cabファイル名 圧縮するファイル
    スペース区切りで圧縮するファイルを挙列していってください。

    IE上で動作させる。

    適当にHtmlファイルを作成して下記のようにOBJECTタグを設定
    ボタンをクリックした時にActiveXの関数からメッセージを受け取るようにします。
    <!DOCTYPE html>
    <html>
    <head><title></title></head>
    <body>
    <object ID="AxGetOsVer"
      CLASSID="clsid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      CODEBASE="AxGetOsVer.CAB#Version=1,0,0,1">
    </object>
    <input type="button" onclick="runAXHello();" />
    <script type="text/javascript">
        function runAXHello() {
            if (AxGetOsVer) {
                var msg = AxDxVer.GetHelloWorld();
                alert(msg);
            }
        }
    </script>
    </body>
    </html>
    
    CLASSID - セットアップ情報ファイルと同じclsidを入力
    CODEBASE - Cabファイルの場所。#Versionの値を変更するとバージョンアップした時にIEが自動で更新してくれます。
    今回署名も何もしていないため、IEのセキュリティーを下げないと実行できません。
    安全だとマークする方法、署名方法については、こちら参照ください。

    警告を無視しつつ実行すると無事に動作することが確認できます。
    0

    Add a comment

ラベル
ラベル
ブログ アーカイブ
自己紹介
自己紹介
自分の写真
開発時のメモ・備忘録用
Loading
Powered by Blogger.