場合によっては、「アプリケーションをコンポーネント に編成し、コンポーネント コード を変更するで説明されているように、作成者はコンポーネントを作成するための規則を破る必要があると判断する場合があります。 作成者は、これを行うことによる可能性のある結果を認識する必要があり、それ以外の場合は、ユーザーのシステム上の他のアプリケーションやコンポーネントに損害を与える可能性があるコンポーネントがインストールされないことを保証する必要があります。
次の一覧では、作成者が推奨されるコンポーネントルールと考えられる結果を破る方法について説明します。
作成者は、コンポーネント コードを変更せずに、コンポーネントにリソースを追加します。
- 古いコンポーネントと共にインストールされた製品には、インストール データベースに追加されたリソースに関する情報はありません。
- 追加されたリソースを含む新しい製品と古い製品の両方が同じコンピューターにインストールされている場合は、新しい製品が最初にアンインストールされた場合、リソースを残すことができます。
- リソースが追加されていない古い製品では、新しいバージョンのコンポーネントを修復できません。 古い製品を再インストールしても、追加されたリソースは復元されません。
作成者は、コンポーネント コードを変更せずに、コンポーネントからリソースを削除します。
- 新しいコンポーネントと共にインストールされた製品には、インストール データベース内の削除されたリソースに関する情報はありません。
- リソース情報を持つ古い製品と新しい製品の両方が同じコンピューターにインストールされている場合は、古い製品が最初にアンインストールされた場合、リソースを取り残すことができます。
- 削除されたリソースを含む新しい製品は、古いバージョンの製品を修復できません。 新しい製品を再インストールしても、削除されたリソースは復元されません。
作成者には、コンポーネント コードを変更せずに以前のバージョンと互換性のないファイルが含まれています。
コンポーネント コードを変更せずに互換性のないファイルがコンポーネントに含まれている場合、既定のファイル バージョン管理 、インストーラーによって元のファイルが、より新しい互換性のないファイルで上書きされます。 これにより、元のファイルを必要とする古い製品が破損する可能性があります。 また、コンポーネントのキー パス ファイルのバージョンによってコンポーネントのバージョンが決定されるため、インストーラーが古い製品を修復できない場合もあります。 新しいバージョンのキー パス ファイルが既にインストールされている場合、インストーラーは古いバージョンのコンポーネントをインストールしません。 詳細については、「ファイルのバージョン管理規則」を参照してください。 この場合、古い製品を再インストールする前に、新しい製品を削除する必要があります。
- 既定のファイルバージョン管理 により、インストーラーは元のファイルを、より新しい互換性のないファイルで上書きします。
- 元のファイルを必要とする古い製品が破損しています。
- また、コンポーネントのキー パス ファイルのバージョンによってコンポーネントのバージョンが決定されるため、インストーラーが古い製品を修復できない場合もあります。 新しいバージョンのキー パス ファイルが既にインストールされている場合、インストーラーは古いバージョンのコンポーネントをインストールしません。 詳細については、「ファイルのバージョン管理規則」を参照してください。 この場合、古い製品を再インストールする前に、新しい製品を削除する必要があります。
作成者は、2 つの異なるコンポーネントに同じリソースを含みます。
2 つのコンポーネントに同じ名前と場所のリソースがあり、両方のコンポーネントが同じフォルダーにインストールされている場合、いずれかのコンポーネントを削除すると共通リソースが削除され、残りのコンポーネントが破損します。
- いずれかのコンポーネントをアンインストールすると、リソースが削除され、他のコンポーネントが中断されます。
- コンポーネント参照カウントメカニズムが破損しています。