JP2018077690A - アプリケーションの実行環境の違いに依る互換性を考慮したインストール、及びファームアップ方法 - Google Patents
アプリケーションの実行環境の違いに依る互換性を考慮したインストール、及びファームアップ方法 Download PDFInfo
- Publication number
- JP2018077690A JP2018077690A JP2016219291A JP2016219291A JP2018077690A JP 2018077690 A JP2018077690 A JP 2018077690A JP 2016219291 A JP2016219291 A JP 2016219291A JP 2016219291 A JP2016219291 A JP 2016219291A JP 2018077690 A JP2018077690 A JP 2018077690A
- Authority
- JP
- Japan
- Prior art keywords
- application
- version
- execution environment
- submodule
- replacement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】アプリケーションの実行環境の違いに依る互換性を考慮したインストール、及びファームアップ方法を提供する。【解決手段】アプリが抱えているライブラリ実行コードが今のアプリ実行環境に対して互換性をもっているかを判断する。互換性をもっていない場合は、S603に進む。互換性を持っている場合は、S605に進み、差し替えない判定を返すために、S606に進む。S603において、アプリが抱えているライブラリ実行コードとアプリ実行基盤が保持している互換用ライブラリ実行コードのバージョンを比較する。アプリが抱えているライブラリ実行コードのほうが小さい場合は、S604に進み、差し替える判定を返すために、S606に進む。S603において、アプリが抱えているライブラリ実行コードのほうが大きい場合は、S605に進み、差し替えない判定を返すために、S606において、判断処理を終了し、最終的は判定を返すものとする。【選択図】図6
Description
本発明は、情報処理装置、画像形成装置における異なるアプリ実行環境用アプリケーションにおける互換性を考慮したインストール、及びファームアップ方法に関するものである。
近年、情報処理装置、及び画像形成装置においては、JAVA(登録商標、以下省略)環境に代表されるようなアプリケーション(以下「アプリ」と略称する)動作環境が提供されている。JAVAの持つプログラムの可搬性を利用して、拡張可能なアプリを提供する技術が提案されている。アプリは、メインとなるモジュールだけでなく、その機能を補完するライブラリと呼ばれるサブのモジュールを保持していることが一般的である。そのメインとサブの組み合わせでアプリ全体の機能が達成されるため、この組み合わせでの動作確認が重要となってくる。
従来、そのような情報処理装置、及び画像形成装置上でアプリを実行する為のアプリ実行環境とそこで実行されるアプリにおいては、アプリがそのアプリ実行環境に合わせて作成されることが前提であった。
一方、アプリ実行環境には、従来の振舞の問題や新たな機能に対応する必要性から従来の振舞との互換性が一部失われるような、すなわち非互換性を含んだ新しいバージョンが市場に導入されることがよくある。このとき、メインのモジュールはもちろん、サブのモジュールに互換性がなくなることがある。そのような非互換性を含んだ新しいバージョンのアプリ実行環境が導入された場合、アプリもその違いに沿った新しいバージョンが作成されるのが通例であった。それにより、アプリの新しいバージョンが、アプリ実行環境の新しいバージョンとの組合せで適切に動作することが保証されてきた。
しかしながら、近年では、アプリの開発が大規模化し高コストとなっている。その結果、アプリ実行環境の非互換性を含んだ新しいバージョンが導入されたにも関わらずそれに沿った新しいバージョンのアプリを作成するのが困難なケースがある。この為、アプリを、新しいバージョンを作成することなく、非互換性を含んだ新しいバージョンのアプリ実行環境の上でも適切に動作することを実現する為の技術が考案されている。
例えば、そのような技術の中には、以下のようなものが存在する。(特許文献1)この技術では、アプリ実行環境間の差異を吸収する互換機構部を有し、互換機構部はアプリ実行環境間のインストール仕様の差異を吸収するインストール仕様定義部と、アプリ実行環境間のインターフェース仕様の差異を吸収するインターフェース仕様定義部とを有し、これらをインストール時、及び実行時に利用することにより上記課題を解決する。
そのため、前述したアプリのサブモジュールに互換性がないようなときには、インストール時にこのサブモジュールを互換性のあるサブモジュールに置き換えることで互換性を保つことが考えられる。
しかしながら、そのような従来技術では、新しいアプリ実行環境にインストールされたアプリが抱えるサブモジュールと互換性のあるサブモジュールとのバージョンだけを比較し、互換性のあるサブモジュールが新しいときには常に差し替えるような処理が行われてきた。その結果、アプリとサブモジュールの組み合わせテストが十分になされ、差し替えが必ずしも必要でないアプリに対してまで差し替え処理が発生するという課題があった。
アプリケーションを実行することができる実行環境(200)を備えた画像形成装置(130)であって、
当該実行環境(200)は、アプリケーションをネットワーク、あるいは外部記憶装置からインストールするインストール手段(220)と、
当該アプリケーションにより利用されるサブモジュールの、当該実行環境(200)上で実行される場合に本来の意図通りの動作をすることが分かっている第一のバージョンを保持する互換性サブモジュール(214)を保持する手段(213)と、を備えており、
当該実行環境(200)がその別のバージョンから更新されて現在のバージョンが当該画像形成装置(130)上に配備された後初めて起動されたことを検知する検知手段(222)と、
既にインストールされている一つまたは複数のアプリケーションを更新する更新手段(221)と、を備えており、
当該更新手段(221)が、当該検知手段により当該実行環境が更新された後初めて起動されたことを検知した場合には、それらインストールされている当該一つまたは複数のアプリケーションのインストール先の当該フォルダを検索する検索ステップ(S502)と、
当該検索ステップにより当該サブモジュールが当該フォルダ内に置かれていると判定する第一の判定ステップ(S403)と、
当該第一の判定ステップにて当該サブモジュールが含まれていると判定された際には、
過去の当該サブモジュールにおいて差し替えられた履歴があるかどうかを判定する第二の判定ステップ(S601)と、
当該第二の判定ステップにより当該サブモジュールが差し替えられた履歴がある場合には、当該サブモジュールのバージョンと当該互換性サブモジュール(214)が保持する第一のバージョンとを比較する第三の判定ステップ(S603)と
当該第三の判定ステップにおいて当該第一のバージョンが当該サブモジュールのバージョンより新しい場合には、当該互換性サブモジュール(214)に差し替える第一の置換ステップ(S405)と
一方、当該第二の判定ステップにより当該サブモジュールが差し替えられた履歴がない場合には、当該サブモジュールのバージョンが当該実行環境(200)に対して互換性を持つバージョンかを判断する第四の判定ステップ(S602)と
当該第四の判定ステップにより、差し替え不要という判断した場合は、差し替えを行わないステップ(S605)を含むように構成されていることを特徴とする、画像形成装置。
当該実行環境(200)は、アプリケーションをネットワーク、あるいは外部記憶装置からインストールするインストール手段(220)と、
当該アプリケーションにより利用されるサブモジュールの、当該実行環境(200)上で実行される場合に本来の意図通りの動作をすることが分かっている第一のバージョンを保持する互換性サブモジュール(214)を保持する手段(213)と、を備えており、
当該実行環境(200)がその別のバージョンから更新されて現在のバージョンが当該画像形成装置(130)上に配備された後初めて起動されたことを検知する検知手段(222)と、
既にインストールされている一つまたは複数のアプリケーションを更新する更新手段(221)と、を備えており、
当該更新手段(221)が、当該検知手段により当該実行環境が更新された後初めて起動されたことを検知した場合には、それらインストールされている当該一つまたは複数のアプリケーションのインストール先の当該フォルダを検索する検索ステップ(S502)と、
当該検索ステップにより当該サブモジュールが当該フォルダ内に置かれていると判定する第一の判定ステップ(S403)と、
当該第一の判定ステップにて当該サブモジュールが含まれていると判定された際には、
過去の当該サブモジュールにおいて差し替えられた履歴があるかどうかを判定する第二の判定ステップ(S601)と、
当該第二の判定ステップにより当該サブモジュールが差し替えられた履歴がある場合には、当該サブモジュールのバージョンと当該互換性サブモジュール(214)が保持する第一のバージョンとを比較する第三の判定ステップ(S603)と
当該第三の判定ステップにおいて当該第一のバージョンが当該サブモジュールのバージョンより新しい場合には、当該互換性サブモジュール(214)に差し替える第一の置換ステップ(S405)と
一方、当該第二の判定ステップにより当該サブモジュールが差し替えられた履歴がない場合には、当該サブモジュールのバージョンが当該実行環境(200)に対して互換性を持つバージョンかを判断する第四の判定ステップ(S602)と
当該第四の判定ステップにより、差し替え不要という判断した場合は、差し替えを行わないステップ(S605)を含むように構成されていることを特徴とする、画像形成装置。
本発明によれば、最初のインストール時におけるサブモジュールの差し替え処理を行ったかどうかの履歴を基に、その後のサブモジュールの差し替え処理の判断に利用することで、差し替え処理を適切に実行することが可能となる。
以下、本発明を実施するための最良の形態について図面を用いて説明する。
[実施例1]
図1は、プリント機能やスキャン機能、ネットワーク通信機能などを備える画像形成装置130のハードウェア構成図である。図1において、コントローラ100は画像形成装置130のコントローラである。コントローラ100はスキャナ部113やプリンタ部114と電気的に接続され、一方でLAN116を介して外部デバイスと接続される。
[実施例1]
図1は、プリント機能やスキャン機能、ネットワーク通信機能などを備える画像形成装置130のハードウェア構成図である。図1において、コントローラ100は画像形成装置130のコントローラである。コントローラ100はスキャナ部113やプリンタ部114と電気的に接続され、一方でLAN116を介して外部デバイスと接続される。
CPU101は、ROM102に記憶された制御プログラム等に基づいて接続中の各種ハードウェアとのアクセスを統括的に制御し、またコントローラ内部で行われる各種処理についても統括的に制御する。ROM102は読み出し専用の不揮発記憶領域であり、画像形成装置130のブートプログラム、ファームウェアなどが格納されている。RAM103は、CPU101が動作するためのシステムワークメモリであり、各種データを一時記憶するためのメモリである。このRAM103は、記憶した内容を電源オフ後も保持可能なFRAM(登録商標)およびSRAM、電源オフ後に記憶内容が消去されるDRAMなどにより構成される。
HDD104は不揮発記憶領域であり、システムアプリなどを格納する。図2で説明するインストールするアプリを含むファームウェアは、HDD104に格納される。操作部I/F105は、システムバス119と操作部118を接続するインターフェース部である。具体的には操作部118に表示するデータをシステムバス119から受取り表示すると共に、操作部118からの入力情報をシステムバス119へ出力する。画像形成装置130に対するユーザの指示や情報提示は、操作部118を介して行う。
ネットワークI/F106はLAN116、WAN117及びシステムバス119に接続し、外部との情報の入出力を行う。スキャナI/F108は、スキャナ部113から受取った画像データに対して、補正、加工、及び編集を行う。画像形成部109は、画像データの方向変換、画像圧縮、伸張部などを行う。プリンタI/F110は、画像形成部109から送られた画像データを受取り、画像形成後にプリンタ部114にて印刷する。
図2(a)は、第一の実施例のアプリ実行環境の構成を図示したものである。200は、アプリ実行環境である。本実施例では、JAVA環境を想定している。201は、アプリ実行基盤である。以降、旧バージョンとしてV1.0、新バージョンとしてV2.0を想定する。210は、コード解釈実行モジュールである。213は、新バージョンのアプリ実行基盤201に非対応であるアプリを補完する為の互換用サポートライブラリモジュールである。214は、互換用サポートライブラリモジュール213に含まれる、互換性を維持する為に用意された互換用ライブラリ実行コードである。
なお、互換用ライブラリ実行コード214は、複数用意されることもある。互換用ライブラリ実行コード214は、アプリのサブモジュールとして利用されることがある。互換用サポートライブラリモジュール213は、互換の為に用意されたものであるので、215で示すように、旧バージョンのアプリ実行基盤201には存在せず、新バージョンのアプリ実行基盤201にのみあるものとする。
202は、アプリ管理フレームワークである。220は、アプリのインストール、及びアップデートを実行する為のインストール手段である。インストール手段220は、インストールやアップデート時に、アプリインストール用ファイルをアプリキャッシュ203へ展開を行う。221は、インストール時にアプリの互換対応を行う為の更新手段である。
更新手段221は、インストール時やアプリ実行基盤のバージョンアップ時に、アプリが抱えるライブラリ実行コード243がアプリ実行基盤に対して互換があるかどうかをバージョンから判断し、互換がないと判断した場合、アプリが抱えるライブラリ実行コード243の代わりに互換用ライブラリ実行コード214をインストールする処理を行う。そのため、更新手段221は、ライブラリ実行コードのどのバージョンが、そのアプリ実行環境に互換があるかを把握している。
実施例1や2の図3や図7の例で言うと、ライブラリ実行コード(V1.0)が、アプリ実行環境(V2.0)以降では互換性がないことを更新手段221は、把握している。また、ライブラリ実行コード(V2.0/V2.1)が、アプリ実行環境(V2.0)以降で互換性があることを更新手段221は、把握している。222は、アプリ実行環境200が別のバージョンから更新されて現在のバージョンが画像形成装置130上に配備された後初めて起動されたことや、インストールが上書きインストーであることを検知する検知手段である。
203は、アプリキャッシュである。230は、アプリインストール用ファイルをアプリキャッシュ203に展開する為のアプリ用区画である。通常一つのアプリ用区画は、一つのアプリ用ディレクトリを意味する。ここでアプリは1個、または複数個インストールされることができる。ここではN個のアプリがインストールされている状態を図示する。これ以降、便宜上、アプリ1用区画を230(1)、アプリ2用区画を230(2)、アプリN用区画を230(N)で表す。順序を特に指定せずアプリ用区画を表す場合には単に230で表す。
図2(b)は、本実施例のアプリ実行環境200にインストールされるアプリのアプリインストール用ファイルの一般的な構成を図示したものである。
240は、アプリインストール用ファイルである。一般的にJAVAの場合、拡張子がjarで示される。アプリインストール用ファイル240は、マニフェストファイル241、いくつかの実行コードファイル242、いくつかのライブラリ実行コード243を内包している。実行コードファイル242は、実際に実行されるべきプログラムコードを保持しているファイルである。一般的にこのファイルはソフトウェア的な単位であるクラスごとに一つのファイル(classファイル)になっている。その中身は、バイトコードと呼ばれる中間形式となっている。
ライブラリ実行コード243は、マニフェストファイル、いくつかの実行コードファイルから成る。また、ライブラリ実行コード243は、拡張子がjarで示され、いわゆるサブモジュールと呼ばれるものに相当する。
図2(c)は、本実施例のアプリ実行環境200におけるアプリキャッシュ203にアプリが保持されている状態を図示したものである。アプリキャッシュ203は、HDD104上に確保されており、ここに、アプリ1用区画230は、アプリ1用ディレクトリ251以下で示される。dataフォルダ252は、アプリ1が利用するデータを置くディレクトリを示す。
アプリ1インストール用ファイル253は、インストールされたアプリ1のアプリインストールファイル240から展開され配置されたものである。ライブラリ実行コード254は、ライブラリ実行コード243をアプリインストール用ファイル240から抜き出して配置したものである。
図3は、本実施例のアプリ実行環境200の新バージョンにおいて、アプリをインストールし、その後に、アプリ実行環境200をバージョンアップした時の、振る舞いについて説明したブロック図である。図3(a)は、アプリ300をアプリ実行環境(V2.0)303にインストールするときの図である。アプリ300は、サブモジュールとして、ライブラリ実行コード(V1.0)301を保持している。ライブラリ実行コード(V1.0)301は、アプリ実行環境(V2.0)303に互換性がないサブモジュールであり、そのままインストールしたのでは、動作できないものとする。
一方、アプリ実行環境(V2.0)303は、アプリ実行基盤(V2.0)304を持ち、アプリ実行基盤(V2.0)304は、互換用ライブラリ実行コード(V2.0)305を保持している。
アプリ300が、指示310で示すように、アプリ実行環境(V2.0)303にインストールされるときのことを考える。その結果、アプリキャッシュ203に対して、アプリ300がインストールされる。一方、更新手段221は、ライブラリ実行コード(V1.0)301にアプリ実行環境(V2.0)303の互換性がないことをバージョンから検知すると、ライブラリ実行コード(V1.0)の代わりに、互換用ライブラリ実行コード(V2.0)305をアプリキャッシュにインストールする。
更新手段221は、ライブラリ実行コード(V1.0)からライブラリ実行コード(V2.0)に差し替えたことを示す差し替え履歴ファイル320を、アプリキャッシュに作成する。321は、このとき作成される差し替え履歴ファイル320の履歴である。アプリ300がYYYY/MM/DDの日付において、ライブラリ実行コードが1.0から2.0に差し替えられたことを示す。
この後、更に指示311で示すように、アプリ実行環境のバージョンアップが行わるときのことを考える。アプリ実行環境(V2.1)306は、アプリ実行基盤(V2.1)307を持ち、アプリ実行基盤(V2.1)307は、互換用ライブラリ実行コード(V2.1)308を保持している。
アプリ実行基盤のバージョンアップが行わると、更新手段221は、差し替え履歴ファイル320に、アプリ300に差し替え履歴があることを検知すると、アプリキャッシュ203に格納されているライブラリ実行コード(V2.0)305を、互換用ライブラリ実行コード(V2.1)308をアプリキャッシュに置換してインストールする。更新手段221は、ライブラリ実行コード(V2.0)からライブラリ実行コード(V2.1)に差し替えたことを示す差し替え履歴ファイル322を、アプリキャッシュに作成する。
323は、このとき作成される差し替え履歴ファイル322の履歴である。アプリ300がYYYY/MM/DDの日付において、ライブラリ実行コードが2.0から2.1に差し替えられたことを示す。
図3(b)は、アプリ350をアプリ実行環境(V2.0)303にインストールするときの図である。アプリ350は、サブモジュールとして、ライブラリ実行コード(V2.0)351を保持している。ライブラリ実行コード(V2.0)351は、アプリ実行環境(V2.0)303に互換性をもつサブモジュールであり、そのままインストールしても、動作可能であるとする。
一方、アプリ実行環境(V2.0)303は、アプリ実行基盤(V2.0)304を持ち、アプリ実行基盤(V2.0)304は、互換用ライブラリ実行コード(V2.0)305を保持している。アプリ350が、指示310で示すように、アプリ実行環境(V2.0)303にインストールされるときのことを考える。その結果、アプリキャッシュ203に対して、アプリ350がインストールされる。
一方、更新手段221は、ライブラリ実行コード(V2.0)351にアプリ実行環境(V2.0)303の互換性があることをバージョンから検知すると、そのままライブラリ実行コード(V2.0)351をアプリキャッシュにインストールする。更新手段221は、ライブラリ実行コード(V2.0)を差し替えなかったことを示す差し替え履歴ファイル360を、アプリキャッシュに作成する。361は、このとき作成される差し替え履歴ファイル360の履歴である。N/Aは、アプリ350がYYYY/MM/DDの日付において、ライブラリ実行コードが差し替えられなかったことを示す。
この後、更に指示311で示すように、アプリ実行環境のバージョンアップが行わるときのことを考える。アプリ実行環境(V2.1)306は、アプリ実行基盤(V2.1)307を持ち、アプリ実行基盤(V2.1)307は、互換用ライブラリ実行コード(V2.1)308を保持している。
アプリ実行基盤のバージョンアップが行わると、更新手段221は、差し替え履歴ファイル360に、アプリ350に差し替え履歴がないことを検知すると、アプリキャッシュ203に格納されているライブラリ実行コード(V2.0)351を、そのまま利用する。更新手段221は、ライブラリ実行コード(V2.0)を差し替えなかったことを示す差し替え履歴ファイル362を、アプリキャッシュに作成する。363は、このとき作成される差し替え履歴ファイル362の履歴である。N/Aは、アプリ350がYYYY/MM/DDの日付において、ライブラリ実行コードが差し替えられなかったことを示す。
図4は、本実施例のアプリ実行環境200におけるアプリインストール処理時にインストール手段220と更新手段221が、互換対応を含むインストール処理するフローチャートである。
S400からインストール処理を開始する。S401において、インストール手段220は、インストールファイルであるjarファイルを図2(c)で示したようにアプリキャッシュ203にアプリ用ディレクトリを作成して配置する。この後、キャッシュに配置されたインストールファイルセットに対して、更新手段221が処理を進める。ステップS402からS407までの動作#1によって、更新手段221は、差し替え条件を満たすアプリが差し替える必要があるライブラリ実行コードを保持しているかどうかを判断し、差し替え条件を満たす場合、互換用ライブラリ実行コードでライブラリ実行コードを差し替える処理を行う。
S402において、アプリキャッシュ203にインストールされたインストールファイル内のライブラリ実行コードを取得しループ処理を開始する。S403において、取得したライブラリ実行コードが、互換用ライブラリ実行コードと同じものかどうかを判断する。同じ場合は、S404に進む。同じでない場合は、S407に進む。S404において、図6で示す差し替え判断フローにより差し替え条件を満たすかどうかを判断する。詳細は図6で示す。差し替え条件を満たすYESの場合は、S405に進む。一方、NOと判断した場合は、S406に進む。
S405において、差し替え条件を満たすと判定された互換用ライブラリ実行コードによってライブラリ実行コードが差し替えられる。S406において、差し替え履歴ファイルを出力する。S407において、全てのライブラリ実行コードのループ終端でなければ、S402に戻って処理を繰り返す。全てのライブラリ実行コードに対する処理が完了した場合は、S408に進む。S408において、処理を終了する。
図5は、検知手段215がアプリ実行環境200が当該画像形成装置130で別のバージョンから書き換えられた後の初回起動であることを検知したときの、更新手段221が、ライブラリ実行コードの差し替えを含む更新処理を行う時のフローチャートである。
S500から実行環境のバージョンアップ処理を開始する。S501において、インストール制御モジュール220は、アプリキャッシュ203配下にある全てのアプリをアップデートする。次に、更新手段221によって、S502からS504まで、S501でアップデートされたアプリキャッシュ203配下のアプリ用区画全てを対象としたループ処理を行う。S503において、各アプリ用区画配下にある全てのjarファイルに対して、図4で示した差し替え処理を実行する。
ここでの差し替え処理は、各jarファイルに対して、図4で示したS402からS407までの動作#1と同じ処理となるため省略する。S504において、アプリ用区画のループ終端でなければ、S502に戻って処理を繰り返す。全てのアプリ用区画のjarに対する処理が完了した場合は、S505に進む。S505において、ファームアップ処理を終了する。
図6は、S404で示した判断の詳細を示したフローとなる。S600から判断処理を開始する。S601において、対象としているライブラリ実行コードに対する差し替え履歴があるかどうかを判断する。差し替え履歴がない場合は、S602に進む。差し替え履歴がある場合は、S603に進む。
S602において、アプリが抱えているライブラリ実行コードが今のアプリ実行環境に対して互換性をもっているかを判断する。互換性をもっていない場合は、S603に進む。互換性を持っている場合は、S605に進み、差し替えない判定を返すために、S606に進む。S603において、アプリが抱えているライブラリ実行コードとアプリ実行基盤が保持している互換用ライブラリ実行コードのバージョンを比較する。アプリが抱えているライブラリ実行コードのほうが小さい場合は、S604に進み、差し替える判定を返すために、S606に進む。
S603において、アプリが抱えているライブラリ実行コードのほうが大きい場合は、S605に進み、差し替えない判定を返すために、S606に進む。S606において、判断処理を終了し、最終的は判定を返すものとする。
以上、実施例1で示した方法により、具体的には以下に示すような効果を得ることができる。
[効果事例1]
アプリがライブラリ実行コードを抱える理由の一つに、アプリ本体とライブラリ実行コードの組み合わせでの動作を保証したいということが挙げられる。そのため、組み合わせは重要であり、それに手を加えることは動作が不安定になるリスクがあるといえる。最初のインストールにおいて、差し替えを実行しなかった場合、その後のアプリ実行環境のバージョンアップの際に、互換用ライブラリ実行コードに新しいバージョンが出ている場合でも、動作保障された組み合わせを重視し、差し替えを行わないで済む(図3(b)のケース)。
アプリがライブラリ実行コードを抱える理由の一つに、アプリ本体とライブラリ実行コードの組み合わせでの動作を保証したいということが挙げられる。そのため、組み合わせは重要であり、それに手を加えることは動作が不安定になるリスクがあるといえる。最初のインストールにおいて、差し替えを実行しなかった場合、その後のアプリ実行環境のバージョンアップの際に、互換用ライブラリ実行コードに新しいバージョンが出ている場合でも、動作保障された組み合わせを重視し、差し替えを行わないで済む(図3(b)のケース)。
一方で、最初のインストールにおいて、差し替えを実行した場合、その後のアプリ実行環境のバージョンアップの際に、互換用ライブラリ実行コードに新しいバージョンが出ている場合、更に差し替えることが可能となる。(図3(a)のケース)
[実施例2]
図7は、本実施例のアプリ実行環境200の新バージョンにおいて、アプリをインストールし、その後に、同じアプリを上書きインストールする時の、振る舞いについて説明したブロック図である。アプリ700は、サブモジュールとして、ライブラリ実行コード(V1.0)701を保持している。ライブラリ実行コード(V1.0)701は、アプリ実行環境(V2.1)703に互換性がないサブモジュールであり、そのままインストールしたのでは、動作できないものとする。
図7は、本実施例のアプリ実行環境200の新バージョンにおいて、アプリをインストールし、その後に、同じアプリを上書きインストールする時の、振る舞いについて説明したブロック図である。アプリ700は、サブモジュールとして、ライブラリ実行コード(V1.0)701を保持している。ライブラリ実行コード(V1.0)701は、アプリ実行環境(V2.1)703に互換性がないサブモジュールであり、そのままインストールしたのでは、動作できないものとする。
一方、アプリ実行環境(V2.1)703は、アプリ実行基盤(V2.1)704を持ち、アプリ実行基盤(V2.1)704は、互換用ライブラリ実行コード(V2.1)705を保持している。アプリ700が、指示710で示すように、アプリ実行環境(V2.1)703にインストールされるときのことを考える。その結果、アプリキャッシュ203に対して、アプリ700がインストールされる。
一方、更新手段221は、ライブラリ実行コード(V1.0)701にアプリ実行環境(V2.1)703の互換性がないことをバージョンから検知すると、ライブラリ実行コード(V1.0)の代わりに、互換用ライブラリ実行コード(V2.0)705をアプリキャッシュにインストールする。更新手段221は、ライブラリ実行コード(V1.0)からライブラリ実行コード(V2.1)に差し替えたことを示す差し替え履歴ファイル720を、アプリキャッシュに作成する。721は、このとき作成される差し替え履歴ファイル320の履歴である。アプリ700がYYYY/MM/DDの日付において、ライブラリ実行コードが1.0から2.1に差し替えられたことを示す。
アプリ750は、サブモジュールとして、ライブラリ実行コード(V2.0)751を保持している。ライブラリ実行コード(V2.0)751は、アプリ実行環境(V2.1)703に互換性があるサブモジュールであり、そのままインストールすることが可能である。この後、更に指示711で示すように、アプリ実行環境(V2.1)703にアプリ750を上書きインストールするときのことを考える。
更新手段221は、上書きインストールであることを検知すると、差し替え履歴ファイル320を一旦削除する。その後、インストール処理を試みる。その結果、アプリキャッシュ203に対して、アプリ750がインストールされる。一方、更新手段221は、ライブラリ実行コード(V2.0)751にアプリ実行環境(V2.0)703の互換性があることをバージョンから検知すると、そのままライブラリ実行コード(V2.0)751をアプリキャッシュにインストールする。
更新手段221は、ライブラリ実行コード(V2.0)を差し替えなかったことを示す差し替え履歴ファイル722を、アプリキャッシュに作成する。723は、このとき作成される差し替え履歴ファイル722の履歴である。N/Aは、アプリ750がYYYY/MM/DDの日付において、ライブラリ実行コードが差し替えられなかったことを示す。このように、インストールする前に差し替え履歴を削除していないと、互換用ライブラリ実行コード(V2.1)705の方が、アプリ750が保持するライブラリ実行コード(V2.0)751よりバージョンが大きい為に、上書きされてしまうことになる。
図8は、本実施例のアプリ実行環境200におけるアプリインストール処理時にインストール手段220と更新手段221が、互換対応を含む上書きインストール処理するフローチャートである。
S800から上書きインストール処理を開始する。S801において、インストール手段220は、インストールファイルであるjarファイルを図2(c)で示したようにアプリキャッシュ203にアプリ用ディレクトリを作成して配置する。S802からS803においては、S402からS403と同一の処理であるため、説明は省略する。
この後、検知手段222が上書きインストールを検知した場合は、S804において、ライブラリ実行コードを過去に差し替えたことがある差し替え履歴があるかどうかを判断する。差し替え履歴がある場合は、S805に進む。差し替え履歴がない場合は、S806に進む。S805において、差し替え履歴を削除する。この後、S806からS809の処理は、S404からS407と同一の処理であるため、説明は省略する。S809において、上書きインストール処理を終了する。
[効果事例2]
上書きインストール時において、最初に差し替え履歴を削除することで、その後の差し替え処理は差し替え履歴がないときと同じ処理となる。これにより、実施例1と同様、動作保障されたサブモジュールを抱えているアプリの場合は、その組み合わせを保つために差し替えを行わないで済むようになる(図7のケース)。
上書きインストール時において、最初に差し替え履歴を削除することで、その後の差し替え処理は差し替え履歴がないときと同じ処理となる。これにより、実施例1と同様、動作保障されたサブモジュールを抱えているアプリの場合は、その組み合わせを保つために差し替えを行わないで済むようになる(図7のケース)。
130 画像形成装置
101 CPU
102 ROM
103 RAM
104 HDD
105 操作部I/F
106 ネットワークI/F
101 CPU
102 ROM
103 RAM
104 HDD
105 操作部I/F
106 ネットワークI/F
Claims (3)
- アプリケーションを実行することができる実行環境(200)を備えた画像形成装置(130)であって、
当該実行環境(200)は、アプリケーションをネットワーク、あるいは外部記憶装置からインストールするインストール手段(220)と、
当該アプリケーションにより利用されるサブモジュールの、当該実行環境(200)上で実行される場合に本来の意図通りの動作をすることが分かっている第一のバージョンを保持する互換用サブモジュール(214)を保持する手段と、を備えており、
当該実行環境(200)がその別のバージョンから更新されて現在のバージョンが当該画像形成装置(130)上に配備された後初めて起動されたことを検知する検知手段(222)と、
既にインストールされている一つまたは複数のアプリケーションを更新する更新手段(221)と、を備えており、
当該更新手段(221)が、当該検知手段により当該実行環境が更新された後初めて起動されたことを検知した場合には、それらインストールされている当該一つまたは複数のアプリケーションのインストール先の当該フォルダを検索する検索ステップ(S503)と、
当該検索ステップにより当該サブモジュールが当該フォルダ内に置かれていると判定する第一の判定ステップ(S403)と、
当該第一の判定ステップにて当該サブモジュールが含まれていると判定された際には、
過去の当該サブモジュールにおいて差し替え履歴があるかどうかを判定する第二の判定ステップ(S601)と、
当該第二の判定ステップにより当該サブモジュールが差し替えられた履歴がある場合には、当該サブモジュールのバージョンと当該互換性サブモジュール(214)が保持する第一のバージョンとを比較する第三の判定ステップ(S603)と
当該第三の判定ステップにおいて当該第一のバージョンが当該サブモジュールのバージョンより新しい場合には、差し替える判断をするステップ(S604)と、当該互換性サブモジュール(214)に差し替える置換ステップ(S405)と
一方、当該第二の判定ステップ(S601)により当該サブモジュールが差し替えられた履歴がない場合には、当該サブモジュールのバージョンが当該実行環境(200)に対して互換性を持つバージョンかを判断する第四の判定ステップ(S602)と
当該第四の判定ステップにより、差し替え不要という判断した場合は、差し替えを行わないステップ(S605)を含むように構成されていることを特徴とする、画像形成装置。 - サブモジュールを差し替えた場合、その差し替え履歴をファイルで保存するステップ(S406)を備えることを特徴とする、
請求項1に記載の画像形成装置。 - アプリケーションの上書きインストールを検知した場合、差し替え履歴を削除するステップ(S805)を備え、その後にインストール処理を行うことを特徴とする、
請求項1に記載の画像形成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016219291A JP2018077690A (ja) | 2016-11-10 | 2016-11-10 | アプリケーションの実行環境の違いに依る互換性を考慮したインストール、及びファームアップ方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016219291A JP2018077690A (ja) | 2016-11-10 | 2016-11-10 | アプリケーションの実行環境の違いに依る互換性を考慮したインストール、及びファームアップ方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018077690A true JP2018077690A (ja) | 2018-05-17 |
Family
ID=62149161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016219291A Pending JP2018077690A (ja) | 2016-11-10 | 2016-11-10 | アプリケーションの実行環境の違いに依る互換性を考慮したインストール、及びファームアップ方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018077690A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020049699A (ja) * | 2018-09-25 | 2020-04-02 | コニカミノルタ株式会社 | 画像処理装置、アプリケーション内包ライブラリの処理方法及びプログラム |
JP2020049700A (ja) * | 2018-09-25 | 2020-04-02 | コニカミノルタ株式会社 | 画像処理装置、アプリケーション内包ライブラリの処理方法及びプログラム |
-
2016
- 2016-11-10 JP JP2016219291A patent/JP2018077690A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020049699A (ja) * | 2018-09-25 | 2020-04-02 | コニカミノルタ株式会社 | 画像処理装置、アプリケーション内包ライブラリの処理方法及びプログラム |
JP2020049700A (ja) * | 2018-09-25 | 2020-04-02 | コニカミノルタ株式会社 | 画像処理装置、アプリケーション内包ライブラリの処理方法及びプログラム |
JP7103113B2 (ja) | 2018-09-25 | 2022-07-20 | コニカミノルタ株式会社 | 画像処理装置、アプリケーション内包ライブラリの処理方法及びプログラム |
JP7103112B2 (ja) | 2018-09-25 | 2022-07-20 | コニカミノルタ株式会社 | 画像処理装置、アプリケーション内包ライブラリの処理方法及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021217871A1 (zh) | 微服务集群部署方法、装置、计算机设备及存储介质 | |
JP5267337B2 (ja) | プログラム、記憶媒体、情報処理装置、プリンタ装置およびシステム | |
US7721284B2 (en) | Deployment of multiple embedded operating system components | |
US8561049B2 (en) | Method and system for updating content stored in a storage device | |
JP5960005B2 (ja) | 画像形成装置、アプリケーションのプレインストール方法、およびプログラム | |
TWI396076B (zh) | 無線終端機、無線終端機之非揮發性記憶體及診斷資訊之故障安全保存方法 | |
JP2012527027A (ja) | ランタイム環境を構築するためのシステムおよび方法 | |
JP2009230398A (ja) | ソフトウェア更新支援装置およびソフトウェア更新支援プログラム | |
US10089102B2 (en) | Information processing apparatus, method, and program | |
US9086938B2 (en) | Information processing apparatus, control method thereof, and storage medium | |
CN1963682A (zh) | 能够更新可选装置的固件的图像形成设备及其方法 | |
JP2018077690A (ja) | アプリケーションの実行環境の違いに依る互換性を考慮したインストール、及びファームアップ方法 | |
JP2013214247A (ja) | 情報処理装置、制御方法、およびプログラム | |
US9742948B2 (en) | Image forming apparatus and method for deleting application | |
US9940334B2 (en) | Image forming apparatus and control method thereof | |
JP2017062537A (ja) | 情報処理装置、情報処理装置の制御方法、及びプログラム | |
JP5417820B2 (ja) | システムファイル共有装置、システムファイル共有方法及びプログラム | |
JP2018081607A (ja) | 情報処理装置、情報処理装置の制御方法、及びプログラム | |
JP2020080120A (ja) | 情報処理装置、情報処理装置の更新方法、及び、情報処理装置の更新プログラム | |
JP2018032119A (ja) | 情報処理装置、情報処理装置の制御方法、及びプログラム | |
JP5673730B2 (ja) | 情報処理装置 | |
US11513792B2 (en) | Tracking history of firmware program updates | |
JP2017162106A (ja) | 情報処理装置及びデバイスドライバのインストール方法 | |
JP2023077247A (ja) | 画像形成装置と情報処理装置、及び画像形成装置の制御方法とプログラム | |
JP2017138747A (ja) | 画像形成装置 |