コンポーネント ルールを破ると、どうなりますか?

アプリケーションをコンポーネントに整理する」や「コンポーネント コードの変更」で説明されているように、特定の状況では、作成者がコンポーネントを作成するためのルールを破る必要があると判断することがあります。 作成者は、これを行うことで生じる可能性のある結果を認識する必要があり、場合によっては、ユーザーのシステム上の他のアプリケーションやコンポーネントに損害を与えるコンポーネントが絶対にインストールされないように保証する必要があります。

次の一覧は、どのような場合に作成者が推奨されるコンポーネント ルールを破ることになるのかと、考えられる結果について説明したものです。

作成者が、コンポーネント コードを変更せずにコンポーネントにリソースを追加する。

  • 古いコンポーネントと共にインストールされた製品には、インストール データベースに追加されたリソースに関する情報がありません。
  • リソースが追加されている新しい製品と、古い製品の両方が同じコンピューターにインストールされている場合、新しい製品を先にアンインストールすると、リソースが残る可能性があります。
  • リソースが追加されていない古い製品は、新しいバージョンのコンポーネントを修復できません。 古い製品を再インストールしても、追加されたリソースは復元されません。

作成者が、コンポーネント コードを変更せずにコンポーネントからリソースを削除する。

  • 新しいコンポーネントと共にインストールされた製品には、インストール データベースで削除されたリソースに関する情報がありません。
  • リソース情報を含む古い製品と、新しい製品の両方が同じコンピューターにインストールされている場合、古い製品を先にアンインストールすると、リソースが残る可能性があります。
  • 削除されたリソースを含む新しい製品は、古いバージョンの製品を修復できません。 新しい製品を再インストールしても、削除されたリソースは復元されません。

作成者が、コンポーネント コードを変更せずに以前のバージョンと互換性のないファイルを含めている。

コンポーネント コードを変更せずに互換性のないファイルがコンポーネントに含まれている場合、既定のファイルのバージョン管理により、インストーラーが元のファイルを最新の互換性のないファイルで上書きします。 これにより、元のファイルを必要とする古い製品が破損する可能性があります。 また、コンポーネントのキー パス ファイルのバージョンによってコンポーネントのバージョンが決まるため、インストーラーが古い製品を修復できない場合もあります。 新しいバージョンのキー パス ファイルが既にインストールされている場合、インストーラーは古いバージョンのコンポーネントをインストールしません。 詳細については、「ファイルのバージョン管理規則」を参照してください。 この場合、古い製品を再インストールする前に、新しい製品を削除する必要があります。

  • 既定のファイルのバージョン管理により、インストーラーが元のファイルを最新の互換性のないファイルで上書きします。
  • 元のファイルを必要とする古い製品は破損します。
  • また、コンポーネントのキー パス ファイルのバージョンによってコンポーネントのバージョンが決まるため、インストーラーが古い製品を修復できない場合もあります。 新しいバージョンのキー パス ファイルが既にインストールされている場合、インストーラーは古いバージョンのコンポーネントをインストールしません。 詳細については、「ファイルのバージョン管理規則」を参照してください。 この場合、古い製品を再インストールする前に、新しい製品を削除する必要があります。

作成者が、2 つの異なるコンポーネントに同じリソースを含めている。

2 つのコンポーネントに名前と場所が同じのリソースがあり、両方のコンポーネントが同じフォルダーにインストールされている場合、どちらかのコンポーネントを削除すると共通リソースが削除され、残りのコンポーネントが破損します。

  • どちらかのコンポーネントをアンインストールすると、リソースが削除され、もう一方のコンポーネントが破損します。
  • コンポーネント参照カウント メカニズムが破損します。