ぎこはにゃ〜ん・あっぷでーた^2.2.0 (GUI -Dialog-)
解説
目的
ソフトウエアのアップデートは面倒。やっぱり、自動更新してくれないと。 それと0からのアップデートって、インストールと大体同じ。だから、こいつはインストーラ兼手動アップデータになった。
とかやってたら、いきなりgeoがアクセス拒否して、大変な目に。どこが原因でそーゆーことになったのか、全然説明がないので、やばげなXMLによるアップデーションにも手をつけておく。
現状・将来
- update.exeでは、update.exe自身を更新・インストールすることはできません。
- 「何か」がアップデートをチェックしてくれたりしません(w。
GUIはありません。気まぐれでつけるかもしれません。 2.0.0から。
Referer吐きません 2.0.0から。geo対策の一環。
- 自動で更新チェックしません。
時々、update.exeを突いてやってください。 mona.exeの方から、起動させることができます。突くのはそっちにしてください(2.1.0)
update.xmlを If-Modified-since 付きでGetしてません。 ちゃんとIf-Modified-sinceつけました。(2.2.0)
ソース
ソースは src.zip の http/update/src にあり、ビルドは、http/update/ で nmake 又は nmake -f makefile.relを実行すればいいはずです。いやしくもプログラマなら、ここで「nmakeってどうやって使えばいいの」と聞いてはなりませんよ。
リファレンス
実行前・直後
デフォルトでは、 http://www.geocities.com/ghanyan/latest/ http://ghanyan.monazilla.org/latest/ を基準URLとする。ちなみにupdateのコマンドラインと、iniファイルで指定すれば、変えることができる(ひょっとしたら、誰かがモジュールの修正をおいてくれるかもしれないし)
内部処理
- update.xmlを取ってくる。
- 無かったら、index.htmlで諦める。こいつは、HTMLとXMLの混合した、不可思議マークアップと考える
- 304が帰ってきたら、終了。
- そこにファイル名とそのSHA1値が記載されているので、現在あるファイルと比較する。
- 合致したら、ローカルのファイルは最新って事。終了
- あわなかったら、サーバに最新のファイルが有るって事。取りに行く。
- 圧縮されているなら、展開する。
- ダウンロード完了時に、SHA1値をつかって、正常に落とせたか確認する。(合ってなかったら、ダウンロードエラー)
- ファイルを置き換える。拡張子がdllなら、DllRegisterServerを呼んどく。
- XMLファイルに記載されたファイルの分だけ繰り返す。なくなったら、終了。
XMLファイルのフォーマット。Rev#1.1
というか、 index.htmlのソースをみて、わかってほしい。update.exeは、まともにXMLをパースしたりはしていない。実にデタラメな方法で解読している。だから、xmlエレメントで囲まれていない領域がどうなっていようがかまわない。たとえば、HTMLっぽい文章が書かれていたりしても。
- xml
- とりあえずこれで囲んでおく。 明示的トップエレメント
- update
- アップデート対象
- name
- ファイル名。基本的に相対URIで、HTTP取得可能なこと。
なお、.gzは展開された後、ファイル名から削除される。
- ver
- バージョン名。基本的に表示するだけで、比較に用いたりしない。
- sha1
- ファイルのSHA1値。(未圧縮時のもの)
- size
- ファイルのサイズ。(未圧縮時のもの)
戻る