IEの自動インストール機能について

[上に] [前に] [次に]
ゆきのん 2000/01/23(日) 23:26:35
IE4以上からオンライン上でサーバーからファイルを取得してきて
DLして、インストールする機能があると思います。
(代表的なのは、MacromediaのFlashプラグインのインストなどです)

あれを実現する為に必要な情報はどこに行けば手に入るでしょうか?

Mugi [E-Mail] [HomePage] 2000/01/23(日) 23:45:44
回答ではないですが...
僕もActive Setup Control(ASCTRLS.OCX)の使い方が知りたいです。
メソッド名などはわかるのですが、意味やスクリプトでのコーディングのしかたがわかりません。

2000/01/23(日) 23:50:12
OBJECTタグのID書いておくと勝手にインストールしてくれませんでしたっけ?
でもスクリプトとかでもあるんですね。

ゆきのん 2000/01/24(月) 00:26:52
例えば、上記、マクロメディアのFlashプラグインのサイトのコードをみてみるとこんなカンジ。(関係ありそうな部分だけ抜粋)

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash4r25.cab#version=4,0,25,0" width="300" height="120" name="sw" id="sw">
<param name="Movie" value="/shockwave/download/triggerpages/flash.swf">
<param name="quality" value="best">
<param name="Loop" value="true">
<param name="play" value="true">
<param name="swRemote" value="swTarget='false'">
<embed src="/shockwave/download/triggerpages/flash.swf" pluginspage="/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type=application/x-shockwave-flash width=300 height=120 loop=true quality=best swRemote="swTarget='false'" bgcolor="#000000"></embed>
</object>

http://www.macromedia.com/shockwave/download/triggerpages/flash-jp.htmlより)

この中で特に重要なのは一行目の<object classid="〜でしょう。
で、ここでIDとインストすべきファイルがcab圧縮され、URLアドレスで指定されています。

ここで疑問が一つ。
・このIDは何によって生成されたのか?またその必要性とは何か?


さらにこのcab圧縮されたファイルをDLしてcabファイルの構成を見てみた
(解凍は当方環境のアーカイバが古いのか解凍できませんでした)
ところ、
swflash.inf
SwFlash.ocx
の二つのファイルが確認できました。

ここで二つ目の疑問。
・SwFlash.ocxはプラグインをするためのファイルなのか?
もしくは単にActiveXで自動インストするためのファイルなのか?

まぁ、ActiveXで自動インストの為のファイルだとすると、
プラグインの為のファイルがswflash.infであるとなってしまうのでこれは違うとは思いますが。。
ただ、ocxがプラグイン動作のファイルだとするとIE自動インストの設定はどこで行ってるの?という疑問が湧いてくるのです。


swflash.infの役割はcab解凍後のインスト機能ですよね。
レジストリに登録したり。。。とか。

この辺の情報を教えていただけると有り難いのですが。。
書籍などはないのでしょうかねぇ?

Selly 2000/01/24(月) 00:30:25
http://selly.cjb.net/activex/twn.html
サンプルを書いてみました。
そのうちに削除しますが・・・。
#非常に重いので注意。
#あと、セキュリティの設定によってはどうさしません。
#Windows 2000 Build 2195 + IE 5.00.2920.0000にて確認。


> 僕もActive Setup Control(ASCTRLS.OCX)の使い方が知りたいです。

私も知りたいです。
いろいろ調べて回るくらいなら自分で作った方が早いような気もしますが(笑

Selly 2000/01/24(月) 00:46:06
ぐは・・・先越された・・・

> ・このIDは何によって生成されたのか?またその必要性とは何か?

この値はGUID(Global Unique IDentifier)といい、OS(Windows)が生成します。
#M$系の開発ツールにはguidgen.exeというGUID生成ツールが入ってます。
で、このGUIDは時間やネットワークカードのMACアドレス等から生成され、世界で唯一なのが保証されています。
#実際はそうでもないらしいです。
そのため、ActiveXコントロールの識別子として使用されます。
#システムにGUIDが登録されるため、実際のファイル名がわからなくてもGUIDのみで呼び出せます。

> ・SwFlash.ocxはプラグインをするためのファイルなのか?
> もしくは単にActiveXで自動インストするためのファイルなのか?

ActiveXコントロールのインストール処理は下のような流れになります。

1.<object>のcodebaseに従ってCABをダウンロード。
2.CABの署名が確認され、ユーザに許可を求める。
3.CABが展開される。(cabinet.dll)
4.swflash.infが解読され、インストールされる。(setupapi.dll, advpack.dll)
5.GUIDを指定してActiveXコントロールが起動。

ちなみに、これらはOSの標準機能によって行われます。

ゆきのん 2000/01/24(月) 01:12:33
丁寧な解説ありがとうございます。

まだイマイチ解らないところがいくつかあります。

・GUIDとインストするCABファイルがあればそれだけでOKなのか?
・GUIDを生成するツールの中で極普通の人間でも入手できるものはどれか?

また、署名ってあると思います、CABの展開前、つまり、
SellyさんのActiveXの流れの説明では2番にあたるところですね。
例えば、M$やMacromediaなんかは”署名されています云々・・・”とでてきますが、
Sellyさんの例のサンプルではもちろん、署名されてませんよね。
まぁ、一般人がつくれば署名なんてされていないのが普通だとは思うのですが、
コレって署名する義務などあるのでしょうか?
また、署名に関して、得られるメリット・デメリットなどありますでしょうか?

Selly 2000/01/24(月) 03:10:35
> ・GUIDとインストするCABファイルがあればそれだけでOKなのか?

OKです。

> ・GUIDを生成するツールの中で極普通の人間でも入手できるものはどれか?

http://msdn.microsoft.com/downloads/sdks/platform/platform.asp
からダウンロードできるPlatform SDKに入ってるuuidgen.exeというツールで生成できます。
#GUIDでなくUUID(Universally Unique Identifier)だから微妙に違うかも・・・
ただし、全部ダウンロードすると580MBあります。
ダウンロードするコンポーネントの選択時に「Build Environment」を選択すれば数MBで済むと思います。

> Sellyさんの例のサンプルではもちろん、署名されてませんよね。

一応、テスト用の署名が入ってます。
インストール時に「信頼できる署名がない」とか言われませんでした?
ちなみに署名はhttp://www.verisign.com/で取得できるようです。

> コレって署名する義務などあるのでしょうか?

義務はありません。

> また、署名に関して、得られるメリット・デメリットなどありますでしょうか?

メリット:
 署名した時点からファイルが改竄されてないことが証明できる。
 ファイルの作成者がはっきりする。

デメリット:
 改竄されてないことが証明できるだけで安全かどうかが証明できるわけではない。
 金がかかる(毎年US $400)
 個人では取得できない?

ゆきのん 2000/01/24(月) 03:40:57
>インストール時に「信頼できる署名がない」とか言われませんでした?

はぃ、言われました。
この場合、「署名ナシ」とは違うんですね。

あの後、Verisiginのサイトを見てみたのですが、
個人でも証明の取得はできるようです。
カネがかかるかどうかは見てませんけど。(^^;)
まぁ、それが商売だからカネは取るんでしょうね。

ゆきのん 2000/01/24(月) 06:06:59
ActiveX Control Padというツールを使い、生成してみました。
以下がソースです。

<OBJECT ID="hoge" CLASSID="CLSID:番号" CODEBASE="http://www.hogehoge.ne.jp/filename.cab#version=1,1,0,4">
</OBJECT>

このCABファイル後の#Versionはどのように記述してあるのでしょうか?
とりあえず、訳が解らなかったのでSellyさんのと同じようにしてみたのですが。
ファイルのバージョンが1.104ということなのでしょうか?
それとも、頭の1は何か他に意味があって、バージョン1.04ということなのでしょうか?

もう一つ。
上記をオンライン上にて実行してみたところ、
「現在のセキュリティでは実行できません」
とブラウザから文句を言われました。(この時のセキュリティは”中”に設定)
これを”低”に設定してみたところ、動いたのですが、
Sellyさんの所は”中”設定でもインストできました。
”中”設定でもインストできるようにするにはどのようにしたらよいでしょうか?

是非、ご教示くださいませ。

Mugi [E-Mail] [HomePage] 2000/01/24(月) 07:27:03
ゆきのん さんの質問はobjectタグのことでしたか。(^^;
てっきり、オンデマンドインストールなどのことだと思ってしまいました。
こっちは新規質問にしてみようかなあ。

ゆきのん 2000/01/24(月) 16:43:46
・Mugiさん
オンデマンドインストールとはなんでしょうか?
ちょっと気になったりします(^^;)

Selly 2000/01/24(月) 19:32:04
> このCABファイル後の#Versionはどのように記述してあるのでしょうか?

INFファイルの

FileVersio=1,1,0,4

という行と一致させます。
<object>を処理する際、インストールされているコントロールのバージョンと比較して、新しい場合にはダウンロードするという動作をします。


> このCABファイル後の#Versionはどのように記述してあるのでしょうか?

一般的にメジャーバージョン, マイナーバージョン, ビルド, リビジョンという形式になります。
人によって解釈が違うので当てはまらない場合も多いです。


> ファイルのバージョンが1.104ということなのでしょうか?

たぶん、Version 1.1 Revision 0004になると思います。
#開発者は私ではないので詳細は不明です。


> ”中”設定でもインストできるようにするにはどのようにしたらよいでしょうか?

署名がない場合は「中」だとインストールできません。
開発ツールにテスト用の署名ツールがあるのでそれを入れれば中でもインストールできます。

署名ツールはActiveX SDKをダウンロードすれば入っています。
Visual C++ 4.2からActiveX SDKが統合されたので今はないかもしれません。
探してみるならMicrosoftの英語サイトにあるMicrosoft Download Centerを見てください。
そちらにない場合はMSDN Online(http://msdn.microsoft.com/)かな?


> オンデマンドインストールとはなんでしょうか?

demand = 要求・需要
必要になったときに自動的にコンポーネントをインストールする機能を指します。

Mugi [E-Mail] [HomePage] 2000/01/25(火) 07:40:58
> 必要になったときに自動的にコンポーネントをインストールする機能を指します。
そうです。
IE5からの機能です。
例えば、韓国語のページに行くと、韓国語サポートをインストールする必要があるというダイアログが出て、
そこからすぐにセットアップを実行できるようになっています。
このダイアログの実体は、C:\WINDOWS\WEB\IEJIT.HTM です。
JavaScriptで書かれているのですが、応用しようとしてもどうもうまくいきません。

[上に] [前に] [次に]