[AIR] ApplicationUpdaterUIを使ったアップデートの流れ(基本編)

2010/04/1

こんにちは。きんくまです。
4月1日になりましたね。新年度ですね。
新社会人、新入学生のみなさま、おめでとうございます。ですね。
私も1ヶ月半ほどかかっていたとある案件が、昨日無事に終わりほっとしているところです。

さて、AIRではアップデート機能を実装することが可能です。
そのあたりを基本編とハマリ編の2つの記事にわけて紹介したいと思います。

マニュアル

実は今回の機能紹介については、ほとんどマニュアルのままです。
AIR開発では毎日これのPDF版とにらめっこして、このAPIならうまくいくんじゃないか?とか
やりながら実験→実装を繰り返してました。
>> Adobe Flash CS4 Professional での Adobe AIR 1.5 アプリケーションの開発

AIRのアップデート機能の種類

AIRではアップデート機能に2種類の実装方法があります。
・ApplicationUpdaterUI(Adobe が作ったアラートパネルが表示される)
・ApplicationUpdater(自作アラートパネルを表示させることが可能)

このうち、ApplicationUpdaterUIを使うと比較的手軽にアップデート機能を実装することができます。

ApplicationUpdaterUIのアラートパネルのサンプル

air_update_fig2

なので、今回はApplicationUpdaterUIを使った流れを紹介します。
っていうか、ApplicationUpdaterの方は試してないってだけなんですけどね、、。

更新の流れ

■サーバー側の準備
1)新しいバージョンのAIRファイルを用意する
2)更新内容がかかれたXMLを用意する
3)1と2をサーバーに設置する

■クライアント側の準備
1)Flaファイルでapplicationupdater_ui.swcをひもづける
2)ASでApplicationUpdaterUIの設定をする

■実際の流れ
1)アプリ起動
2)設定したタイミングでアプリからサーバーの更新XMLを読み込みに行く
3)現在のバージョンと、XMLにかかれたバージョンを比較して新しいバージョンだったら
 「更新しますかダイアログ」を出す
4)「はい」を押すと、新しいバージョンのデータをダウンロード。
ダウンロード完了後「インストールしますかダイアログ」を出す。
5)「はい」を押すと、現在のアプリを終了して、自動でインストール、新バージョンで起動

となります。このうち、制作者が気にしなくてはいけないのは、2の部分のみで、3~5は
プロパティを1行設定するだけで、自動でやってくれます。

サーバー側の準備

■1)新しいバージョンのAIRファイルを用意する

アップデートするファイルを用意するのですが、マニュアルによると

アップデート AIR ファイルのアプリケーション ID と 発行者 ID の両方が、アップデートするアプリケーションと一致する
必要があります。発行者 ID は署名者の証明書から取得します。つまり、アップデートおよびアップデートされるアプリ
ケーションの両方を同じ証明書を使用して署名する必要があります。

となっていて、AIR設定のID: com.adobe.example.no-nameの部分と証明書が同じようになっていないと、
同じアプリと認識せず、アップデート機能も働かないということになります。

設定パネルで、新しい任意のバージョン番号を記入しておきましょう。
1.0→1.1や、1.0→1.0.1なんてのもOKです。

■2)更新内容がかかれたXMLを用意する

update.xmlというXMLファイルを作ります。update.xmlは別の名前でもかまいません。
そのときは、AS側でファイル名を変えてあげてください。

<?xml version="1.0" encoding="utf-8"?>
<update xmlns="http://ns.adobe.com/air/framework/update/description/1.0">
	<version>2.0</version>
	<url>http://www.kuma-de.com/hoge/fuga/air_update.air</url>
	<description><![CDATA[
		バージョン2.0では次の機能が追加されます。
		・こんなことや
		・あんなことも
		・ほら!たくさんだよ
	]]></description>
</update>

versionはアップデートした後のバージョンを
urlはサーバーに設置するドメイン名からの絶対パスを書きます

■3)1と2をサーバーに設置する

サーバーに設置するときは、1と2を同階層においておきましょう。
別階層でもたぶん動くとおもうんですが、マニュアルでそうなってた気がするので。

クライアント側の準備

■1)Flaファイルでapplicationupdater_ui.swcをひもづける

プログラムファイルの中にあるapplicationupdater_ui.swcをコピーして、プロジェクトの中に入れておきます。
もとデータのありか
C:\Program Files (x86)\Adobe\Adobe Flash CS4\AIK1.5\frameworks\libs\air\applicationupdater_ui.swc

これをlibsとかいうフォルダでも作って、Flashからひもづけます。

air_update_fig1

■2)ASでApplicationUpdaterUIの設定をする

package  
{
	import air.update.ApplicationUpdaterUI;
	import air.update.events.UpdateEvent;
	import flash.display.Sprite;
	import flash.events.Event;
	/**
	 * ...
	 * @author KinkumaDesign
	 */
	public class Main extends Sprite
	{
		private var _updateUI:ApplicationUpdaterUI;
		
		public function Main() 
		{
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			
			initUpdateUI();
		}
		
		private function initUpdateUI():void
		{
			_updateUI = new ApplicationUpdaterUI();	
			//アップデートXMLのパス(絶対パス) これのみ必須であとは任意
			_updateUI.updateURL = "http://www.kuma-de.com/hoge/fuga/update.xml";
			
			//新しい更新を周期的にチェックする間隔(日)。
			_updateUI.delay = 1;
			
			//[アップデートの有無をチェック]、[アップデートがありません]、
			//および [アップデートエラー] ダイアログボックスの表示
			_updateUI.isCheckForUpdateVisible = false;
			
			//[アップデートのダウンロード] ダイアログボックスの表示
			_updateUI.isDownloadProgressVisible = true;
			
			//[アップデートのダウンロード] ダイアログボックスの表示
			_updateUI.isDownloadUpdateVisible = true;
			
			//[アップデートのインストール] ダイアログボックスの表示
			_updateUI.isInstallUpdateVisible = true;
			
			//初期化イベントの登録(したければ)
			_updateUI.addEventListener(UpdateEvent.INITIALIZED, updateUIInitHD);
			
			//初期化
			_updateUI.initialize();
		}
		
		private function updateUIInitHD(e:UpdateEvent):void 
		{
			_updateUI.addEventListener(UpdateEvent.INITIALIZED, updateUIInitHD);
			trace('init complete');
		}
	}

}

このうち、delayの間隔は任意ですが、デバッグでは1日ごとに確認するのも不便なので、
参考までに日単位に直した時間いろいろを記載しておきます。

1時間: 0.041667
1分: 0.000694
30秒: 0.000347
15秒: 0.000173
10秒: 0.000057

_updateUI.initialize(); をしたタイミングで、delayの間隔と前回更新XMLを読みにいった時間を見比べて、
自動で更新動作が始まります。

うまくいくと、一番上の方にアップしておいたサムネのようなダイアログが出て、更新作業が始まります。

参考書籍

そうそう、ついでにAIRの参考書籍のご紹介。
私は以下の本を持ってます。

>> Adobe AIRプロフェッショナルガイド Windows & Macintosh対応 (単行本(ソフトカバー))
クジラ先生の本。AIRが出始めたばかりの頃に書かれてます。
AS3とJSのどちらでも作れるようになってます。

>> Flashで作る AIRアプリケーション レシピブック (Web Designing BOOKS) (単行本(ソフトカバー))
カヤックの本。Web Designingの連載をまとめたものを連載当初のものからリライトしたもの。
広く浅く機能を紹介するのと、実案件のインタビューの2本だて。
アップデート機能や、証明書のことにも触れていて、ざっと内容を把握するのにおすすめ。

>> Adobe AIR クックブック ―プロフェッショナルに学ぶRIAプログラミングの実践 (大型本)
カヤックの本よりもつっこんだ内容を網羅しています。
アップデート機能については、ApplicationUpdaterUIでなく自作グラフィックで作るApplicationUpdaterの方も
紹介されています。また暗号化されたローカルデータの読み書きについても書かれています。

LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る