Mozilla L10N フォーラム一覧 Mozilla 製品 とその関連ソフトの日本語化に関するフォーラムです。
フィードバック方法や変更履歴などは Github をご覧ください。
 よくある質問  •  検索  •  登録ユーザ一覧  •  グループ   •  登録  •  ユーザ設定  •  ログインして PM を確認  •  ログイン
 拡張のアップデート機能 次のトピックを表示
前のトピックを表示
トピックの新規投稿返信
投稿者 メッセージ
ゲスト






記事 件名: 拡張のアップデート機能     投稿時間: 2004年1月08日(木) 12:00 引用トップに移動

Extensions - MozillaZine Forumsに、Extension Updating Codeなるトピックがあったのでメモ。


Doron wrote:
Mozillaの拡張がそれ自身のアップグレードを行うコードを書いてみました。
http://nexgenmedia.net/nsExtensionUpdater.js にあるクラス (nsExtensionUpdater) がそうです。これで、Mozillaに追加されている拡張の.jarファイルのアップデートが出来ます。ただし反映させるにはMozillaの再起動が必要です。

このコードは、拡張がどこにインストールされていても (profileDir/chromeであろうとozilla/chromeであろうと) .jarファイルの場所を検出するので、正常に機能します。

実行関数はJSのクラスとして記述されているので、UIは自分で記述することが出来ます。実行関数は各状況ごと (エラー発生、既に最新、更新可、更新済み) に呼ばれます。更新可能であるとき実行関数の呼び出しが行われますが、更新するときは true を返すようにします。これにより「更新しますか?」のようなダイアログ (confirm()関数を使って) を利用できます。

最新バージョンのアップデート情報やその.jarファイルの入手場所などの記録には、XMLファイルが利用されます。XMLファイルの場所に関する情報は前述のクラスのコンストラクタに渡されます。XMLの記述例は次のようになります。

Code:

<?xml version="1.0"?>
<extensionUpdateInformation>
  <latestVersion>0.2</latestVersion>
  <location>http://goat.austin.ibm.com:8080/xulbluepages.jar</location>
</extensionUpdateInformation>


コードはまだ少々汚いですが、同趣のものを寡聞にして知らないので公開します。1.5でテストしましたが、FB/TBでも動作するでしょう。

どんな感じで使用するかのちょっとしたサンプルです。

Code:

var updater;
function bluepagesAutoUpdate(){
  updater = new nsExtensionUpdater("http://goat.austin.ibm.com:8080/update.xml", "0.1", "xulbluepages.jar");
  updater.getUpdate(progressFunc);
}

/*
aProgressNum
  -1      An error has occured
   0      No new update available
   1      New update available.  If we are to proceed and install
           the update, return true, else return false.
   2      New update installed
*/

function progressFunc(aProgressNum){

 var rv = true;

 switch (aProgressNum){

   case -1 :
     alert("An Error Has Occured")
     break;

   case 1 :
     // here is where you should ask if the user really wants to install the update
     // return true to do the update, false to not.
     rv = confirm("An update is available.  Do you want to install it?");
     break;

   case 2 :
     alert("Install Successfull")
     break;  }

 return rv;
}


profressFunc関数は各状況で呼び出されますが、基本的に実行の各段階で呼び出されます。


# 雑訳です。誤訳の指摘はコメントしてくださいませ。
指定期間中に書かれた記事を表示:      
トピックの新規投稿返信


 別のフォーラムに移る:   



次のトピックを表示
前のトピックを表示
新規トピックを投稿できます
既存トピックに返信できます
自分の記事を編集できません
自分の記事を削除できません
投票に参加できません


Powered by phpBB © 2001, 2002 phpBB Group (customized by dynamis) :: FI Theme :: All times are GMT +9:00