(57)【特許請求の範囲】
【請求項１】
情報処理装置であって、
第１の種別のアプリケーションと、前記アプリケーションの機能を拡張するため前記アプリケーションに付加される第２の種別のアプリケーションとを含む複数のアプリケーションを記憶する可搬媒体の接続を検知する検知手段と、
前記検知手段による検知に応じて、前記第１の種別のアプリケーションを先にインストールし、その後、前記第２の種別のアプリケーションをインストールするという順番を規定したインストールタスクリストを作成する作成手段と、
前記作成手段により作成されたインストールタスクリストに基づき、前記第１の種別のアプリケーションを先にインストールし、その後、前記第２の種別のアプリケーションをインストールするインストール手段と、
前記インストール手段によるインストールの後、前記第２の種別のアプリケーションを有効化した後に、前記第１の種別のアプリケーションを開始する制御手段と、
を有し、
前記作成手段は、前記第１の種別のアプリケーションおよび前記第２の種別のアプリケーションの夫々のアプリケーションのペアとなる、前記可搬媒体に記憶されたライセンスファイルが前記情報処理装置に対応しているか否か確認し、対応していないライセンスファイルのペアとなる前記第１の種別および／または第２の種別のアプリケーションを除外した前記インストールタスクリストを作成することを特徴とする情報処理装置。
【請求項２】
前記可搬媒体に記憶されている複数のアプリケーションのうち、前記第１の種別に属するアプリケーションと、前記第２の種別に属するアプリケーションにグループ分けする手段をさらに有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記インストール手段は、前記第２の種別のアプリケーションを一旦仮インストールすることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記インストール手段が仮インストールした前記第２の種別のアプリケーションを有効化する際に、前記第１の種別のアプリケーションを停止し、停止した前記第１の種別のアプリケーションを前記有効化の後に開始することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記インストール手段は、前記第１の種別のアプリケーションが開始されている場合、前記第１の種別のアプリケーションの停止の後、前記第２の種別のアプリケーションをインストールし、前記制御手段は、前記インストールの後、前記第１の種別のアプリケーションを開始することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記制御手段は、前記第１の種別のアプリケーションの開始が前記情報処理装置の再起動を必要とする場合、再起動後に前記第１の種別のアプリケーションを開始する状態にすることを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記第１の種別のアプリケーションおよび第２の種別のアプリケーションは、ＯＳＧｉ（Ｏｐｅｎ  Ｓｅｒｖｉｃｅｓ  Ｇａｔｅｗａｙ  Ｉｎｉｔｉａｔｉｖｅ）におけるホストバンドルに対応するアプリケーションおよびフラグメントバンドルに対応するアプリケーションであることを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
情報処理装置の制御方法であって、
第１の種別のアプリケーションと、前記アプリケーションの機能を拡張するため前記アプリケーションに付加される第２の種別のアプリケーションとを含む複数のアプリケーションを記憶する可搬媒体の接続を検知する検知ステップと、
前記検知ステップによる検知に応じて、前記第１の種別のアプリケーションを先にインストールし、その後、前記第２の種別のアプリケーションをインストールするという順番を規定したインストールタスクリストを作成する作成ステップと、
前記作成ステップにより作成されたインストールタスクリストに基づき、前記第１の種別のアプリケーションを先にインストールし、その後、前記第２の種別のアプリケーションをインストールするインストールステップと、
前記インストールステップによるインストールの後、前記第２の種別のアプリケーションを有効化した後に、前記第１の種別のアプリケーションを開始する制御ステップと、
を有し、
前記作成ステップは、前記第１の種別のアプリケーションおよび前記第２の種別のアプリケーションの夫々のアプリケーションのペアとなる、前記可搬媒体に記憶されたライセンスファイルが前記情報処理装置に対応しているか否か確認し、対応していないライセンスファイルのペアとなる前記第１の種別および／または第２の種別のアプリケーションを除外した前記インストールタスクリストを作成することを特徴とする情報処理装置の制御方法。
【請求項９】
請求項１乃至７のいずれか１項に記載の情報処理装置をコンピュータで実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラム（以下、「アプリ」）のインストール方法に関するものである。
【背景技術】
【０００２】
近年、画像形成装置においては、ＪＡＶＡ（登録商標）環境に代表されるようなアプリ動作環境が提供されている。ＪＡＶＡ（登録商標）の持つプログラムの可搬性を利用して、拡張可能なアプリを提供する技術が提案されている。画像形成装置の機能やユーザビィリティの向上を図るために、上記ＪＡＶＡ（登録商標）環境などの環境下で動作するアプリを作成し、画像形成装置にインストールすることで、当該アプリにより所望の機能を実現できる。
【０００３】
アプリプラットフォームとしては、組み込み機器向けのＪＡＶＡ（登録商標）アプリプラットフォームである、ＯＳＧｉ（Ｏｐｅｎ  Ｓｅｒｖｉｃｅｓ  Ｇａｔｅｗａｙ  Ｉｎｉｔｉａｔｉｖｅ）Ｓｅｒｖｉｃｅ Ｐｌａｔｆｏｒｍ（以下、「ＯＳＧｉ」）がある。これについては、例えば、非特許文献１に記載がある。ＯＳＧｉでは、ソフトウェアモジュールの管理単位としてバンドルを定義しており、インストール／開始／停止／更新／アンインストールからなるライフサイクルを管理するための仕様を定義している。ここで、「バンドル」とは、ＪＡＶＡ（登録商標）モジュールのことを指す。このようなアプリプラットフォームは、コピー、スキャン、プリント等の組み込み機能をアプリに提供することができる。
【０００４】
従来、アプリを画像形成装置にインストールする方法は、クライアント端末からネットワーク経由でインストールする方法が知られている。しかし、そのようなインストール方法の場合、予めネットワークの設定等が必要となるため、インストールを行うユーザの負荷となっていた。そこで、ＵＳＢメモリに代表されるようなフラッシュメモリの中にドライバソフトを配置しておき、該メモリが画像形成装置のようなデバイスに挿入されたことを検知して、該メモリの中に配置されたドライバソフトをインストールする仕組みが提案されている。この仕組みは、例えば、特許文献１に記載されている。この仕組みを応用し、ドライバソフトの代わりにアプリとアプリを復号化するライセンスをフラッシュメモリの中に配置しておき、フラッシュメモリを画像形成装置に挿入されたことを検知して、アプリをインストールする方法が考えられる。更に、インストールしたアプリを開始状態にすれば、ＵＳＢを挿すだけで手軽にアプリを利用することができ、ユーザにとって作業負荷が軽減される。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】ＯＳＧｉ Ｓｅｒｖｉｃｅ Ｐｌａｔｆｏｒｍ，Ｒｅｌｅａｓｅ  ４， ｈｔｔｐ：／／ｗｗｗ．ｏｓｇｉ．ｏｒｇ／Ｄｏｗｎｌｏａｄ／Ｒｅｌｅａｓｅ４Ｖ４０， ２００５年１０月
【特許文献】
【０００６】
【特許文献１】特開２００６−１７８５３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ＯＳＧｉのバンドルの種類には、ホストバンドルとフラグメントバンドルという仕組みがあり、これらのアプリを考慮するときには、以下に述べるようなフラグメントバンドルの制限によりインストールと開始する順番に注意を払う必要がある。
【０００８】
フラグメントバンドルとは、単独では動作せず、ホストバンドルのクラスローダ空間にバンドル自身を追加（アタッチ）する形式のバンドルである。このフラグメントバンドルをインストールする時には、ホストバンドルが停止していることがＯＳＧｉの規約として求められている（制限１）。また、フラグメントバンドルは単独では動作しないので、インストール時には、必ずホストバンドルがインストールされている必要がある（制限２）。
【０００９】
このような順番依存を考慮するときに、予めユーザがインストーする順番を記載した設定ファイルをフラッシュメモリの中に配置しておき、その順番に従ってインストールすることが考えられる。しかし、そのためには、フラッシュメモリ（ＵＳＢメモリ）を用意するユーザがホストバンドルとフラグメントバンドルを認識する必要があり、ユーザにとっての負荷が発生するという課題があった。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明は、情報処理装置であって、第１種別のアプリケーションと、当該アプリケーションの機能を拡張するため当該アプリケーションに付加される第２種別のアプリケーションとを含む複数のアプリケーションを記憶する可搬媒体の接続を検知する検知手段と、検知手段による検知に応じて、第１種別のアプリケーションを先にインストールし、その後、第２種別のアプリケーションをインストールするという順番を規定したインストールタスクリストを作成する作成手段と、作成手段により作成されたインストールタスクリストに基づき、第１種別のアプリケーションを先にインストールし、その後、第２種別のアプリケーションをインストールするインストール手段と、インストール手段によるインストールの後、第２種別のアプリケーションを有効化した後に、第１種別のアプリケーションを開始する制御手段とを有し、作成手段は、第１の種別のアプリケーションおよび第２の種別のアプリケーションの夫々のアプリケーションのペアとなる、可搬媒体に記憶されたライセンスファイルが情報処理装置に対応しているか否か確認し、対応していないライセンスファイルのペアとなる第１の種別および／または第２の種別のアプリケーションを除外したインストールタスクリストを作成することを特徴とする情報処理装置を提供する。
【発明の効果】
【００１１】
本発明は、フラッシュメモリに、アプリとライセンスを配置しておき、画像形成装置へのフラッシュメモリの挿入をトリガーとして、アプリをインストールする技術を対象とする。本発明によれば、アプリがホストバンドルとフラグメントバンドルの場合でも、通常アプリと同様に任意に配置するだけでインストール可能となる。
【図面の簡単な説明】
【００１２】
【図１】画像形成装置のハードウェア構成図である。
【図２】画像形成装置のソフトウェアモジュール階層図である。
【図３】アプリのインストールする流れを示したブロック図である。
【図４】フラグメントバンドルの概念図である。
【図５】アプリ管理画面、インストール画面のＵＩを示した図である。
【図６】フラグメントバンドルの仮インストール状態を説明するためのブロック図である。
【図７】フラグメントバンドルの有効化、無効化を説明するためのブロック図である。
【図８】クイックインストールサービスにおける基本的なクイックインストールを説明するためのブロック図である。
【図９】ライセンスファイルとバンドルのマニフェストを示したものである。
【図１０】クイックインストールサービスにおける、クイックインストールのフローチャートである。
【図１１】クイックインストールサービスにおける、ｊａｒとｌｉｃのペア抽出処理のフローチャートである。
【図１２】実施例１における、ホストバンドルとフラグメントバンドルを含むクイックインストールを説明するためのブロック図である。
【図１３】実施例１における、ホストバンドルとフラグメントバンドルを含むクイックインストールのフローチャートである。
【図１４】実施例１における、インストールタスクのグループごと並べ替え処理のフローチャートである。
【図１５】実施例１における、クイックインストールサービスからフラグメントバンドルを仮インストールする時のシーケンス図である。
【図１６】実施例１における、クイックインストールサービスから仮インストールされたアプリを有効化する時のシーケンス図である。
【図１７】実施例２における、ホストバンドルが開始している状態から、フラグメントバンドルを含むアプリのクイックインストールを説明するためのブロック図である。
【図１８】実施例２における、ホストバンドルの状態を考慮したフラグメントバンドルを含むアプリのクイックインストールのフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための最良の形態について図面を用いて説明する。初めに、以下の記載において用いる用語の定義を行う。
【００１４】
＜用語の定義＞
「バンドル」とは、ＪＡＶＡ（登録商標）モジュールのことを指し、本発明においてはアプリ（アプリケーション）と同義である。
「ホストバンドル」とは、フラグメントバンドルの追加対象となるバンドルである。
「フラグメントバンドル」とは、単独では動作せず、ホストバンドルのクラスローダ空間に自分自身を追加するバンドルである。後入れで機能を付加していくプラグインアプリケーションとしての使い方を想定するものである。
ホストバンドルへフラグメントバンドルを追加すること、つまりホストバンドルへアタッチすることを、以降「フラグメントバンドルのインストール」と呼ぶ。なお、ＯＳＧｉの仕様上、ホストバンドル：フラグメントバンドル＝１：Ｎの関係にあり、フラグメントバンドルは、１つのホストバンドルにのみ追加できるものとなる。ここで、「ＯＳＧｉ」はＯｐｅｎ  Ｓｅｒｖｉｃｅｓ  Ｇａｔｅｗａｙ  Ｉｎｉｔｉａｔｉｖｅの略称である。
「一般アプリ」とは、フラグメントバンドルでもホストバンドルでもないバンドルを指す。
「クイックインストール」とは、ＵＳＢメモリにバンドルとライセンスを配置しておき、そのＵＳＢメモリの画像形成装置への挿入をトリガーとして、それらのバンドルをインストールし、インストール完了後開始状態まで進めるインストール方法のことを指す。
【００１５】
＜クイックインストールの背景と課題＞
最初に図１〜図７において、以降に述べる全ての実施例に共通なクイックインストールの背景と課題について説明する。また、図８〜図１１において、クイックインストールの基本形である一般アプリのクイックインストールについて説明する。
【００１６】
図１は、印刷機能やスキャン機能、ネットワーク通信機能などを備える情報処理装置（画像形成装置）１３０のハードウェア構成図である。コントローラ１００は、画像形成装置１３０を制御するコントローラである。コントローラ１００はスキャナ部１１３やプリンタ部１１４と電気的に接続され、一方でＬＡＮ１１６を介して外部デバイスと接続される。
【００１７】
ＣＰＵ１０１は、ＲＯＭ１０２に記憶された制御プログラム等に基づいて接続中の各種ハードウェアとのアクセスを統括的に制御し、またコントローラ内部で行われる各種処理についても統括的に制御する。ＲＯＭ１０２は、読み出し専用の不揮発記憶領域であり、画像形成装置１３０のブートプログラムなどが格納される。ＲＡＭ１０３はＣＰＵ１０１が動作するためのシステムワークメモリであり、各種データを一時記憶するためのメモリである。このＲＡＭ１０３は、記憶した内容を電源ｏｆｆ後も保持可能なＦＲＡＭおよびＳＲＡＭ、電源ｏｆｆ後に記憶内容が消去されるＤＲＡＭなどにより構成される。ＨＤＤ１０４は不揮発記憶領域であり、システムアプリなどを格納する。図３で説明するインストールするアプリを含むファームウェアは、ＨＤＤ１０４に格納される。
【００１８】
操作部Ｉ／Ｆ１０５は、システムバス１１９と操作部１１８を接続するインタフェース部である。具体的には操作部１１８に表示するデータをシステムバス１１９から受取り表示すると共に、操作部１１８からの入力情報をシステムバス１１９へ出力する。画像形成装置１３０に対するユーザの指示や情報提示は、操作部１１８を介して行う。ネットワークＩ／Ｆ１０６はＬＡＮ１１６、ＷＡＮ１１７及びシステムバス１１９に接続し、外部との情報の入出力を行う。
【００１９】
スキャナＩ／Ｆ１０８は、スキャナ部１１３から受取った画像データに対して、補正、加工、及び編集を行う。画像形成部１０９は、画像データの方向変換、画像圧縮、伸張部などを行う。プリンタＩ／Ｆ１１０は、画像形成部１０９から送られた画像データを受取り、画像形成後にプリンタ部１１４にて印刷する。ＵＳＢインタフェース１２０は、種々の周辺機器を画像形成装置１３０に接続する汎用インタフェースであり、ＵＳＢへの接続制御を行う。ここでは可搬媒体としてフラッシュメモリ１２１が接続される。
【００２０】
図２は、画像形成装置１３０のソフトウェアモジュール階層図である。なお、図２以降に示す各ソフトウェアはＲＯＭ１０２、もしくはＨＤＤ１０４に保存され、ＣＰＵ１０１にて実行される。また、実行時に使用する各種情報はＲＡＭ１０３もしくはＨＤＤ１０４に保持してソフトウェア機能間での各種情報のやりとりを行う。さらに外部機器との通信は、ネットワークＩ／Ｆ１０６を用いて通信を行う。
【００２１】
ソフトウェアは、オペレーティングシステム（以下、「ＯＳ」）プラットフォーム２０１を有し、ＯＳ２０１上にソフトウェアプラットフォーム２０２が構成される。ソフトウェアプラットフォーム２０２は、ＪＡＶＡ（登録商標）ＶＭ２０３のランタイム環境として構成され、インタプリタとしてのＪＡＶＡ（登録商標）ＶＭ２０３、ライブラリ２０４、フレームワーク群２０５を備える。ライブラリ２０４は、標準のＡｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ（ＡＰＩ）ライブラリを含む。
【００２２】
フレームワーク群２０５はＯＳＧｉ２０６を含み、ＯＳＧｉ２０６は、単一のＪＡＶＡ（登録商標）ＶＭ２０３上に複数のアプリを動作させる。更に、ＯＳＧｉ拡張部２１３は、ＯＳＧｉ２０６に対し必要に応じて機能を拡張可能であることを示す。ＯＳＧｉ２０６はアプリのライフサイクルの管理やアプリ間通信機能などを提供する。画像形成装置１３０の起動時に、ＯＳＧｉ２０６は、ＨＤＤ１０４に保存されたサービス起動順リストに従い、後述するログインアプリ２１１、インストール制御サービス２０７、アプリ管理サービス２０８などのシステムサービスを起動していく。このＯＳＧｉ２０６上には、複数のシステムサービスがプリインストールされる。システムサービスには、複数のアプリ群を管理し、新たなアプリの追加、更新、削除をするためのアプリ管理サービス２０８がある。アプリ管理サービス２０８は、インストール制御サービス２０７を利用して、アプリの追加、更新、削除を行う。また、アプリ管理を目的とするＵＩをサーブレットアプリとして提供する。
【００２３】
ストレージサービス２１０は、フラッシュメモリ１２１を管理するサービスである。フラッシュメモリ１２１を画像形成装置１３０に接続すると、ＵＳＢインタフェース１２０がフラッシュメモリ１２１の接続を認識し、ＵＳＢドライバを介して、ストレージサービス２１０に伝える。フラッシュメモリ１２１の内容は、ＵＳＢドライバを介してＵＳＢインタフェース１２０に伝わり把握可能となる。
【００２４】
クイックインストールサービス２０９は、クイックインストールを制御するサービスであり、フラッシュメモリ１２１の接続を認識すると、後述する方法によりそのデバイスに適切なアプリを抽出し、クイックインストールを行う。このときのＵＳＢストレージの接続の認識は、ストレージサービス２１０にイベントリスナーを登録することにより実現している。
【００２５】
ログインアプリ２１１は、ログインユーザを管理するためのアプリである。ログインアプリ２１１は、ログイン中に任意のアプリから任意のタイミングでログイン情報の問い合わせが来る可能性があるため、停止できない特性を持つアプリである。ログインアプリが停止するとログイン情報の取得ができなくなるため、例えば、ログイン情報に紐づくデータを利用するアプリの場合、データの取得に失敗し、その動作に支障が生じる。ここで、ログイン情報とは、現在画像形成装置１３０にログインしているユーザのログイン名やメールアドレスなどの情報を指す。前記特性を持つため、画像形成装置１３０が起動中において、このログインアプリ２１１は必ず１つが動作する。ログインアプリ２１１は、図４で述べるような、ホストバンドルとフラグメントバンドルという形態で提供することが可能である。
【００２６】
一般アプリ２１２は、画像形成装置１３０において各種処理をユーザに提供する。例えば、画像の加工や圧縮アプリ、印刷制限などの部門管理を行うアプリなどがある。各種機能を実現する一般アプリ２１２は、アプリ管理サービス２０８の管理下で動作する。アプリ管理サービス２０８は、管理下に追加されたアプリのバージョンを含むアプリ情報、ライセンス情報などを保持する。さらに、画像形成装置１３０内のアプリのアンインストール指示に応答し、アプリ管理サービス２０８は一般アプリ２１２を管理対象から外す。一般アプリ２１２は、ログインアプリ２１１と同様に、図４のホストバンドルとフラグメントバンドルという形態で提供することが可能である。
【００２７】
図３は、ユーザがＰＣ３００から画像形成装置１３０へアプリをインストールする流れを示すブロック図である。ＰＣ３００のＷＥＢブラウザ（不図示）に図５のインストール画面５３０で示すＷＥＢページで構成されたアプリのインストールＵＩ３０１を表示し、このインストールＵＩ３０１からインストールしたいアプリを指定し、インストールを行なう。インストールＵＩ３０１で指定されたアプリを受信したアプリ管理サービス２０８は、それをインストール制御サービス２０７に渡す。アプリファイルを受信したインストール制御サービス２０７は、ＯＳＧｉ２０６にインストールを依頼し、ＯＳＧｉ２０６がインストールを行う。インストールされたアプリは、アプリ管理サービス２０８によって管理される。
【００２８】
図４は、フラグメントバンドルの概念を説明する図である。ここでは、ホストバンドル４００に対して、言語ローカライズリソースをもつフラグメントバンドル４０１と４０２がインストールされる例を示している。ホストバンドルにフラグメントバンドルをインストールするためには、ＯＳＧｉ２０６の規約上、以下のマニフェスト、及びバンドルパーミッションの指定が必要となる。
【００２９】
■ホストバンドルのマニフェスト４０３
Ｂｕｎｄｌｅ−ＭａｎｉｆｅｓｔＶｅｒｓｉｏｎに、「２」と指定する。Ｂｕｎｄｌｅ−ＳｙｍｂｏｌｉｃＮａｍｅには、フレームワーク内で一意な名前を付ける。
■フラグメントバンドルのマニフェスト４０５
Ｂｕｎｄｌｅ−ＭａｎｉｆｅｓｔＶｅｒｓｉｏｎに、「２」と指定する。Ｆｒａｇｍｅｎｔ−Ｈｏｓｔには、ホストバンドルのマニフェスト４０３に記載の＜ホストのバンドルシンボリック名＞を指定する。本値が一致することでホストバンドルとフラグメントバンドルが同一アプリの構成要素であることを示すものとなる。
■ホストバンドルのパーミッション４０４
ＢｕｎｄｌｅＰｅｒｍｉｓｓｉｏｎ[バンドルシンボリック名、 ＨＯＳＴ]
■フラグメントバンドルのパーミッション４０６
ＢｕｎｄｌｅＰｅｒｍｉｓｓｉｏｎ[バンドルシンボリック名、ＦＲＡＧＭＥＮＴ]
【００３０】
これらの条件を満足する状態でフラグメントバンドルをインストールすると、ＯＳＧｉ２０６がフラグメントバンドルのマニフェスト情報からホストバンドルを特定し、ホストバンドルのクラスパスにフラグメントバンドル自身のクラスパスの追加を行う。なお、「クラスパス」は、ＪＡＶＡ（登録商標）アプリ実行するときに、ＪＡＶＡ（登録商標）ＶＭがどの場所からクラスファイルを読み込めばよいかを指定するためのものである。更に、ホストバンドルのクラスローダによって、フラグメントバンドル内の全てのクラスとリソースがロードされる。ここで、「クラスローダ」は、クラスのロードやリソースの検索を担当するオブジェクトであり、全てのクラスはクラスローダによってＪＡＶＡ（登録商標）ＶＭにロードされアプリから利用可能となる。このホストバンドルのクラスローダのロードの実行は、ホストバンドル起動時に行われるため、必ずホストバンドルを一度停止し、クラスパスを追加したうえでロードする必要がある。よって、ホストバンドルが停止していないときは、インストールに失敗する。フラグメントバンドルがインストールされた後は、ホストバンドルの一部として利用可能となる。
【００３１】
本例では、フラグメントバンドルとして日本語リソース４０１、中国語リソース４０２が本体であるホストバンドル４００にインストールされ、その後、ホストバンドル４００がこれらの日本語、中国語リソースを利用する。その結果、リソースの言語切替えが可能となる。つまり、ホストバンドルのＵＩ上の表示は英語であるが、ホストバンドルのＵＩ上でリソース切替指定をすることで、日本語表示や中国語表示にするようにホストバンドルを作ることが可能である。
【００３２】
ホストバンドルがログインアプリの場合、次のような構成が可能である。即ち、ホストバンドル部分でログインに関する基本的な処理を担い、フラグメントバンドル部分で、例えばＩＣカード認証のようなＩＣカードをかざすことで、そのＩＣカードに載っている情報によりログインするといったＵＩ部分を補うといった構成が可能となる。
【００３３】
図５〜７を参照して、アプリ管理サービスが提供するアプリ管理画面において、一般アプリ、ホストバンドル、フラグメントバンドルがどのように管理されるかについて説明する。また、フラグメントバンドルの仮インストールとフラグメントバンドルの有効化／無効化について説明する。
【００３４】
図５は、アプリ管理サービス２０８における、一般アプリの管理画面５００とインストール画面５３０を示した図である。ここでは、一般アプリの管理画面で説明するが、ログインアプリの管理画面についても同様の画面となる。
【００３５】
まず、一般アプリの管理画面５００から説明する。アプリケーション名５０１は、管理されている一般アプリ名を表示する。この例では、アプリケーションＡ５０５とアプリケーションＢ５０６の２つが管理されている。更に、このアプリケーションＡ５０５をホストバンドルとして、フラグメントバンドルＡ５０７、フラグメントバンドルＢ５０８が管理されている。この場合、そのホストバンドルに紐づいていることがわかるように、アプリケーションＡ５０５と関連付けて表示される。インストール日５０２は、各アプリがインストールされた日付である。アプリケーションＩＤ５０３は、各アプリに一意に割り振られたアプリケーションＩＤを表示している。
【００３６】
状態５０４は各アプリの状態を示す。アプリの状態が開始であれば開始、停止であれば停止と表示される。また、フラグメントバンドルの場合、ホストバンドルにインストールされている場合は有効と表示され、図６で示す仮インストール状態の場合は無効と表示される。開始ボタン５１６／停止ボタン５１３はアプリの開始停止を切り替える指示ボタンである。開始状態のアプリの場合は停止ボタン、停止状態のアプリの場合は開始ボタンとなる。有効化ボタン５１５／無効化ボタン５１４はフラグメントバンドルの有効無効を切替える指示ボタンである。開始状態のアプリ（本例では、「アプリケーションＡ５０５」）の停止ボタン５１３を押下すると、その状態５０４は停止に変更される。一方、停止状態のアプリ（本例では、「アプリケーションＢ５０６」）の開始ボタン５１６を押下すると、その状態５０４は開始に変更される。有効状態のアプリ（本例では、「フラグメントバンドルＡ５０７」）の無効化ボタン５１４を押下すると、その状態５０４は無効に変更される。一方、無効状態のアプリ（本例では、「フラグメントバンドルＢ５０８」）の有効化ボタン５１５を押下すると、その状態５０４は有効に変更される。
【００３７】
アンインストールボタン５１７〜５２０は、各アプリをアンインストールする指示ボタンである。フラグメントバンドルのアンインストールはフラグメントバンドルのみが対象となる。例えば、フラグメントバンドルＡ５０７のアンインストールボタン５１８が押下されると、フラグメントバンドルＡ５０７だけがアンインストールされる。一方、ホストバンドルであるアプリケーションＡ５０５のアンインストールボタン５１７が押下されると、アプリケーションＡ５０５に紐づいたフラグメントバンドルＡ５０７とフラグメントバンドルＢ５０８も同時にアンインストールされる。
【００３８】
次に、インストール画面５３０について説明する。参照ボタン５３３はファイルパスを選択する画面を表示する。その画面でアプリファイルを指定すると、アプリケーションファイルのパス５３１にアプリファイルへのパスが入力される。アプリはセキュリティやビジネス上の観点からインストール処理において、アプリを復号するためのライセンスファイルが必要となる場合がある。その場合、参照ボタン５３４を押下するとファイルパスを選択する画面を表示する。そこでアプリ指定と同様にライセンスファイルを指定すると、ライセンスファイルのパス５３２にライセンスファイルへのパスが入力される。インストールボタン５３５が押下されると、アプリケーションファイルのパス５３１で指定したアプリのインストールが開始される。フラグメントバンドルがインストールに指定された場合、フラグメントバンドルは一旦仮インストールされる。
【００３９】
図６は、フラグメントバンドルの仮インストール状態を説明するためのブロック図である。ホストバンドルである一般アプリＡ６００に、フラグメントバンドルであるフラグメントＸ６０１を仮インストールする場合を示す。
【００４０】
インストール制御サービス２０７は、同時に指定されたライセンスファイル６１０によりフラグメントＸ６０１を復号化し、インストール作業フォルダ６０２に配置する。その後、インストール制御サービス２０７は、復号化されたフラグメントＸ６０５のマニフェストに記載されているホストバンドル情報から、ホストバンドルが一般アプリＡであることを特定したうえで、仮インストールフォルダ６０４に配置する。この仮インストールフォルダ６０４に配置されているフラグメントバンドルは、仮インストール状態であり、ＯＳＧｉ２０６の管理上にはない。また６０７で示すように、ホストバンドルである一般アプリＡのユニークなアプリＩＤのフォルダ名の下に、フラグメントＸ６０６を配置する。
【００４１】
図７は、図６で仮ンストールされたフラグメントバンドルＸ６０６を有効化するときの流れを示したブロック図である。ユーザの有効化指示Ｓ７０１により、インストール制御サービス２０７は、無効状態でインストールされているフラグメントＸ６０６の有効化処理を行なう。インストール制御サービス２０７は、フラグメントＸ６０６を有効化、つまりホストバンドルにインストールすることにより、アプリフォルダ６０３にインストールされる。この状態では、ＯＳＧｉ２０６の管理上にあり、一般アプリＡとフラグメントＸの関連性をＯＳＧｉ２０６が保持している。一方、ユーザの無効化指示Ｓ７０２により、インストール制御サービス２０７は、有効状態でインストールされているフラグメントＸ７００の無効化処理を行う。無効化処理により、フラグメントＸ７００は、再び仮インストールフォルダ６０４に無効状態として配置される。
【００４２】
次に、図８〜１１を参照して、基本的なクイックインストールについて説明する。図８は、クイックインストールサービスによる、クイックインストールを説明するためのブロック図である。インストール対象は一般アプリのみを考える。
【００４３】
ＵＳＢメモリ８０１の中のストレージ８０２の中にインストール対象のフォルダ８５０（Ｑｕｉｃｋｉｎｓｔａｌｌ）があり、その配下に以下のファイルが配置される。即ち、複数のアプリファイル８５１（拡張子ｊａｒ）とアプリを復号化するためのライセンスファイル８５２（拡張子ｌｉｃ）である。画像形成装置１３０には、個別の画像形成装置を特定するためのユニークなシリアル番号「ＡＢＣ１２３４５」が割り振られる。この画像形成装置１３０に、ＵＳＢメモリ８０１が挿入されると、ストレージサービス２１０がそれを検知し、クイックインストールサービス２０９に通知する。クイックインストールサービス２０９は、それをトリガーとして、ＵＳＢメモリ８０１の中のインストール対象フォルダ８５０に含まれるアプリファイル８５１とライセンスファイル８５２のインストール処理を開始する。このとき、シリアル番号「ＡＢＣ１２３４５」が割り振られている画像形成装置１３０に適切なアプリファイルとライセンスファイルのペアを図１１で示す方法により抽出する（Ｓ８２０）。この例では、ａｐｐ１．ｊａｒ／ａｐｐ１．ｌｉｃのペア８０３と、ａｐｐ２．ｊａｒ／ａｐｐ２．ｌｉｃのペア８０４が抽出される。クイックインストールサービス２０９は、これらのペアを順次アプリフォルダ６０３にインストール（Ｓ８２１、Ｓ８２２）する。更に、全てのインストールが完了後、クイックインストールサービス２０９は、順次アプリを開始（Ｓ８２３）する。
【００４４】
図９は、ライセンスファイル９００とアプリファイルに含まれるマニフェストファイル９０３を示す。ライセンスファイル９００には、このライセンスファイルが対応するアプリのアプリＩＤ９０１が記載される。一方、マニフェストファイル９０３には、そのアプリのアプリＩＤ９０４が割り振られる。よって、これらの値を付け合わせることで、アプリファイルとライセンスファイルのペアを作ることができる。
【００４５】
更に、ライセンスファイル９００には、このライセンスファイルでインストール可能な画像形成装置１３０のシリアル番号９０２が記載される。一方、図８で示したように、画像形成装置を特定するためのユニークなシリアル番号「ＡＢＣ１２３４５」が割り振られる。よって、これらの値を付け合わせることで、その画像形成装置に適切なライセンスファイルを見つけることができる。また、シリアル番号９０２の値としてはワイルドカード＊の指定が可能である。この場合、画像形成装置のシリアル番号に依らずにライセンスが利用可能となる。
【００４６】
図１０は、クイックインストールサービス２０９におけるクイックインストールのフローチャートである。まずＳ１０００において、クイックインストール処理が開始される。Ｓ１００１において、クイックインストールサービス２０９がストレージサービス２１０からのＵＳＢメモリ挿入のイベント通知を検知すると、Ｓ１００２において、アプリファイル（ｊａｒ）とライセンスファイル（ｌｉｃ）のペア抽出を行う。このペア抽出の方法については、図１１で示す。
【００４７】
抽出されたｊａｒとｌｉｃのペアは抽出された順に、インストールタスクリストに登録され、Ｓ１００３においてインストールタスクリストが作成される。「インストールタスクリスト」とは、このリストの順番にインストールやアプリの開始を行うリストのことを指す。Ｓ１００４において、インストールタスクリストの最初のタスクに登録されたｊａｒとｌｉｃのインストールを行う。Ｓ１００５において、最後のインストールタスクであるかどうかを確認し、他にもインストールタスクが残っている場合は、Ｓ１００４に戻り、引き続き処理を行う。こうしてインストールタスクリストの全てのインストールタスクのインストールが完了した後、Ｓ１００６に進む。
【００４８】
Ｓ１００６において、今度は、インストールタスクリストの最初のタスクに登録されたｊａｒに対してアプリの開始処理を行う。Ｓ１００７において、最後のインストールタスクであるかどうかを確認し、他にもインストールタスクが残っている場合は、Ｓ１００６に戻り、引き続き処理を行う。こうしてインストールタスクリストの全てのインストールタスクのアプリの開始が終了した後、Ｓ１００８に進み、クイックインストールの処理を終了する。
【００４９】
図１１は、クイックインストールサービス２０９における、ｊａｒとｌｉｃのペア抽出処理のフローチャートである。まず、Ｓ１１００において、ペア抽出処理が開始される。Ｓ１１０１において、インストール対象フォルダ８５０にある全てのライセンスファイルに対して次のチェックを行う。Ｓ１１０２において、ライセンスファイルに記載されるシリアル番号９０２が、インストール対象の画像形成装置のシリアル番号と一致するかどうかを判断する。あるいは、シリアル番号９０２がワイルドカード＊指定されているかどうかを判断する。
【００５０】
Ｓ１１０２の結果、一致する、もしくは、ワイルドカード指定の場合は、Ｓ１１０３に進み、ライセンスファイル候補リストに追加し、Ｓ１１０４に進む。Ｓ１１０２の結果、一致しない場合は、Ｓ１１０４に進み、全てのライセンスファイルをチェックしたかどうかを判断する。他にもライセンスファイルが残っている場合は、Ｓ１１０２に戻り引き続き処理を行う。こうして全てのライセンスファイルのチェックが完了した後、Ｓ１１０５に進む。この時点で、画像形成装置１３０で利用可能な、ライセンスファイル候補リストが作成されているので、次に、このライセンスファイルに対応するアプリを探索する。
【００５１】
Ｓ１１０５において、インストール対象フォルダ８５０にある全てのアプリに対して次のチェックを行う。Ｓ１１０６において、ライセンスファイル候補リストについてチェックを行う。Ｓ１１０７において、既にそのライセンスファイルがインストールタスクリストに登録済みの場合、Ｓ１１１０に進む。未登録の場合は、Ｓ１１０８に進み、アプリのマニフェストに割り振られているアプリＩＤ９０４とライセンスファイルに記載のアプリＩＤが一致しているかどうかを判断する。一致していない場合はＳ１１１０に進む。一致している場合、Ｓ１１０９に進み、インストールタスクを生成し、インストールタスクリストに登録し、そしてＳ１１１１に進む。Ｓ１１１０において、最後のライセンスファイル候補リストであるかどうかを確認し、他にもライセンスファイル候補が残っている場合は、Ｓ１００７に戻り、次のライセンスファイル候補に対して処理を行う。
【００５２】
こうして全てのライセンスファイル候補のチェックが完了した後、Ｓ１１１１に進む。Ｓ１１１１において、最後のインストール対象フォルダ８５０にあるアプリであるかどうかを確認し、他にもアプリファイルが残っている場合は、Ｓ１００６に戻り次のアプリに対して処理を行う。こうして全てのアプリファイルのチェックが完了した後、Ｓ１１１２に進み、ペア抽出処理が終了する。
【００５３】
＜実施例１＞
図１２〜図１６を用いて、本発明の実施例１の構成を説明する。なお、本実施例では、ホストバンドル（第１の種別のアプリ）とフラグメントバンドル（第２の種別のアプリ）を含むクイックインストールを行なう。
【００５４】
図１２は、ホストバンドルとフラグメントバンドルを含むクイックインストールサービスにおけるクイックインストールを説明するためのブロック図である。図１２において、ＵＳＢメモリ８０１の中のストレージ１２０２の中に、インストール対象フォルダ８５０（ｑｕｉｃｋｉｎｓｔａｌｌ）があり、その配下に以下の２つのファイルが配置される。アプリファイル１２５１は、複数の一般アプリ（ａｐｐ１．ｊａｒ／ａｐｐ２．ｊａｒ）、ホストバンドル（ｈｏｓｔ１．ｊａｒ／ｈｏｓｔ２．ｊａｒ）、及びフラグメントバンドル（ｆｒａｇｍｅｎｔ１．ｊａｒ／ｆｒａｇｍｅｎｔ２．ｊａｒ）を含む。ライセンスファイル１２５２（拡張子ｌｉｃ）は、アプリを復号化するためのものである。この例では、ｆｒａｇｍｅｎｔ１．ｊａｒのホストバンドルはｈｏｓｔ１．ｊａｒ、ｆｒａｇｍｅｎｔ２．ｊａｒのホストバンドルはｈｏｓｔ２．ｊａｒであるとする。さらに、ｈｏｓｔ１．ｊａｒ／ｈｏｓｔ２．ｊａｒおよびｆｒａｇｍｅｎｔ１．ｊａｒ／ｆｒａｇｍｅｎｔ２．ｊａｒともにログインアプリでないとする。
【００５５】
画像形成装置１３０には、個別の画像形成装置を特定するためのユニークなシリアル番号「ＡＢＣ１２３４５」が割り振られている。画像形成装置１３０にＵＳＢメモリ８０１が挿入されると、ストレージサービス２１０がそれを検知し、クイックインストールサービス２０９に通知する。クイックインストールサービス２０９はその通知をトリガーとして、ＵＳＢメモリ８０１の中のインストール対象フォルダ８５０に含まれるアプリファイル１２５１とライセンスファイル１２５２のインストール処理を開始する。このとき、シリアル番号「ＡＢＣ１２３４５」が割り振られている画像形成装置１３０に適切なアプリファイルとライセンスファイルのペアを、図１１で示す方法により抽出する（Ｓ８２０）。この場合、抽出されるペアは以下の通りである。即ち、一般アプリグループ１２１１においては、ペア１２０３（ａｐｐ１．ｊａｒ／ａｐｐ１．ｌｉｃ）とペア１２０４（ａｐｐ２．ｊａｒ／ａｐｐ２．ｌｉｃ）が抽出される。フラグメントバンドルグループ１２１０ではペア１２０５（ｆｒａｇｍｅｎｔ１．ｊａｒ／ｆｒａｇｍｅｎｔ１．ｌｉｃ）とペア１２０６（ｆｒａｇｍｅｎｔ２．ｊａｒ／ｆｒａｇｍｅｎｔ２．ｌｉｃ）が抽出される。ホストバンドルグループ１２０９ではペア１２０７（ｈｏｓｔ１．ｊａｒ／ｈｏｓｔ１．ｌｉｃ）とペア１２０８（ｈｏｓｔ２．ｊａｒ／ｈｏｓｔ２．ｌｉｃ）が抽出される。
【００５６】
クイックインストールサービス２０９は、更にアプリのマニフェストからホストバンドル、フラグメントバンドルおよび一般アプリの３グループに分け、ホストバンドル＞フラグメントバンドル＞一般アプリの順にインストールタスクを並べ替える（Ｓ１２２０）。次に、Ｓ１２２１において、クイックインストールサービス２０９は、これらのペアを以下の順にインストールする。即ち、最初にホストバンドルグループ１２０９のペア１２０７（ｈｏｓｔ１．ｊａｒ／ｈｏｓｔ１．ｌｉｃ）およびペア１２０８（ｈｏｓｔ２．ｊａｒ／ｈｏｓｔ２．ｌｉｃ）をインストールする。その次に、フラグメントバンドルグループ１２１０のペア１２０５（ｆｒａｇｍｅｎｔ１．ｊａｒ／ｆｒａｇｍｅｎｔ１．ｌｉｃ）およびペア１２０６（ｆｒａｇｍｅｎｔ２．ｊａｒ／ｆｒａｇｍｅｎｔ２．ｌｉｃ）をインストールする。そして最後に、一般アプリグループ１２１１のペア１２０３（ａｐｐ１．ｊａｒ／ａｐｐ１．ｌｉｃ）とペア１２０４（ａｐｐ２．ｊａｒ／ａｐｐ２．ｌｉｃ）をインストールする。こうすることで、必ずホストバンドルの方が先にインストールされることになる。よって、前記課題における制限２（フラグメントバンドルは単独では動作しないので、インストール時には必ずホストバンドルがインストールされている必要があるという制限）を回避することができる。
【００５７】
全インストールの完了後、Ｓ１２２２において、クイックインストールサービス２０９は以下の順でアプリの開始、有効化を行なう。即ち、最初に一般アプリグループ１２１１のペア１２０３（ａｐｐ１．ｊａｒ／ａｐｐ１．ｌｉｃ）及びペア１２０４（ａｐｐ２．ｊａｒ／ａｐｐ２．ｌｉｃ）を開始する。次に、フラグメントバンドルグループ１２１０のペア１２０５（ｆｒａｇｍｅｎｔ１．ｊａｒ／ｆｒａｇｍｅｎｔ１．ｌｉｃ）及びペア１２０６（ｆｒａｇｍｅｎｔ２．ｊａｒ／ｆｒａｇｍｅｎｔ２．ｌｉｃ）を有効化する。最後にホストバンドルグループ１２０９のペア１２０７（ｈｏｓｔ１．ｊａｒ／ｈｏｓｔ１．ｌｉｃ）およびペア１２０８（ｈｏｓｔ２．ｊａｒ／ｈｏｓｔ２．ｌｉｃ）を開始する。この結果、必ずフラグメントバンドルの方から先に有効化されることになる。よって前記課題における制限１（フラグメントバンドルをインストールする時には、ホストバンドルが停止していることが求められるという制限）を回避することができる。
【００５８】
図１３は、ホストバンドルとフラグメントバンドルを含むクイックインストールサービス２０９における、クイックインストールのフローチャートである。まず、Ｓ１３００において、クイックインストール処理が開始される。Ｓ１３０１において、クイックインストールサービス２０９が、ストレージサービス２１０からのＵＳＢメモリ挿入のイベント通知を検知すると、Ｓ１３０２において、アプリファイル（ｊａｒ）とライセンスファイル（ｌｉｃ）のペア抽出を行う。このペア抽出の方法については、図１１で示した方法と同じである。
【００５９】
抽出されたｊａｒとｌｉｃのペアは抽出された順に、インストールタスクリストに登録され、Ｓ１３０３において、インストールタスクリストが作成される。次に、Ｓ１３０４において、このＳ１３０３で作成されたインストールタスクリストをグループごとに並べ替え処理を行い、並べ替え済みインストールタスクリストが作成される。この並べ替え済みインストールタスクリストを作成する方法については、図１４で示す。
【００６０】
Ｓ１３０５において、並べ替え済みインストールタスクリストの最初のタスクに登録されたｊａｒとｌｉｃのインストールを行う。Ｓ１３０６において、最後のインストールタスクであるかどうかを確認し、他にもインストールタスクが残っている場合はＳ１３０５に戻り、引き続き処理を行う。こうしてインストールタスクリストの全てのインストールタスクのインストールが完了した後、Ｓ１３０７に進む。
【００６１】
Ｓ１３０７において、今度は、並べ替え済みインストールタスクリストの最後のタスクに登録されたｊａｒに対してアプリの開始、有効化処理を行う。Ｓ１３０８において、インストールタスクの対象アプリの種類を判断する。そのアプリがホストバンドルであればＳ１３０９に進み、一般アプリであればＳ１３１１に進み、フラグメントバンドルであればＳ１３１２に進む。
【００６２】
Ｓ１３０９において、ホストバンドルがログインアプリかどうかを判断する。ホストバンドルがログインアプリである場合、Ｓ１３１０に進む。ログインアプリの場合、開始するためには現在の開始中のログインアプリから切り替える必要があり、その場合再起動が必要なので、Ｓ１３１０において再起動後開始状態にし、Ｓ１３１３に進む。ホストバンドルが一般アプリである場合、Ｓ１３１１に進む。Ｓ１３１１においてアプリの開始処理を行い、Ｓ１３１３に進む。Ｓ１３１２において、フラグメントバンドルの有効化処理を行い、Ｓ１３１３に進む。
【００６３】
Ｓ１３１３において、最後のインストールタスクであるかどうかを確認し、他にもインストールタスクが残っている場合は、Ｓ１３０８に戻り、引き続き処理を行う。こうしてインストールタスクリストの全てのインストールタスクのアプリの開始が終了した後、Ｓ１３１４に進み、クイックインストールの処理を終了する。
【００６４】
図１４は、図１３のＳ１３０４における、インストールタスクをグループごとに並べ替えて、並べ替え済みインストールタスクリストを作成する処理のフローチャートである。まず、Ｓ１４００において、グループごと並べ替え処理が開始される。Ｓ１４０１において、Ｓ１３０３で作成したインストールタスクリスト全てをチェックし、Ｓ１４０２において、インストールタスクのインストール対象が何かを判断する。
【００６５】
Ｓ１４０２において、インストール対象がホストバンドルであればＳ１４０３に進み、一般アプリであればＳ１４０４に進み、フラグメントバンドルあればＳ１４０５に進む。Ｓ１４０３において、インストールタスクをホストタスクリストに登録し、Ｓ１４０６に進む。Ｓ１４０４において、インストールタスクを一般アプリタスクリストに登録し、Ｓ１４０６に進む。Ｓ１４０５において、インストールタスクをフラグメントタスクリストに登録し、Ｓ１４０６に進む。Ｓ１４０６において、最後のインストールタスクであるかどうかを確認し、他にもインストールタスクが残っている場合は、Ｓ１４０２に戻り、引き続き処理を行う。こうしてインストールタスクリストの全てのインストールタスクについての処理が終了した後、Ｓ１４０７に進む。
【００６６】
Ｓ１４０７において、並べ替え済みインストールタスクリストにホストタスクリストを追加し、Ｓ１４０８に進む。Ｓ１４０８において、並べ替え済みインストールタスクリストにフラグメントタスクリストを追加し、Ｓ１４０９に進む。Ｓ１４０９において、並べ替え済みインストールタスクリストに一般アプリタスクリストを追加し、Ｓ１４１０に進む。Ｓ１４１０において、グループごと並べ替え処理を終了する。こうして、並べ替え済みインストールタスクリストは、ホストバンドル＞フラグメントバンドル＞一般アプリの順番のタスクリストとなる。
【００６７】
図１５は、クイックインストールサービス２０９が、フラグメントバンドルを仮インストールするまでの各サービスの処理の流れ、およびデータの流れを示したシーケンス図である。初めに、Ｓ１５００において、クイックインストールサービス２０９は、インストール制御サービス２０７にインストールを依頼する。次に、Ｓ１５０１において、インストール制御サービス２０７は、ＵＳＢメモリ８０１内のインストール対象フォルダ８５０（ｑｕｉｃｋｉｎｓｔａｌｌ）にあるインストール対象のライセンスファイルとアプリのペア１２０５を参照する。そして、ライセンスファイルからアプリを復号化する。更に、インストール制御サービス２０７は、アプリのマニフェストの値からフラグメントバンドルであると判断すると、復号化したアプリファイル１５５２をアプリのアプリＩＤにファイル名を変更して、仮インストールフォルダ６０４に配置する（Ｓ１５０２）。以上の処理により、フラグメントバンドルは仮インストールされ、無効状態となる。
【００６８】
図１６は、クイックインストールサービス２０９が無効状態のフラグメントバンドルを有効化するまでの各サービスの処理の流れ、データの流れを示したシーケンス図である。初めに、Ｓ１６００において、クイックインストールサービス２０９は、インストール対象のアプリのアプリＩＤとともに、インストール制御サービス２０７に有効化処理を依頼する。Ｓ１６０１において、インストール制御サービス２０７は、ＯＳＧｉ２０６に、ファイルパスを指定してインストールを依頼する。ここで、ファイルパスは、クイックインストールサービス２０９から受信したアプリＩＤを基に作成する。Ｓ１６０２において、ＯＳＧｉ２０６は、インストール制御サービス２０７から受信したファイルパスで指示された、仮インストールフォルダに配置されているアプリファイル１５５２をインストールする。Ｓ１６０３において、ＯＳＧｉ２０６は、インストールのために、アプリフォルダ６０３にアプリファイルを「ｉｎｓ０．ｊａｒ」（１６５０）という名前でインストールする。インストールが成功した後、Ｓ１６０４において、インストール制御サービス２０７は、仮インストールフォルダに配置したアプリファイル１５５２を削除する。以上によりフラグメントバンドルは有効化され、有効状態となる。
【００６９】
以上説明したように、実施例１においては、ホストバンドルとフラグメントバンドルを含むクイックインストールが可能となる。
【００７０】
＜実施例２＞
実施例２では、既にホストバンドルがインストールされている画像形成装置に、それに対応したフラグメントバンドルをインストールする処理を説明する。ここで、ホストバンドルが開始状態の場合、フラグメントバンドルをインストールするためには、ホストバンドルを一旦停止させる必要がある。フラグメントバンドルのインストール後、再度ホストバンドルを開始状態に戻すことで、ユーザはアプリを利用できるようになる。
【００７１】
図１７は、実施例２を説明するブロック図である。この例では、アプリフォルダ６０３にホストバンドル（ｈｏｓｔ１．ｊａｒ）１７５３が開始状態でインストールされているものとする。また、ｈｏｓｔ１．ｊａｒは、ログインアプリでないホストバンドルであるとする。ＵＳＢメモリ８０１の中のストレージ１７０２の中に、インストール対象フォルダ８５０（ｑｕｉｃｋｉｎｓｔａｌｌ）があり、その配下に、以下の２つのファイルが配置される。即ち、フラグメントバンドル１７５１（ｆｒａｇｍｅｎｔ１．ｊａｒ）と、アプリを復号化するためのライセンスファイル１７５２（拡張子ｌｉｃ）である。ここで、ｆｒａｇｍｅｎｔ１．ｊａｒのホストバンドルは、ｈｏｓｔ１．ｊａｒであるとする。
【００７２】
この画像形成装置１３０に、ＵＳＢメモリ８０１が挿入されると、クイックインストールサービス２０９は、それをトリガーとし、以下の２つのファイルのインストール処理を開始する。即ち、ＵＳＢメモリ８０１の中のインストール対象フォルダ８５０に含まれるアプリファイル１７５１とライセンスファイル１７５２である。このとき、シリアル番号「ＡＢＣ１２３４５」が割り振られている画像形成装置１３０に適切なアプリファイルとライセンスファイルのペアを、図１１で示す方法により抽出する（Ｓ８２０）。この場合、ペア１７０３（ｆｒａｇｍｅｎｔ１．ｊａｒ／ｆｒａｇｍｅｎｔ１．ｌｉｃ）が抽出される。クイックインストールサービス２０９は、フラグメントバンドルグループ１７０４にこのペア１７０３をグループ分けする（Ｓ１２２０）。
【００７３】
クイックインストールサービス２０９は、インストール対象のフラグメントバンドルペア１７０３のホストバンドルであるホストバンドル１７５３が開始状態であることを検知し、Ｓ１７２０において停止させる。次に、Ｓ１７２１において、クイックインストールサービス２０９はペア１７０３のインストールを行う。インストール完了後、Ｓ１７２２において、クイックインストールサービス２０９は、ペア１７０３のフラグメントバンドルを有効化する。最後に、Ｓ１７２３において、クイックインストールサービス２０９はホストバンドル１７５３を再度開始させる。この結果、フラグメントバンドルをインストール／有効化するときに、ホストバンドルを停止させる必要がなくなる。
【００７４】
図１８は、ホストバンドルの状態を考慮した、フラグメントバンドルを含むクイックインストールサービス２０９における、クイックインストールのフローチャートである。なお、Ｓ１８００〜Ｓ１８０５までは、図１３で示したＳ１３００〜Ｓ１３０５までと同じ処理であるので説明は省略する。
【００７５】
Ｓ１８０６において、クイックインストールサービス２０９は、インストールタスクのインストール対象アプリがフラグメントバンドルであるかどうかを判断する。フラグメントバンドルでない場合はＳ１８１１に、フラグメントバンドルである場合はＳ１８０７に進む。Ｓ１８０７において、クイックインストールサービス２０９は、ホストバンドルがログインアプリであるかどうかを判断する。ログインアプリである場合はＳ１８１１に、ログインアプリでない場合はＳ１８０８に進む。
【００７６】
Ｓ１８０８において、クイックインストールサービス２０９は、ホストバンドルの状態が開始であるか停止であるかを判断する。開始状態である場合はＳ１８０９に進み、停止状態である場合はＳ１８１１に進む。Ｓ１８０９において、クイックインストールサービス２０９は、ホストバンドルを停止させ、Ｓ１８１０に進む。Ｓ１８１０において、クイックインストールサービス２０９は、再開ホストバンドルリストにインストールタスクを登録し、Ｓ１８１１に進む。Ｓ１８１１において、クイックインストールサービス２０９は、最後のインストールタスクであるかどうかを確認し、他にもインストールタスクが残っている場合は、Ｓ１８０６に戻り、引き続き処理を行う。こうしてインストールタスクリストの全てのインストールタスクのインストールが完了した後、Ｓ１８１３に進む。
【００７７】
Ｓ１８１３〜Ｓ１８１９までは、図１３で示したＳ１３０７〜Ｓ１３１３までと同じ開始、有効化処理であるので説明は省略する。全てのインストールタスクの開始、有効化処理が完了した後、Ｓ１８２０において、Ｓ１８０９で停止したホストバンドルの再開バンドルリストに登録されているホストバンドルの開始処理を行う。Ｓ１８２１において、最後の再開ホストバンドルタスクであるかどうかを確認し、他にも再開ホストバンドルタスクが残っている場合は、Ｓ１８２０に戻り、引き続き処理を行う。こうして再開ホストバンドルリストの全ての開始処理が完了した後、Ｓ１８２２に進む。Ｓ１８２２において、クイックインストール処理を終了する。
【００７８】
以上説明したように、実施例２においては、ホストバンドルの状態に関係なく、フラグメントバンドルのクイックインストールが可能となる。
【００７９】
＜その他の実施例＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
0006388405.tif 000002
【図２】
0006388405.tif 000003
【図３】
0006388405.tif 000004
【図４】
0006388405.tif 000005
【図５】
0006388405.tif 000006
【図６】
0006388405.tif 000007
【図７】
0006388405.tif 000008
【図８】
0006388405.tif 000009
【図９】
0006388405.tif 000010
【図１０】
0006388405.tif 000011
【図１１】
0006388405.tif 000012
【図１２】
0006388405.tif 000013
【図１３】
0006388405.tif 000014
【図１４】
0006388405.tif 000015
【図１５】
0006388405.tif 000016
【図１６】
0006388405.tif 000017
【図１７】
0006388405.tif 000018
【図１８】
0006388405.tif 000019