04

Adobe AIR Update Frameworkを使ってみる Adobe AIR Update Frameworkを使ってみる

| | コメント(0) | トラックバック(0)
Bookmarks: はてなブックマークへ追加このエントリーのはてなブックマーク数 Buzzurlへ追加このエントリーのBuzzurlブックマーク数 livedoorクリップへ追加このエントリーのlivedoorクリップ数 Yahoo!ブックマークへ追加人が登録 add to del.icio.us add to Reddit
 

2008/12/01 追記: AIR 1.5 SDKからAdobe AIR Update Frameworkが含まれていました

AIRアプリの自動更新の仕組みの話。

AIR 1.1で日本語対応がされたわけなんですが、さぐりプレーヤーでは0.1.1まで自動更新ダイアログが英語で表示されてました。でもこれはAIRの問題じゃなくて、単純に使っているライブラリが英語のUIを持っていただけ。
http://blog.everythingflex.com/air-central/everythingflexair1swc/updatemanager/

AirAutoUpdaterという日本の方が作った(当然日本語)のAutoUpdateライブラリもあってこっちに置き換えようかなとか思ったりも。
http://www.libspark.org/wiki/AirAutoUpdater

というかAdobeさん、そろそろなんか考えとらんのかね。と思い調べてみたところあった。
http://labs.adobe.com/wiki/index.php/Adobe_AIR_Update_Framework

ドキュメントを読んで対応していくの巻。

Step1: frameworkを組み込みなさい

FlexBaseなら applicationupdater.swc applicationupdater_ui.swc をlibに入れなさい。

UIあり版とUIなし版の二つあって、どっちかを入れればいいらしい。UとりあえずUI版を使いたいからFlexだからapplicationupdater_ui.swcを追加した。(HTMLベースの場合はswf(flaash)を使う)

Step2: 更新用ファイルを用意しなさい

http://apps.makotokw.com/saguriclient/update/?fv=2
つくった。

Step3: ApplicationUpdaterを作ってコンフィグを設定しろ

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0">
<url>http://example.com/updates/update.xml</url>
<delay>1</delay>
<defaultUI>
<dialog name="checkForUpdate" visible="false" />
<dialog name="downloadUpdate" visible="false" />
<dialog name="downloadProgress" visible="false" />
</defaultUI>
</configuration>
なファイルを用意して
var appUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI();
appUpdater.configurationFile = new File("cfg/updateConfig.xml");

でも良いし。

以下の用に全部コードで設定してもいいらしい。

var appUpdater:ApplicationUpdaterUI= new ApplicationUpdaterUI();
appUpdater.updateURL = " http://example.com/updates/update.xml";
appUpdater.delay = 1;

configファイルをわざわざつくるなんて面倒なので、コードの方で対応。下記のようにする。ダイアログ表示についてはCheckForUpdateだけOFFにする。CheckForUpdateは更新をチェックするかどうかを問い合わせるダイアログのこと。自動でチェックして新しいバージョンがあったときだけフローに入りたいのでOFFにした。

var appUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI();
appUpdater.updateURL = "http://apps.makotokw.com/saguriclient/update/?fv=2";
appUpdater.delay = 1;
appUpdater.isCheckForUpdateVisible = false;

ちなみにdelayによるインターバルを判定するため%APPDATA%\{アプリケーションID}\Local Store\#ApplicationUpdater\state.xmlにチェック日を書いているようだ。

Step 4: initializeをよべ

appUpdater.initialize();
を唱えるだけでdelay(インターバル)を見て更新チェックしてくれる。
明示的に更新チェックする場合はcheckNow()を呼ぶ。

なお、試したところstate.xmlがない時はinitializeだけでは更新のフローに入らないようだ。ファイルがない=インストール直後と考えられるのでチェックしないのだろう。というわけでテストの時はstate.xmlの日付をdelay(インターバル)より昔にするか、checkNowを直接呼ぶのが吉。

プチトラブル

残念ながらダイアログに表示されるアプリケーション名が正しく表示されなかった。どうやらAIR1.1のローカライズ対応版の

<name>
<text xml:lang="en">Saguri Player</text>
<text xml:lang="ja">さぐりプレーヤー</text>
</name>

を認識してくれないので、古い書き方で

<name>Saguri Player</name>

に戻さざるを得なかった。むー。AIR 1.1対応版を期待。

結果:

本物(!?)っぽくていいぞ!


ただ、今配布中のバージョンはeverythingflexの自動更新が走るので、みれるのは次のバージョンアップから。。。

トラックバック(0)

トラックバックURL: http://blog.makotokw.com/mt/mt-tb.cgi/3009

コメントする