このドキュメントは Firefox 1.5 (XULRunner 1.8)以降で使われているバージョン形式のリファレンスです。この形式は拡張マネージャ、ソフトウェアの更新、およびプラットフォームのその他の部分で使われています。 最低限、以下の場所のバージョンはこの形式に従っていなければなりません。
- install および update manifests にあるAddon および target applicationのバージョン
- 設定値
app.extensions.version
,extensions.lastAppVersion
- nsIXULAppInfoが返すバージョン
- XULRunnerアプリケーションの
application.ini
- chrome manifestsにあるappversion flag.
nsIVersionComparator をあなたのアプリケーションからバージョンの比較に使うことができます。
Firefox/Thunderbird 1.0 で使われていた古いバージョン形式については下の 古いバージョン形式 を参照してください。
バージョン形式
バージョン文字列 はドットで区切られた1つ以上のバージョンパートから成ります。
それぞれの バージョンパート はそれ自身が <数値-a><文字列-b><数値-c><文字列-d>
という4つのパートの並びに解析されます。それぞれのパートは任意です。 数値は10進整数で (マイナスかもしれない)、文字列は ASCII です。
有効なバージョンパートのいくつかの例:
0
(as in1.0
):<数値-a>=0
5a
(as in1.5a
):<数値-a>=5
,<文字列-b>=a
5pre4
(as in3.5pre4
):<数値-a>=5
,<文字列-b>=pre
,<数値-c>=4
*
(as in1.0.*
):<string-b>=*
可読性と後方互換性のために、以下のような特別な解析ルールが適用されます。
- バージョンパートがアスタリスク一つならば、 無限に大きい数字として解釈される:
1.5.0.*
は1.5.0.(無限)
という意味です。 - 文字列-b がプラス記号ならば, 数値-a は Firefox 1.0.x のバージョンフォーマットとの互換性のため1増加される:
1.0+
は1.1pre
と同じです。
バージョンパートを文字列と数値の並びに分ける原理は、バージョンパートを比較する際、数値部分は数値として比較され(例: '1.0pre1' < '1.0pre10')、文字列部分はバイト単位で比較されるというものです。 バージョンがどの様にして比較されるかについての詳細は次のセクションを参照してください。
バージョンの比較
二つのバージョン文字列が比較される時、 左のバージョンパートから順に右に向かって比較されます。 空であったり欠けているバージョンパートは 0
と同義です。
あるポイントで、一方のバージョン文字列のバージョンパートが、もう一方のバージョン文字列の対応するバージョンパートよりも大きければ、最初のバージョン文字列は他方のバージョン文字列よりも大きいということになります。
そうでなければ、バージョン文字列は同一です。欠落しているバージョンパートは 0
であるのと同じように扱われるので、次のバージョン文字列は全て同じであるということに注意してください。
1
、 1.0
、 1.0.
、 1.0.0
、 そして 1.0...
も
バージョンパートの比較
バージョンパートも同様に左から右に比較されます。 パート A と C は数値として比較され、パート B と D はバイト単位で比較されます。文字列が存在する場合は存在しない場合よりも必ず小さくなります。 (1.6a
は 1.6
よりも小さい)。
例
1.-1 < 1 == 1. == 1.0 == 1.0.0 < 1.1a < 1.1aa < 1.1ab < 1.1b < 1.1c < 1.1whatever < 1.1pre == 1.1pre0 == 1.0+ < 1.1pre1a < 1.1pre1aa < 1.1pre1b < 1.1pre1 < 1.1pre2 < 1.1pre10 < 1.1.-1 < 1.1 == 1.1.0 == 1.1.00 < 1.10 < 1.* < 1.*.1 < 2.0
古いバージョン形式
Firefox/Thunderbird 1.0 では、次のようなより単純なバージョン形式を用いていました。
major[.minor[.release[.build]]][+]
[..]
は任意の要素であることを意味しており, major
, minor
, release
, build
はすべて正の整数です。