付録 A コンポーネント変更の互換性
この付録では、コンポーネントに加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。
コンポーネントには次の変更を加えることができます。
コンポーネントに加えることができる変更
<component> 要素の変更
次の表に、<component> 要素に加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。
変更の種類
|
インストール互換
|
呼び出し互換
|
非最終から最終
|
なし
|
あり
|
最終から非最終
|
あり
|
あり
|
非抽象から抽象
|
なし
|
あり
|
抽象から非抽象
|
あり
|
あり
|
アクセス制限の強化
|
なし
|
なし
|
アクセス制限の緩和
|
あり
|
あり
|
description、label、softwareVendor、または author 属性の値の変更
|
なし [属性の値は、インストールされた変数設定レコードに格納されます。]
|
あり
|
name または path 属性の値の変更 [この変更は、完全にバージョンツリーの変更から構成され、システムサービスが更新される状況でのみ実施可能です。この場合、新しいコンポーネントは元のコンポーネントのインスタンスである必要があります。]
|
なし
|
あり
|
単純コンポーネントから複合コンポーネントへの変更
|
なし
|
なし
|
複合コンポーネントから単純コンポーネントへの変更
|
なし
|
なし
|
platform 属性の変更
次の表に、<platform> 要素に加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。
変更の種類
|
インストール互換
|
呼び出し互換
|
より一般的なプラットフォームへの変更
|
あり
|
あり
|
より固有のプラットフォームへの変更
|
なし
|
あり
|
関係性のないプラットフォーム
|
なし
|
あり
|
プラットフォーム X が Y の子孫の場合、プラットフォーム X は Y より固有となります。X が Y の祖先の場合、プラットフォーム X は Y より一般的になります。
limitToHostSet 属性の変更
次の表に、<limitToHostSet> 要素に加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。
変更の種類
|
インストール互換
|
呼び出し互換
|
limitToHostSet 属性へのすべての変更
|
なし
|
あり
|
platform 属性とは異なり、limitToHostSet は明示的な制御が存在しない一般的なユーザー指定のホストセットを指定します。ホストセットのメンバーシップはいつでも変更される可能性があるため、固有性の高いホストセットまたは固有性の低いホストセットは指定できません。
<extends> 要素の変更
次の表に、<extends> 要素に加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。
変更の種類
|
インストール互換
|
呼び出し互換
|
オリジナルコンポーネントの新しいベースコンポーネントインスタンス
|
なし
|
あり
|
新しいコンポーネントのオリジナルベースコンポーネントインスタンス
|
なし
|
なし
|
オリジナルコンポーネントと無関係な新しいベースコンポーネント
|
なし
|
なし
|
オリジナルコンポーネントとインストール互換である新しいベースコンポーネント
|
あり
|
あり
|
オリジナルコンポーネントと呼び出し互換である新しいベースコンポーネント
|
なし
|
あり
|
変数への変更
次の表に、変数に加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。
変更の種類
|
インストール互換
|
呼び出し互換
|
新しい変数の追加
|
あり [より制限の厳しいアクセスモードを使用して、すでに変数を定義している派生コンポーネントが存在している場合があります。このような場合は、変更により発生コンポーネントが無効になります。コンポーネント型に新しい非抽象変数を追加できるのは、同じ名前を持つ変数をすでに定義している派生コンポーネントが存在せず、かつコンポーネントのすべてのインストール済みインスタンスに対して変数のデフォルト値を再計算できる場合のみです。]
|
あり
|
非専用変数の削除または名前変更
|
なし
|
なし
|
専用変数の削除または名前変更
|
あり
|
あり
|
最終変数のデフォルト値の変更
|
なし
|
あり
|
非最終変数のデフォルト値の変更
|
あり [インストール済みの値は、新しいデフォルト値をオーバーライドすると見なすことができるため、再インストールは必要ありません。]
|
あり
|
prompt 属性の変更
|
あり
|
あり
|
非最終から最終
|
なし
|
あり
|
最終から非最終
|
あり
|
あり
|
非抽象から抽象
|
なし
|
あり
|
抽象から非抽象
|
あり
|
あり
|
アクセス制限の強化
|
なし
|
なし
|
アクセス制限の緩和
|
あり
|
あり
|
<targetRef> 要素の変更
次の表に、<targetRef> 要素に加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。
変更の種類
|
インストール互換
|
呼び出し互換
|
<targetRef> 要素の削除
|
なし
|
なし
|
<targetRef> 要素の追加
|
なし
|
あり
|
hostName 属性の変更
|
あり [既存のインストール済みコンポーネントに関連付けられたホストの属性は、このような変更の結果としては更新されません。]
|
あり
|
typeName 属性の変更
|
なし
|
なし
|
<agent> 子要素の追加または削除
|
なし
|
なし
|
<agent> 子要素の connection 属性の変更
|
あり
|
あり
|
<agent> 子要素の ipAddr 属性の変更
|
あり
|
あり
|
<agent> 子要素の port 属性の変更
|
あり
|
あり
|
<agent> 子要素の params 属性の変更
|
あり
|
あり
|
<componentRefList> 要素の変更
次の表に、<componentRefList> 要素に加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。
変更の種類
|
インストール互換
|
呼び出し互換
|
非最終から最終
|
なし
|
あり
|
最終から非最終
|
あり
|
あり
|
オリジナルコンポーネントの新しい型インスタンス
|
なし
|
あり
|
新しいコンポーネントのオリジナルの型インスタンス
|
なし
|
なし
|
オリジナルと関連性のない新しい型
|
なし
|
なし
|
オリジナルとインストール互換である新しい型
|
あり
|
あり
|
オリジナルと呼び出し互換である新しい型
|
なし
|
あり
|
<componentRef> 要素の変更
次の表に、<componentRef> 要素に加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。
変更の種類
|
インストール互換
|
呼び出し互換
|
非最終から最終
|
あり [より制限の厳しいアクセスモードを使用するか、互換性のない差異を使用して、すでにコンポーネント参照を定義している派生コンポーネントが存在している場合があります。このような場合は、変更により派生コンポーネントが無効になります。新しい非抽象コンポーネント参照をコンポーネント型に追加できるのは、同じ名前を持つコンポーネント参照をすでに定義している派生コンポーネントが存在しない場合のみです。]
|
あり
|
最終から非最終
|
あり
|
あり
|
非抽象から抽象
|
なし
|
あり
|
抽象から非抽象
|
あり
|
あり
|
installMode 属性の変更
|
なし
|
なし
|
新しいコンポーネント参照の追加
|
あり、 [入れ子コンポーネントの追加は、技術上は可能です。既存のインストールは、入れ子コンポーネントを使用せずにインストールされたかのように扱われます。インストールに依存する機能が破損する可能性があるため、入れ子コンポーネントを使用せずにコンポーネントが安全に動作する場合にのみ、この変更を行うことをお勧めします。上記の条件が満たされない場合、この変更は、インストール互換ではない変更として扱う必要があります。]
|
あり
|
入れ子にされた <componentRef> の削除または名前変更
|
なし
|
なし
|
最上位 <componentRef> の削除または名前変更
|
なし
|
なし
|
入れ子コンポーネントの <argList> からの、引数の追加、変更、または削除
|
なし
|
あり
|
最上位コンポーネントの <argList> からの、引数の追加、変更、または削除
|
あり [当該コンポーネントが、最上位コンポーネントを実際にインストールしたコンポーネントであるかどうかは判別できません。そのため、当該コンポーネントは、<argList> 値に対応する変数を持っている最上位コンポーネントに依存することはできません。]
|
あり
|
オリジナルコンポーネントの新しい型インスタンス
|
なし
|
あり
|
新しいコンポーネントのオリジナルの型インスタンス
|
なし
|
なし
|
オリジナルと関連性のない新しい型
|
なし
|
なし
|
オリジナルとインストール互換である新しい型
|
あり
|
あり
|
オリジナルと呼び出し互換である新しい型
|
なし
|
あり
|
オリジナルコンポーネントの新しい入れ子コンポーネントインスタンス
|
なし
|
あり
|
新しいコンポーネントのオリジナルの入れ子コンポーネントインスタンス
|
なし
|
なし
|
オリジナルと関係のない新しい入れ子コンポーネント
|
なし
|
なし
|
オリジナルとインストール互換の新しい入れ子コンポーネント
|
あり
|
あり
|
オリジナルと呼び出し互換の新しい入れ子コンポーネント
|
なし
|
あり
|
リソースの変更
次の表に、リソースに加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。
変更の種類
|
インストール互換
|
呼び出し互換
|
非最終から最終
|
なし
|
あり
|
最終から非最終
|
あり
|
あり
|
非抽象から抽象
|
なし
|
あり
|
抽象から非抽象
|
あり
|
あり
|
installPath、name、group、または user 属性の変更
|
なし
|
あり
|
rsrcName または rsrcVersion 属性の変更
|
なし
|
あり
|
<install>、<control>、および <uninstall> ブロックの変更
次の表に、<install>、<control>、または <uninstall> ブロックに加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。
変更の種類
|
インストール互換
|
呼び出し互換
|
非最終から最終
|
あり [より制限の厳しいアクセスモードを使用するか、互換性のない差異を使用して、すでにブロックを定義している派生コンポーネントが存在している場合があります。このような場合は、変更により派生コンポーネントが無効になります。新しい非抽象ブロックをコンポーネント型に追加できるのは、同じ名前を持つブロックをすでに定義している派生コンポーネントが存在しない場合です。]
|
あり
|
最終から非最終
|
あり
|
あり
|
非抽象から抽象
|
なし
|
あり
|
抽象から非抽象
|
あり
|
あり
|
アクセス制限の強化
|
なし
|
なし
|
アクセス制限の緩和
|
あり
|
あり
|
新しい非専用ブロックの追加
|
あり
|
あり
|
新しい専用ブロックの追加
|
あり
|
あり
|
非専用ブロックの削除または名前変更
|
なし
|
なし
|
専用ブロックの削除または名前変更
|
あり
|
あり
|
ブロック本体の変更
|
あり [当該ブロックの以前の実行のプラン実行履歴は更新されません。そのため、以前の実行は新しいブロックコンテンツと直接一致しない場合があります。]
|
あり
|
ブロックのローカル変数の追加、変更、または削除
|
あり
|
あり
|
専用ブロックのパラメータの追加、変更、または削除
|
あり
|
あり
|
必須パラメータの非専用ブロックへの追加
|
なし
|
なし
|
オプションパラメータの追加
|
あり
|
あり
|
オプション/必須パラメータの削除
|
あり [呼び出し元から渡される余分な引数は無視されるため、この変更が可能になります。]
|
あり
|
オプションのパラメータの名前変更
|
あり [この変更は、オプションのパラメータを削除して追加することと同じです。ただし、当初渡されたパラメータ値が無視され、デフォルト値に置き換えられるため、呼び出し元は想定外の結果を受け取る可能性があります。]
|
あり
|
非専用ブロックでの必須パラメータの名前変更
|
なし
|
なし
|
非専用ブロックでのパラメータのオプションから必須への変更
|
なし
|
なし
|
パラメータの必須からオプションへの変更
|
あり
|
あり
|
パラメータの displayMode 属性の変更
|
あり
|
あり
|
パラメータの prompt 属性の変更
|
あり
|
あり
|
<snapshot> ブロックへの変更
次の表に、<snapshot> 要素の、<prepare>、<cleanup>、または <capture> 子要素に加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。<prepare>、<capture>、および <cleanup> ブロックを処理する場合以外、<snapshot> ブロックの互換性マトリックスは、基本的にほかのブロックのマトリックスと同じです。
変更の種類
|
インストール互換
|
呼び出し互換
|
<prepare>/<cleanup> ブロックの追加、変更、または削除
|
あり
|
あり
|
<capture> 手順の追加、変更、または削除
|
あり [snapshot <capture> ブロックのコンテンツは 1 回しか評価されません。初期インストール中にスナップショットが取られる際に、評価が行われます。比較時には、比較を行うために、格納されたキャプチャコンテンツが使用され、<capture> ブロックに発生した可能性のある変更は無視されます。そのため、既存のスナップショットはこのような変更の影響を受けません。変更の目的が既存のスナップショットのコンテンツに影響を与えることである場合、この変更は、インストール互換ではない変更としてモデル化される必要があります。]
|
あり
|
<diff> 要素の <ignore> 子への変更
次の表に、<diff> 要素の <ignore> 子要素に加えることができる変更と、各変更がインストール互換/呼び出し互換であるかどうかを示します。
変更の種類
|
インストール互換
|
呼び出し互換
|
<ignore> 要素の追加、変更、または削除
|
あり
|
あり
|
比較を実行しても既存のスナップショットの状態に影響しない場合にのみ、<ignore> 要素が考慮されます。