ぎこはにゃ〜ん・あっぷでーた^2.2.0 (GUI -Dialog-)

解説

目的

 ソフトウエアのアップデートは面倒。やっぱり、自動更新してくれないと。 それと0からのアップデートって、インストールと大体同じ。だから、こいつはインストーラ兼手動アップデータになった。

とかやってたら、いきなりgeoがアクセス拒否して、大変な目に。どこが原因でそーゆーことになったのか、全然説明がないので、やばげなXMLによるアップデーションにも手をつけておく。

現状・将来

ソース

ソースは 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ファイルで指定すれば、変えることができる(ひょっとしたら、誰かがモジュールの修正をおいてくれるかもしれないし)

内部処理

  1. update.xmlを取ってくる。
  2.  無かったら、index.htmlで諦める。こいつは、HTMLとXMLの混合した、不可思議マークアップと考える
  3. 304が帰ってきたら、終了。
  4. そこにファイル名とそのSHA1値が記載されているので、現在あるファイルと比較する。
  5. 合致したら、ローカルのファイルは最新って事。終了
  6. あわなかったら、サーバに最新のファイルが有るって事。取りに行く。
  7. 圧縮されているなら、展開する。
  8. ダウンロード完了時に、SHA1値をつかって、正常に落とせたか確認する。(合ってなかったら、ダウンロードエラー)
  9. ファイルを置き換える。拡張子がdllなら、DllRegisterServerを呼んどく。
  10. XMLファイルに記載されたファイルの分だけ繰り返す。なくなったら、終了。

XMLファイルのフォーマット。Rev#1.1

というか、 index.htmlのソースをみて、わかってほしい。update.exeは、まともにXMLをパースしたりはしていない。実にデタラメな方法で解読している。だから、xmlエレメントで囲まれていない領域がどうなっていようがかまわない。たとえば、HTMLっぽい文章が書かれていたりしても。

xml
とりあえずこれで囲んでおく。 明示的トップエレメント
update
アップデート対象
name
ファイル名。基本的に相対URIで、HTTP取得可能なこと。
なお、.gzは展開された後、ファイル名から削除される。
ver
バージョン名。基本的に表示するだけで、比較に用いたりしない。
sha1
ファイルのSHA1値。(未圧縮時のもの)
size
ファイルのサイズ。(未圧縮時のもの)

戻る