(57)【特許請求の範囲】
【請求項１】
クライアント側が、サーバ側により配信されたスクリプトプラグインの設定情報を受信するステップと、  クライアント側が、前記設定情報に基づいて、対応する有効なスクリプトプラグインを取得するステップと、  クライアント側が、アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復するステップと、を含み、 前記アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復するステップは、  アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムの関数のプッシュ操作を監視するステップと、  前記有効なスクリプトプラグインにおいて設定された目的関数のプッシュ要求を監視により発見した場合、前記有効なスクリプトプラグインにおける置換え関数が、前記目的関数の代わりにプッシュ操作を実行することにより、前記置換え関数を実行して前記アプリケーションプログラムを修復するステップと、を含む  ことを特徴とするアプリケーションプログラムの修復方法。
【請求項２】
前記アプリケーションプログラムは、ｉＯＳシステムに基づいて開発されたクローズドコードプログラムであり、前記スクリプトプラグインのプログラミング言語はＬｕａ言語であること
を特徴とする請求項１に記載のアプリケーションプログラムの修復方法。
【請求項３】
前記設定情報に基づいて、対応する有効なスクリプトプラグインを取得するステップは、
前記設定情報からスクリプトプラグインの第１バージョン番号を取得するステップと、
ローカルに現在使用されている有効なスクリプトプラグインの第２バージョン番号を取得するステップと、
前記第１バージョン番号と前記第２バージョン番号とを比較して、前記第１バージョン番号の有効性を検証するステップと、
前記第１バージョンが有効である場合、対応する有効なスクリプトプラグインを取得するステップと、を含む
ことを特徴とする請求項１または２に記載のアプリケーションプログラムの修復方法。
【請求項４】
前記設定情報に基づいて対応する有効なスクリプトプラグインを取得するステップは、
前記設定情報から前記スクリプトプラグインのバージョン番号を取得するステップと、
ローカルに前記バージョン番号に対応するスクリプトプラグインが記憶されていることを検出した場合、有効なスクリプトプラグインとするステップと、
ローカルに前記バージョン番号に対応するスクリプトが記憶されていることを検出していない場合、前記サーバ側から対応する有効なスクリプトプラグインをダウンロードするステップと、を含む
ことを特徴とする請求項１〜３のいずれか１項に記載のアプリケーションプログラムの修復方法。
【請求項５】
前記サーバ側から対応する有効なスクリプトプラグインをダウンロードした後に、
前記設定情報から前記スクリプトプラグインの第１ダイジェストアルゴリズム値を取得するステップと、
ダウンロード済みの前記スクリプトプラグインの第２ダイジェストアルゴリズム値を算出するステップと、
前記第１ダイジェストアルゴリズム値と前記第２ダイジェストアルゴリズム値とを比較して、ダウンロードされた前記スクリプトプラグインの有効性を検証するステップと、をさらに含む
ことを特徴とする請求項１〜４のいずれか１項に記載のアプリケーションプログラムの修復方法。
【請求項６】
クライアント側が、サーバ側により配信されたスクリプトプラグインの設定情報を受信する設定受信モジュールと、
クライアント側が、前記設定情報に基づいて対応する有効なスクリプトプラグインを取得するスクリプト取得モジュールと、
クライアント側が、アプリケーションプログラムが実行されるプロセスにおいて、有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復するアプリケーションプログラム修復モジュールと、を備え、
前記プログラム修復モジュールは、
アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムの関数のプッシュ操作を監視するプッシュ監視ユニットと、
前記有効なスクリプトプラグインにおいて設定された目的関数のプッシュ要求を監視した場合、前記有効なスクリプトプラグインにおける置換え関数を前記目的関数に置換えて前記置換え関数にプッシュ操作を実行することにより、前記置換え関数を実行し前記アプリケーションプログラムを修復するプログラム置換えユニットと、を備える
ことを特徴とするアプリケーションプログラムの修復装置。
【請求項７】
前記アプリケーションプログラムは、ｉＯＳシステムに基づいて開発されたクローズドコードプログラムであり、前記スクリプトプラグインのプログラミング言語はＬｕａ言語である
ことを特徴とする請求項６に記載のアプリケーションプログラムの修復装置。
【請求項８】
前記スクリプト取得モジュールは、
前記設定情報からスクリプトプラグインの第１バージョン番号を取得する第１バージョン番号取得ユニットと、
ローカルに現在使用されている有効なスクリプトプラグインの第２バージョン番号を取得する第２バージョン番号取得ユニットと、
前記第１バージョン番号と前記第２バージョン番号とを比較し、前記第１バージョン番号の有効性を検証する有効性検証ユニットと、
前記第１バージョン番号が有効である場合、対応する有効なスクリプトプラグインを取得するスクリプト取得ユニットと、を備える
ことを特徴とする請求項６または７に記載のアプリケーションプログラムの修復装置。
【請求項９】
前記スクリプト取得モジュールは、
前記設定情報から前記スクリプトプラグインのバージョン番号を取得するバージョン番号取得ユニットと、
ローカルに前記バージョン番号に対応するスクリプトプラグインが記憶されていることを検出した場合、有効なスクリプトプラグインとするローカル取得ユニットと、
ローカルに前記バージョン番号に対応するスクリプトプラグインが記憶されていることを検出していない場合、前記サーバ側から対応する有効なスクリプトプラグインをダウンロードするダウンロード取得ユニットと、を備える
ことを特徴とする請求項６〜８のいずれか１項に記載のアプリケーションプログラムの修復装置。
【請求項１０】
前記サーバ側から対応する有効なスクリプトプラグインをダウンロードした後に、前記設定情報から前記スクリプトプラグインの第１ダイジェストアルゴリズム値を取得し、ダウンロード済みの前記スクリプトプラグインの第２ダイジェストアルゴリズム値を算出し、前記第１ダイジェストアルゴリズム値と第２ダイジェストアルゴリズム値とを比較して、ダウンロードされた前記スクリプトプラグインの有効性を検証するダイジェスト検証モジュール、をさらに備える
ことを特徴とする請求項６〜９のいずれか１項に記載のアプリケーションプログラムの修復装置。
【請求項１１】
不揮発性コンピュータ記録媒体であって、一つ以上のモジュールが記憶され、前記一つ以上のモジュールが１つのアプリケーションプログラムの修復方法を実行する機器により実行される時に、前記機器は、次の動作を実行し、すなわち、
サーバ側により配信されたスクリプトプラグインの設定情報を受信し、
前記設定情報に基づいて対応する有効なスクリプトプラグインを取得し、
アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復し、
アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復することは、
アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムの関数のプッシュ操作を監視し、
前記有効なスクリプトプラグインにおいて設定された目的関数のプッシュ要求を監視により発見した場合、前記有効なスクリプトプラグインにおける置換え関数が、前記目的関数の代わりにプッシュ操作を実行することにより、前記置換え関数を実行して前記アプリケーションプログラムを修復することを含む
ことを特徴とする不揮発性コンピュータ記録媒体。
【請求項１２】
請求項１乃至５のいずれか１項に記載のアプリケーションプログラムの修復方法を実行するためのコンピュータプログラム。
【発明の詳細な説明】
【優先権主張】
【０００１】
本願は、２０１５年５月１４日に提出された、出願番号が２０１５１０２４６２９７．４で、出願人が百度在線網絡技術（北京）有限公司で、発明の名称が「アプリケーションプログラム修復方法、装置及び記録媒体」である中国特許出願に基づく優先権を主張し、当該特許出願の全文を引用により本願に組み込む。
【技術分野】
【０００２】
本発明は、コンピュータ技術分野に関し、特にアプリケーションプログラムの修復方法、装置及び記録媒体に関する。
【背景技術】
【０００３】
ｉＯＳシステムは、アメリカのアップル社により提供された現在最も流行しているモバイルオペレーティングシステムであり、ｉＯＳシステムに基づいて開発されたｉＯＳアプリケーションプログラムの数量が百万を超えており、製品間の競争が激しく、ユーザが商品の品質に対する要求もだんだん高まってきている。特に、ユーザの多いアプリケーションプログラムについて、製品の品質がアプリケーション開発者にとって大きなチャレンジになる。
【０００４】
既存のｉＯＳアプリケーションプログラムが比較的大きな問題、又は早急に修復することが必要な問題に遭遇した場合、通常は、アプリケーションプログラムを修正して、改めてパケッジにしてアップル社のアプリストア（Ａｐｐ  Ｓｔｏｒｅ）に提出し、審査されてから更新される必要があり、或いは、一部のアプリケーションプログラムでは、問題があった機能に対し、サーバ側により停止させるように制御することができる。審査に要する時間は通常予測困難であるため、問題があったアプリケーションプログラム、又は一部機能の使用停止は、ユーザの使用に影響を与え、且つ比較的大きな損失をもたらすことになる。
【０００５】
従来の解決手段では、下記のような複数の欠点が存在する。
（１）   限界：サーバ側にだけアプリケーションプログラムの全ての問題の解決を頼ることは不可能で、かかる問題の存在は重大な損失をもたらすおそれがある。
（２）   実効性が低い：アプリストア（Ａｐｐ  Ｓｔｏｒｅ）の審査に要する時間を予測することができないため、審査の再度の提出は、往々にして、タイムリーにアプリケーションプログラムのオンライン上の問題の解決にならない。
（３）   ユーザ体験への影響：オンライン上問題が存在するために、ユーザがアプリケーションプログラムのクライアント側の機能を正常に使用することができなくなる。
（４）   開発量の増加：オンラインでの問題の修復は、開発者の作業量が増加することになる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
かかる事情に鑑みてなされた本発明の主な目的は、アプリケーションプログラムの修復方法、装置及び記録媒体を提供することで、タイムリーでかつ便利にアプリケーションプログラムの問題を修復することを実現することである。
【課題を解決するための手段】
【０００７】
本願に係る実施形態による具体的な解決手段は以下の通りになる。
【０００８】
第１態様において、本実施形態はアプリケーションプログラムの修復方法を提供し、この修復方法は、
サーバ側により配信(distribute)されたスクリプトプラグイン（script plug-in）の設定情報を受信するステップと、
前記設定情報に基づいて、対応する有効なスクリプトプラグインを取得するステップと、
アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復するステップと、を含む。
【０００９】
第２態様において、本実施形態はアプリケーションプログラム修復装置をさらに提供し、この修復装置は、
サーバ側により配信されたスクリプトプラグインの設定情報を受信する設定受信モジュールと、
前記設定情報に基づいて、対応する有効なスクリプトプラグインを取得するスクリプト取得モジュールと、
アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復するアプリケーションプログラム修復モジュールと、を備える。
【００１０】
第３態様において、本実施形態は不揮発性コンピュータ記録媒体を提供し、前記コンピュータの記録媒体には一つ以上のモジュールが保存され、前記一つ以上のモジュールがアプリケーションプログラムの修復方法を実行する機器により実行されると、前記機器は次の動作をする。すなわち、
サーバ側により配信されたスクリプトプラグインの設定情報を受信し、
前記設定情報に基づいて対応する有効なスクリプトプラグインを取得し、
アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復する。
【００１１】
本実施形態によって提供されたアプリケーションプログラム修復方法、装置及び記録媒体は、クライアント側のアプリケーションプログラムの問題に対して、サーバ側が問題を修復するためのスクリプトプラグインの設定情報をクライアント側に送信し、クライアント側が設定情報に基づいて、自動的に対応するスクリプトプラグインを取得し、起動し、そして実行することができ、ユーザの使用に影響を与えず問題を修復することができる。
【図面の簡単な説明】
【００１２】
以下、本発明に係る実施例をより詳しく説明するために、実施例に用いられる図面を簡単に説明し、勿論、以下の図面は本発明に係る一部の実施形態に過ぎず、当業者にとって、創造的労働をすることなく、これらの図面に対する修正や置き換えは可能である。
【図１】本発明の実施例１に係るアプリケーションプログラムの修復方法のフローチャートである。
【図２】本発明の実施例２に係るアプリケーションプログラムの修復方法のフローチャートである。
【図３】本発明の実施例３に係るアプリケーションプログラムの修復方法のフローチャートである。
【図４】本発明の実施例４に係るアプリケーションプログラムの修復方法のフローチャートである。
【図５】本発明の実施例５に係るアプリケーションプログラムの修復装置の構成の概略図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら本発明に係る実施例をより明確、かつ完全に説明する。勿論、後述する実施例は本発明に係る実施形態の一部であり、全部の実施例ではなく、本発明の原理を説明するためのものに過ぎず、本発明を制限するものではないことは明らかである。本発明の実施例に基づいて、当業者が創造的な労働をすることなく取得するほかの実施例はいずれも本発明の保護範囲に属するものとする。
【００１４】
実施例１
図１は、本発明の実施例１に係るアプリケーションプログラムの修復方法のフローチャートであり、本実施例は、インストールされた、実行しているアプリケーションプログラムに動的に修復を行う場合に適用することが可能である。具体的には、サーバ側がクライアント側で実行しているユーザアプリケーションプログラムを制御して動的に修正を行う。この方法はアプリケーションプログラムの修復装置が実行し、当該装置はソフトウェアにより実現されることができ、ユーザ側が所属するクライアント側に設置される。図１に示すように、この方法は以下のステップを含む。
【００１５】
Ｓ１１０：サーバ側により配信されたスクリプトプラグインの設定情報を受信する。
【００１６】
スクリプトプラグインは、クライアント側のアプリケーションプログラムの問題を修復するために用いられるもので、通常、開発者がアプリケーションプログラムに問題があることを発見した場合、修復するためのスクリプトプラグインを開発し、或いは現在のスクリプトプラグインを更新するようにする。サーバ側は、問題を修復する必要がある場合に、先ず、クライアント側にスクリプトプラグインの設定情報を配信することになる。クライアント側に設定情報を自発的に配信してスクリプトプラグインの更新があることを知らせてもよく、クライアント側により発送された更新リクエストに応じて設定情報を送信してもよい。設定情報は、スクリプトプラグインの基本情報を含み、例えは、少なくともスクリプトプラグインのバージョン番号を含んでもよく、ダウンロードアドレス及び認証情報などを更に含んでもよい。毎回更新されるスクリプトプラグインは一つでもよく、複数でもよいため、一回に配信される設定情報は一つまたは複数のバージョン番号が含まれてもよい。サーバ側は、クライアント側のバージョンに基づいて、対応するスクリプトプラグインのバージョン番号をクライアント側に配信してもよい。
【００１７】
Ｓ１２０：前記設定情報に基づいて、対応する有効なスクリプトプラグインを取得する。
【００１８】
クライアント側は、設定情報を受信すると、更新されるスクリプトプラグインがどれかを知ることができ、それに基づいて、対応する有効なスクリプトプラグインを取得する。具体的に、クライアント側から対応するスクリプトプラグインをダウンロードしてもよく、或いは、ローガルにおいてスクリプトプラグインが存在しているか否かを探索するようにしてもよい。即ち、Ｓ１２０の操作は、具体的に、前記設定情報の中から前記スクリプトプラグインのバージョン番号を取得するステップと、ローガルに前記バージョン番号に対応するスクリプトプラグインが格納されていることを検出した場合、有効なスクリプトプラグインとするステップと、ローガルに前記バージョン番号に対応するスクリプトプラグインが格納されていることを検出していなかった場合、サーバ側から対応する有効なスクリプトプラグインをダウンロードするステップと、を含む。
【００１９】
クライアント側は、複数のスクリプトプラグインを格納することができ、サーバ側の設定情報に基づいて、現在どのスクリプトプラグインが有効なのかを特定することにより、有効なスクリプトプラグインを起動して問題を修復する。このようにすれば、クライアント側がスクリプトプラグインを再びダウンロードすることを防止できるとともに、サーバ側も必要に応じてクライアント側における既存のスクリプトプラグインを用いて問題を修復することが可能になり、より柔軟的になる。サーバ側は、クライアント側に既存のスクリプトプラグイン及び新たに配信されたスクリプトプラグインを同時に有効にするように設定することができ、このようにすると、新しいスクリプトプラグインのサイズを小さくすることができ、伝送すべきデータ量を削減することもできる。
【００２０】
Ｓ１３０：アプリケーションプログラムが実行されているプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復する。
【００２１】
スクリプトプラグインとは、アプリケーションプログラムの問題を動的に修復することができるパッチファィルであって、アプリケーションプログラムによってサポートされるプログラミング環境において実行することができ、かつアプリケーションプログラムのオリジナルコードを変更することなく、アプリケーションプログラムの実行中に発生する問題を動的に修復することができる。
【００２２】
Ｓ１３０では、以下のステップによりアプリケーションプログラムの修復を行うことが好ましい。即ち、
アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムの関数のプッシュ操作を監視するステップと、
前記有効なスクリプトプラグインにおいて設定された目的関数のプッシュ要求を監視により発見した場合、前記有効なスクリプトプラグインにおける置換え関数が前記目的関数の代わりにプッシュ操作を実行し、前記置換え関数を実行して前記アプリケーションプログラムを修復するステップと、を含む。
【００２３】
スクリプトプラグインにおいて置換えるべき目的関数があることの確認は、当該目的関数の関数名称を確認することができ、かつスクリプトプラグインにおいては、目的関数の代わりに実行する置換え関数が提供されている。目的関数は、通常問題のある関数であり、目的関数の代わりに置換え関数を実行することにより、アプリケーションプログラムに存在する問題を修復することができる。又は、この方法を用いて、アプリケーションプログラムの機能を増やしてもよい。
【００２４】
前記アプリケーションプログラムの修復方法は、特に、ｉＯＳシステムに基づいて開発されたクローズドコード（closed code）プログラムのアプリケーションプログラムに適用される。アプリケーションプログラムに問題があった場合、開発者はスクリプトプラグインという形で、オリジナルのアプリケーションプログラムを変えることなく問題を修復することができるため、ｉＯＳシステムのアプリスドアによる審査を経る必要がない。スクリプトプラグインに用いられるプログラミング言語は、アプリケーションプログラムがその実行環境をサポートすることができ、かつその関数の代わりに実行できる言語にすることができ、好ましくは、前記スクリプトプラグインのプログラミング言語がＬｕａ言語である。Ｌｕａ言語は、重さの軽い言語であって、サイズが小さく、起動速度が速く、他のアプリケーションプログラムに簡単に埋め込んで実行し、かつ、優れた拡張性を有し、ホスト言語が提供する機能を、まるで内蔵された（built-in）機能のような便利さで利用することができる。Ｌｕａ言語のスクリプトプラグインがクライアント側にダウンロードされた後に、クライアント側のアプリケーションプログラムを実行する時に、クライアント側は、Ｌｕａエンジンを自動的に起動して実行環境を有効にするとともに、スクリプトプラグインのコードを有効にすることで、クライアント側のアプリケーションプログラムの問題を修復する目的を達成する。
【００２５】
本発明の実施例に係る発明によって、クライアント側のアプリケーションプログラムにおける問題に対して、サーバ側が問題を修復するためのスクリプトプラグインの設定情報をクライアント側に配信し、クライアント側が設定情報に基づいて、自動的に対応するスクリプトプラグインを取得し、起動し、実行することができるため、ユーザの使用に影響を与えずに、問題を修復することができる。
【００２６】
クライアント側は、さらに、実行ログを報告してもよく、例えば、スクリプトプラグインのダウンロードが成功した後に、又は、スクリプトプラグインの実行が成功した後に、実行ログをサーバ側に報告することにより、開発者がスクリプトプラグインのリクエスト、ダウンロード及び実行などの全プロセスを知ることができ、統計、問題の特定及びスクリプトプラグインのコード最適化が容易になる。
【００２７】
前述した解決手段を元に設定情報に基づいてスクリプトプラグインに有効性の認証を行うことにより、問題修復の信頼性を向上させるので好ましい。有効性の認証は、多岐にわたって行われてもよく、好ましくは、スクリプトプラグインのバージョン番号及び認証情報によって実現される。
【００２８】
実施例２
図２は、本発明の実施例２に係るアプリケーションプログラムの修復方法のフローチャートである。本実施例は上記の実施例を元に、前記設定情報に基づいて対応する有効なスクリプトプラグインを取得する動作を具体的に最適化した。本実施例の方法は、
サーバ側により配信されたスクリプトプラグインの設定情報を受信するステップ２１０（Ｓ２１０）と、
前記設定情報からスクリプトプラグインの第１バージョン番号を取得するステップ２２０（Ｓ２２０）と、
ローガルに現在使用されている有効なスクリプトプラグインの第２バージョン番号を取得するステップ２３０（Ｓ２３０）と、
前記第１バージョン番号と前記２バージョン番号とを比較して、前記第１バージョン番号の有効性を認証するステップ２４０（Ｓ２４０）と、
前記第１バージョン番号が有効である場合、対応する有効なスクリプトプラグインを取得するステップ２５０（Ｓ２５０）と、
アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復するステップ２６０（Ｓ２６０）と、を含む。
【００２９】
上記解決手段において、第１バージョン番号は、サーバ側によって設定され、有効にして使用することが必要であるスクリプトプラグインのバージョン番号であり、クライアント側のローガルの第２バージョン番号は、クライアント側で既に有効になっており用いられるスクリプトプラグインのバージョン番号である。二つのバージョン番号を比較することによって、現在設定するスクリプトプラグインの有効性を認証することができる。例えば、第１バージョン番号の順位が第２バージョン番号の順位により高い場合は、第１バージョン番号が有効であると判断する。そうでなければ、クライアント側は、実際に比較的新しいバージョンに更新されており、スクリプトプラグインを再度更新する必要がない。
【００３０】
実施例３
図３は、本発明の実施例３に係るアプリケーションプログラムの修復方法に関するフローチャートであり、本実施例では上記の実施例を元にし、かつ、ダウンロードする方法によって有効なスクリプトプラグインを取得する解決手段をより具体的に最適化する。本実施例の方法は、
サーバ側により配信されたスクリプトプラグインの設定情報を受信するステップ３１０（Ｓ３１０）と、
前記設定情報に基づいて、対応する有効なスクリプトプラグインをダウンロードするステップ３２０（Ｓ３２０）と、
前記設定情報から前記スクリプトプラグインの第１ダイジェストアルゴリズム値を取得するステップ３３０（Ｓ３３０）と、
ダウンロード済みの前記スクリプトプラグインの第２ダイジェストアルゴリズム値を算出するステップ３４０（Ｓ３４０）と、
第１ダイジェストアルゴリズム値と第２ダイジェストアルゴリズム値とを比較して、ダウンロードされた前記スクリプトプラグインの有効性を認証し、有効である場合、Ｓ３６０を実行し、無効である場合、Ｓ３２０を繰り返して実行し、または、今回の動作を終了し、異常があることを知らせるステップ３５０（Ｓ３５０）と、
アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復するステップ３６０（Ｓ３６０）と、を含む。
【００３１】
上記解決手段において、ＭＤ５のダイジェストアルゴリズムを用いることができる。第１ダイジェストアルゴリズム値は、サーバ側がスクリプトプラグイン全体に対して計算して取得したダイジェストアルゴリズム値であり、認証情報とする。第２ダイジェストアルゴリズム値は、クライアント側がスクリプトプラグインをダウンロードした後に、そのスクリプトプラグインに対して計算して取得したダイジェストアルゴリズム値であり、スクリプトプラグインのダウンロードが完全かつ正確であれば、二つのダイジェストアルゴリズム値は同一であり、ダウンロードされたスクリプトプラグインが有効である。ダイジェストアルゴリズムに基づいてスクリプトプラグインに対して認証を行うことにより、ダウンロードの完全性を確保することができる。
【００３２】
実施例４
図４は本発明の実施例４に係るアプリケーションプログラムの修復方法に関するフローチャートであり、本実施例は前述した実施例を基礎とする応用例を提供する。該方法は、次のステップを含む。
Ｓ４０１、開発者はクライアント側の問題を修復するためのＬｕａスクリプトプラグインを作成し、サーバ側に配置するステップ４０１と、
Ｓ４０２、上記Ｌｕａスクリプトプラグインに対応する設定情報（前記設定情報には、該スクリプトプラグインのバージョン番号と、サーバ側のダウンロードアドレスと、ＭＤ５値と、を含む）を生成し、サーバ側に格納するステップ４０２と、
Ｓ４０３、サーバ側がクライアント側のバージョンに応じて、該クライアント側に適用するスクリプトプラグインの設定情報を配信するステップ４０３と、
Ｓ４０４、クライアント側はサーバ側により配信された設定情報を受信するステップ４０４と、
Ｓ４０５、クライアント側はスクリプトプラグインのバージョン情報を検証し、配信されたバージョン番号が現在有効なバージョン番号より高いか否かを判断し、現在有効なバージョン番号がより高い場合は有効であり、Ｓ４０６を実行する、そうでなければ、このプロセスを終了するステップ４０５と、
Ｓ４０６、設定情報が有効である場合、クライアント側が有効になった設定情報をリセットするステップ４０６と、
具体的には、クライアント側が現在有効なスクリプトプラグインのバージョン番号を置換える。クライアント側が、既に存在する他のスクリプトプラグインを削除してもよく、後の使用に備えて記憶してもよい。
クライアント側は、設定情報を受信した後に、直接有効性の検証及びダウンロード操作を実行してもよく、設定情報を受信して有効であることを検証した後に、ユーザに通知し、ユーザのコマンドに応じてダウンロード操作を実行してもよい。
Ｓ４０７、クライアント側は改めて設定されたスクリプトプラグインをダウンロードし、ダウンロードが成功した場合に、Ｓ４０８を実行し、そうでなければ、プロセスを終了するステップ４０７と、
Ｓ４０８、ダウンロードが成功し後に、クライアント側はサーバ側にログを報告するステップ４０８と、
Ｓ４０９、クライアント側はダウンロードしたスクリプトプラグインのＭＤ５値を検証し、即ち、設定情報中のＭＤ５値と、スクリプトプラグインをダウンロードし計算して得られたＭＤ５値とが一致するかどうかを比較し、設定情報のＭＤ５値とスクリプトプラグインをダウンロードし計算して得られたＭＤ５値とが一致する場合、有効なスクリプトプラグインであり、Ｓ４１０を実行し、そうでなければ、プロセスを終了するステップ４０９と、
Ｓ４１０、スクリプトプラグインが有効である場合、Ｌｕａエンジンを起動し、Ｌｕａスクリプトプラグインの実行環境を有効にし、起動が成功した場合、Ｓ４１１を実行し、そうでなければ、プロセスを終了するステップ４１０と、
Ｓ４１１、Ｌｕａエンジンの起動が成功した後に、クライアント側はログをサーバ側に報告するステップ４１１と、
Ｓ４１２、クライアント側は、問題がある部分を実行する時に、Ｌｕａスクリプトプラグインの実行をトリガーして有効にし、問題を修復するステップ４１２。
【００３３】
本実施例に係る解決手段において、Ｌｕａ＋Ｗａｘフレームを使用してもよく、クライアント側とサーバ側とが協働して、動的にｉＯＳクライアント側に存在する問題を動的にかつ素早く修復することで、新バージョンの提出或いはユーザの正常使用に影響を与えることを避け、製品には以下のメリットをもたらす。
【００３４】
１．動的に、素早く、柔軟的に一部のｉＯＳアプリケーションプログラムの問題を修復し、再度パッケージにして審査に提出することが不要で、かつユーザの使用に影響を与えない。
２．修復プロセスの全体が制御可能であり、リスクが低い。
３．Ｌｕａスクリプトのサイズが小さく、ユーザのデータ通信量を節約することができる。
４．拡張性に優れ、複数の問題を並行して、効率の高い修復ができる。
【００３５】
実施例５
図５は本実施例５に係るアプリケーションプログラムの修復装置の構成に関する概略図であり、該装置は、設定受信モジュール５１０と、スクリプト取得モジュール５２０と、アプリケーションプログラム修復モジュール５３０と、を備える。
【００３６】
設定受信モジュール５１０は、サーバ側により配信されたスクリプトプラグインの設定情報を受信し、スクリプト取得モジュール５２０は、前記設定情報に基づいて対応する有効なスクリプトプラグインを取得し、アプリケーションプログラム修復モジュール５３０は、アプリケーションプログラムが実行されているプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復する。
【００３７】
具体的に、プログラム修復モジュール５３０は、プッシュ監視ユニット５３１と、アプログラム置換えユニット５３２と、を備える。
【００３８】
プッシュ監視ユニット５３１は、アプリケーションプログラムが実行されているプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムの関数のプッシュ操作を監視し、プログラム置換えユニット５３２は、前記スクリプトプラグインにおいて設置された目的関数のプッシュ要求を監視して発見した時に、前記目的関数の代わりに前記有効なスクリプトプラグインにおける置換え関数がプッシュ操作を実行し、前記置換え関数を実行して前記アプリケーションプログラムを修復する。
【００３９】
本実施例に係る解決手段において、前記アプリケーションプログラムはｉＯＳシステムに基づいて開発されたクローズドコードプログラムであり、好ましくは、前記スクリプトプラグインのプログラミング言語はＬｕａ言語である。
【００４０】
上記解決手段において、好ましくは、さらに、スクリプトプラグインに対して有効性の検証を行う。
【００４１】
スクリプト取得モジュールは、具体的に、第１バージョン番号取得ユニットと、第２バージョン番号取得ユニットと、有効性検証ユニットと、スクリプト取得ユニットと、を備える。
【００４２】
第１バージョン番号取得ユニットは、前記設定情報からスクリプトプラグインの第１バージョン番号を取得し、第２バージョン番号取得ユニットは、現在ローカルに使われている有効なスクリプトプラグインの第２バージョン番号を取得し、有効性検証ユニットは、第１バージョン番号と第２バージョン番号とを比較し、前記第１バージョン番号の有効性を検証し、スクリプト取得ユニットは、前記第１バージョン番号が有効である場合、対応する有効なスクリプトプラグインを取得する。
【００４３】
また、スクリプト取得モジュールは、バージョン番号取得ユニットと、ローカル取得ユニットと、ダウンロード取得ユニットと、をさらに備える。ここで、バージョン番号取得ユニットは、前記設定情報から前記スクリプトプラグインのバージョン番号を取得し、ローカル取得ユニットは、ローガルに前記バージョン番号に対応するスクリプトプラグインが格納されていることを検出した場合、有効なスクリプトプラグインとし、ダウンロード取得ユニットは、ローガルに前記バージョン番号に対応するスクリプトプラグインが格納されていることを検出していない場合、前記サーバ側から対応する有効なスクリプトプラグインをダウンロードする。
【００４４】
さらに、該装置は要約検証モジュールをさらに備え、前記要約検証モジュールは、前記サーバ側から対応する有効なスクリプトプラグインをダウンロードした後に、前記設定情報から前記スクリプトプラグインの第１ダイジェストアルゴリズム値を取得し、ダウンロード済みの前記スクリプトプラグインの第２ダイジェストアルゴリズム値を算出し、前記第１ダイジェストアルゴリズム値と第２ダイジェストアルゴリズム値とを比較することにより、ダウンロードした前記スクリプトプラグインの有効性を検証する。
【００４５】
上記アプリケーションプログラム修復装置は、本発明の任意の実施例により提供されたアプリケーションプログラムの修復方法を実行することができ、実行方法に対応する機能モジュールと有益な効果とを有する。
【００４６】
本発明の実施例に係る解決手段を用いることにより、クライアント側のアプリケーションプログラムに存在する問題に対し、サーバ側によりクライアント側に問題を修復するためのスクリプトプラグインの設定情報を配信し、クライアント側が設定情報に基づいて、自動的に対応するスクリプトプラグインを取得し、起動し、実行することができるため、ユーザに影響を与えず、問題を修復することができる。
【００４７】
実施例６
本実施例は不揮発性コンピュータ記録媒体を提供し、前記コンピュータ記録媒体に一つ以上のモジュールが格納され、前記一つ以上のモジュールがアプリケーションプログラム修復方法の機器により実行される時に、前記機器は、次の動作をする。すなわち、
サーバ側により配信されたスクリプトプラグインの設定情報を受信し、
前記設定情報に基づいて対応する有効なスクリプトプラグインを取得し、
アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復する。
【００４８】
上記記録媒体に格納されているモジュールが前記機器により実行される時に、アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムを修復するステップには、
アプリケーションプログラムが実行されるプロセスにおいて、前記有効なスクリプトプラグインを起動して前記アプリケーションプログラムの関数のプッシュ操作を監視するステップと、
前記有効なスクリプトプラグインにおいて設置された目的関数のプッシュ要求を監視により発見した場合、前記有効なスクリプトプラグインにおける置換え関数が、前記目的関数の代わりに、プッシュ操作を実行することにより、前記置換え関数を実行して前記アプリケーションプログラムを修復するステップと、をさらに含んでもよい。
【００４９】
上記記録媒体に格納されているモジュールが前記機器によって実行される時に、前記アプリケーションプログラムはｉＯＳシステムに基づいて開発されたクローズドコードプログラムであり、前記スクリプトプラグインのプログラミング言語はＬｕａ言語であることを含むことができる。
【００５０】
上記記録媒体に格納されているモジュールが前記機器によって実行される時に、前記設定情報に基づいて対応する有効なスクリプトプラグインを取得するステップにおいては、
前記設定情報からスクリプトプラグインの第１バージョン番号を取得するステップと、
ローガルに現在使用されている有効なスクリプトプラグインの第２バージョン番号を取得するステップと、
前記第１バージョン番号と前記第２バージョン番号とを比較し、前記第１バージョン番号の有効性を検証するステップと、
上記第１バージョン番号は有効である場合、対応する有効なスクリプトプラグインを取得するステップと、を含むことができる。
【００５１】
上記記録媒体に格納されているモジュールが前記機器によって実行される時に、前記設定情報に基づいて対応する有効なスクリプトプラグインを取得するステップにおいては、
前記設定情報から前記スクリプトプラグインのバージョン番号を取得するステップと、
ローガルに前記バージョン番号対応するスクリプトプラグインが記憶されていることを検出した場合、有効なスクリプトプラグインとするステップと、
ローガルに前記バージョン番号対応するスクリプトプラグインが記憶されていることを検出していない場合、サーバ側から対応する有効なスクリプトプラグインをダウンロードするステップと、を含むことができる。
【００５２】
前記記録媒体の中に格納されているモジュールが前記機器に実行される場合、サーバ側から対応する有効なスクリプトプラグインをダウンロードした後に、
前記設定情報から前記スクリプトプラグインの第１ダイジェストアルゴリズム値を取得するステップと、
ダウンロード済みの前記スクリプトプラグインの第２ダイジェストアルゴリズム値を算出するステップと、
前記第１ダイジェストアルゴリズム値と前記第２ダイジェストアルゴリズム値とを比較することにより、ダウンロードされた前記スクリプトプラグインの有効性を検証するステップと、をさらに含むことができる。
【００５３】
当業者は以上の実施形態についての説明により次のことを明確に理解することができる。本発明がソフトウェア及び必要な汎用ハードウェアにより実現することができ、勿論、ハードウェアにより実現することもできるが、多くの場合に、前者の実施形態がより好適である。このような理解を踏まえて、本発明の解決手段が実質的に又は従来技術に対して貢献している部分がソフトウェア製品の態様で実現することができる。該コンピュータソフトウェア製品は、コンピュータ読み取り可能な記録媒体、例えばコンピュータのフロッピーディスク、読み出し専用メモリ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＲＯＭ）、ランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＲＡＭ）、フラッシュ（ＦＬＡＳＨ）、ハードディスクや光ディスク等に格納することができる。該コンピュータソフトウェア製品には、コンピュータ関連機器（パソコン、サーバ、又はネットワーク機器等が挙げられる）に本発明の各実施例に係る方法を実行させる複数の命令を含む。
【００５４】
注意されたいのは、上記アプリケーションプログラム修復装置に係る実施例において、各ユニット及びモジュールが機能ロジックによって分割されたものであるに過ぎず、前記の分割を制限するものではなく、対応する機能を実現することができれば足り、また、各機能ユニットの具体の名称は、互いに区別するためのものに過ぎず、本発明の保護範囲を制限するものではない。
【００５５】
以上に述べたものは、本発明の具体的な実施形態に過ぎず、本発明の技術的範囲を制限するものではなく、本発明が公開した技術範囲内に当業者が容易に変更または置換えるものについては、本発明の技術的範囲内に含まれることを理解されるべきである。よって、本発明の技術的範囲は、特許の請求の範囲に記載された内容を基準とする。
【図１】
0006458133.tif 000002
【図２】
0006458133.tif 000003
【図３】
0006458133.tif 000004
【図４】
0006458133.tif 000005
【図５】
0006458133.tif 000006