FrontPage  Index  Search  Changes  Login

Windows Mobile 向けパッケージマネージャ Giraffe

Giraffe とは

Windows Mobile にはたくさんの追加アプリがあり、各アプリケーションはCABパッケージという 開く即インストールの簡単インストールの仕組みがあるにもかかわらず、 簡単にアプリケーションをダウンロードする仕組みがないので整備したい。

au BREW の EZアプリカタログみたいなのが目標。

開発ノート

特徴

簡単インストール
Giraffeアプリケーション情報配信サイトに登録されたアプリケーションを簡単にダウンロードしてインストールできます。
簡単アップデート
インストールされているGiraffe対応アプリケーションの最新版を簡単にダウンロードしてインストールできます。
わかりやすい配信モデル
Giraffeに対応するにはアプリケーション情報XMLファイルをアップロードするだけ。必要に応じてアプリケーション情報ファイルをCABファイルに同梱して対応することもできます。
勝手配信
アプリケーション情報はCABファイルのURLを取得できれば作者以外でも更新情報を配信することができます。

Giraffe の仕組み

[図を描く]

  • 作図メモ
    • アイコンぶっこ抜く
      • XML
      • CAB
      • モバイルデバイス
      • マイコンピュータ

インストール

  1. Giraffeクライアントを起動、配信中リストをダウンロード
  2. インストールしたいソフトを選択、詳細表示のためにアプリケーション定義をダウンロード。
  3. 詳細表示からインストールを選択、パッケージをダウンロード
  4. ダウンロードしたパッケージのSHA1をとり、ダウンロード成否チェック
  5. ダウンロードしたパッケージを実行。
  6. インストール完了したら、インストール済み定義ファイルフォルダにアプリケーション定義をコピー

アップデート

  1. Giraffeクライアントを起動
  2. インストール済み定義ファイルフォルダから定義ファイルを読み込み。
  3. Program Files 以下のディレクトリを1階層だけ掘り、アプリケーション定義ファイルを検索する。上記処理で登録されているものとかぶっている場合は、この処理で見つかったものを優先する
  4. 「更新」処理で、最新の定義ファイルを取得
  5. アップデートされているものがあれば、マークをつける
  6. あとはインストールと同じ

開発要素

クライアントアプリケーション

  • ファイルのダウンロード
    • 非同期ダウンロード
    • ダウンロードダイアログ
  • インストーラパッケージのキック
    • 成否判定
    • 勝手定義の保存
  • インストール済みアプリケーションの列挙
    • 勝手定義
    • アプリケーション同梱定義 [実証プログラム作成済み]
  • アプリケーション導入パスの列挙
    • Program Files の位置を調べる方法(miniSD/microSD含め、インストール先選択に出てくる項目)
    • レジストリにキーがある?
      • HKLM\Software\Apps\*\InstallDir を列挙。これならかなり効率的そう!

サーバーアプリケーション (完成)

  • CakePHP か Ruby on Rails(Rails覚えること多すぎるので見送り) で。
  • アプリケーションの登録
    • 配信データのURLを登録
  • アプリケーションリストの配信
  • アプリケーションリストの自動更新

データ構成

アプリケーション定義 *.giraffe

各アプリケーションごとに1ファイル作成する、アプリケーションや公開中のバージョンに関する情報。

<?xml version="1.0"?>
<Application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ApplicationKey>EbiSoft.EbIRC</ApplicationKey><!-- アプリケーションキー(他とかぶらないものを指定する) -->
  <Name>EbIRC</Name><!-- アプリケーションの名前 -->
  <Description>Windows Mobile 向けのシンプルなIRCクライアントです。</Description><!-- アプリケーションの説明 -->
  <InformationUrl>http://iseebi.half-done.net/?Software/EbIRC</InformationUrl><!-- 説明ページのURL -->
  <SoftwareInformationUrl>http://kanna.starfleet.ac/~iseebi/halfdone_arcs/iseebi/ebirc/EbIRC.giraffe</SoftwareInformationUrl><!-- 最新のこのファイルのURL -->
  <Author><!-- 作者情報 -->
    <Name>伊勢 シン</Name><!-- 作者の名前 -->
    <Contact>いせてき@half-doneどっとnet</Contact><!-- 連絡先 -->
    <WebSite>http://iseebi.half-done.net/</WebSite><!-- ウェブサイト -->
  </Author>
  <ActiveVersionSerial>2</ActiveVersionSerial><!-- 現在の有効バージョンID -->
  <!--
    ・有効バージョンIDのものより、古いバージョンIDのものがインストールされていれば詳細画面に「最新版があります」として表示される
    ・有効バージョンIDのものより、新しいバージョンIDのデータがこのファイルにあれば詳細画面に「開発版」として表示される。
  -->
  <Versions>
    <Version>
      <VersionSerial>1</VersionSerial><!-- バージョンID -->
      <VersionName>Ver 0.14 α-46</VersionName><!-- バージョン表示 -->
      <ReleaseDate>2007-12-08T00:00:00+09:00</ReleaseDate><!-- 公開日時 -->
      <Description>IRCメッセージ受信処理の修正(PONGを送信できていない問題に対応)</Description><!-- 更新情報 -->
      <DownloadUrl>http://half-done.net/bin/hddown.php?domain=iseebi&amp;file=ebirc/EbIRC_0.14_update1.CAB</DownloadUrl><!-- ダウンロードURL。CABファイルまたはそれにリダイレクトするものを指定すること -->
    </Version>
    <Version>
      <VersionSerial>2</VersionSerial>
      <VersionName>Ver 0.14 α-47</VersionName>
      <ReleaseDate>2007-12-08T00:00:00+09:00</ReleaseDate>
      <Description>国際化対応</Description>
      <DownloadUrl>http://half-done.net/bin/hddown.php?domain=iseebi&amp;file=ebirc/EbIRC_0.14_update2.CAB</DownloadUrl>
    </Version>
  </Versions>
</Application>

アプリケーションリスト *.giralist

集約サイトからダウンロードする、配信しているアプリケーションの一覧とアプリケーション定義のダウンロード先の情報。

TODO

  • アプリケーションファイルフォーマットの再作成
    • Software と Application で相違があるのをどっちかにまとめる
  • 情報配信サイトのデザイン [完]
    • カーズたんに外注
  • 情報配信サイトのプライマリサイトを決める [完]
    • giraffe.iseteki.net (実態は asca.project-comets.net。余裕がなくなったら移設の方向で)
    • giraffe.asca.project-comets.net?(電源周りで不安)
    • giraffe.half-done.net?
    • giraffe.ebisoft.net?
      • XREA?
      • ほかのサイト?(PHPとcron、CGI外部呼び出し許可が最低限必要)
Last modified:2008/04/24 01:24:42
Keyword(s):
References:[FrontPage]