<uninstallSteps> 要素は <uninstallList> 要素の子であり、当該コンポーネントをアンインストールするために実行される一連のステップを示します。<uninstall> ステップによって当該コンポーネントがアンインストールされる場合、この要素に挙げられるステップが順に実行されます。単純コンポーネントの <uninstallSteps> 要素は <undeployResource> ステップを含むことが許可されていますが、これは必須ではありません。複合コンポーネントの <uninstallSteps> 要素は、参照先コンポーネントをアンインストールするため、1 つ以上の <uninstall> ステップが含むことができますが、これらのステップは必須ではありません。
<uninstallSteps> 要素の子は、オプションの <paramList> 要素とそれに続く本体から構成されます。この本体は、オプションのローカル <varList> 要素と、それに続くオプションの <dependantCleanup> ブロックおよびゼロ個以上の「共通」ステップまたは「コンポーネントのアンインストール専用」ステップから構成されます。アンインストールブロックが抽象と宣言されている場合、本体は含められません。
次の例に、サンプル <uninstallSteps> 要素のコンテンツを示します。</paramList> 以降が本体を定義しています。
<uninstallSteps name="default"> <paramList> <param name="param1"/> </paramList> <varList> <var name="var1" default="my var 1"/> </varList> <dependantCleanup> <uninstall blockName="default"> <allDependants name="child2parent"/> </unisntall> </dependantCleanup> <undeployResource/> </uninstallSteps>
デフォルトでは、派生コンポーネントはそのベースコンポーネントの、アクセス可能なすべてのアンインストールブロックを継承します。アンインストールブロックをオーバーライドするセマンティクスは、インストールブロックをオーバーライドするセマンティクスと同じです。
<uninstallSteps> 要素には次の属性があります。
access – accessEnum 型のオプション属性で、アンインストールブロックのアクセシビリティを指定します。次の値が使用できます。
PUBLIC – アクセスは制限されません。これがデフォルトです。
PROTECTED – アクセスは同じパス内の派生コンポーネントとエンティティに制限されます。
PATH – アクセスは同じパス内のエンティティに制限されます。
PRIVATE – アクセスは当該コンポーネントに制限されます。
コンポーネントから直接実行できるのは PUBLIC ブロックだけです。
modifier – modifierEnum 型のオプション属性で、アンインストールブロックのオーバーライド要件を指定します。次の値が使用できます。
ABSTRACT – ブロックに本体を含めることはできません。 本体は、非抽象派生コンポーネントによって指定する必要があるためです。アンインストールブロックを抽象と宣言できるのは、コンポーネントも抽象と宣言されている場合だけです。抽象ブロックは専用にはできません。非抽象ブロックの場合、本体を宣言する必要があります。
FINAL – アンインストールブロックを派生コンポーネントによってオーバーライドすることはできません。
この属性を指定しない場合、派生コンポーネントはブロックをオーバーライドするかどうかを選択できます。
name – entityName 型の必須属性で、アンインストールブロックの名前。この名前は、包含している <uninstallList> 内のすべてのアンインストールブロックの中で一意である必要があります。
<dependantCleanup> 要素は <uninstallSteps> 要素の子です。<dependantCleanup> 要素は、呼び出し側コンポーネントに現在依存しているコンポーネントを削除するために実行される一連のステップを指定します。この要素に属性はなく、包含するアンインストールブロックのスコープ内で許可される任意の数のステップを含むことができます。
この要素を含めると、依存コンポーネントのチェックはブロックのコンテンツの実行が完了するまで延期されます。ブロックの実行が完了したあとも依存コンポーネントが存在する場合は、アンインストールが失敗し、コンポーネントはインストールされたままとなります。依存コンポーネントが残っていない場合、アンインストールが継続されて残りのステップが行われます。
包含コンポーネントが対象設定可能である場合、ブロックを使用して、ホストを対象とする関連付けられたコンポーネントにインストールされたコンポーネントを削除できます。このブロックが完了したあとも、関連付けられているホスト上にインストール済みコンポーネントが残っている場合、アンインストールは失敗します。
アンインストールブロックに <dependantCleanup> ブロックを含めないと、依存コンポーネントが存在する場合、アンインストールブロックはただちに停止します。
<dependantCleanup> ブロックは、依存コンポーネントをまとめてアンインストールする目的で、し<allDependants> ターゲッターと併用されることもあります。