次の方法で共有


推移的コンポーネントの使用

推移的コンポーネントの一般的な用途は、システムのアップグレード中に再インストールする製品を準備することです。 インストール パッケージの作成者は、システムのアップグレード中にスワップアウトする必要があるコンポーネントを、推移的属性を持つものとして指定します。 ユーザーが後でシステムをアップグレードする場合、製品を再インストールする必要があります。 この再インストールでは、インストーラーは製品全体をインストールせずに、以前のコンポーネントを削除し、新しいコンポーネントをインストールします。

インストールパッケージに2つの推移的コンポーネントを含めるには

  1. 両方の推移的コンポーネントをインストール パッケージに含めます。

  2. 通常のコンポーネントと同じように、両方の推移的コンポーネントを コンポーネント テーブル に作成します。 各推移的コンポーネントには、ComponentId 列に指定された独自の一意の GUID が必要です。

  3. 各推移的コンポーネントのコンポーネント テーブルの属性列に msidbComponentAttributesTransitive ビットを含めます。 このビットが設定されている場合、インストーラーは再インストール時に条件列のステートメントの値を再評価します。

    値が以前は False で True に変更された場合、インストーラーはコンポーネントをインストールします。

    値が以前は True で False に変更された場合、コンポーネントにクライアントとして他の製品があっても、インストーラーはコンポーネントを削除します。

    Note

    推移ビットが設定されていない限り、製品のその後のメンテナンス インストールで条件ステートメントが False と評価された場合でも、コンポーネントはインストールされると有効なままになります。 条件はコンピュータの状態のみに基づく必要があります。 ユーザーの状態やコマンド ラインで設定されたプロパティに基づく条件では使用しないでください。異なるユーザーが使用するたびにインストーラーで製品の再インストールが必要になる可能性があります。

     

  4. 最初の推移コンポーネントの条件が False に変わると、2 番目の推移コンポーネントの条件が True に変わるように、制御テーブルの条件フィールドに補完的な条件式を入力します。 その結果、アプリケーションを再インストールすると、最初のコンポーネントが削除され、2 番目のコンポーネントがインストールされます。

推移的なコンポーネントを切り替えるには、製品を再インストールする必要があります。 したがって、パッケージ作成者は、製品を再インストールし、 REINSTALLMODE プロパティのモードを設定するための方法をユーザーに提供する必要があります。 再インストールをトリガーする方法は基本的に 3 つあります。

  • 完全な UI を使用するパッケージを作成して、ユーザー インターフェイスを介して再インストールを実行および構成します。
  • msiexec /f を使用してコマンド ラインから再インストールを実行し、 /fコマンド ライン オプションのリストからモードを選択します。
  • アプリケーションで MsiReInstallProduct または MsiReInstallFeature を呼び出すようにします。

このビットは、コンピュータの状態に基づく条件でのみ使用する必要があります。 ユーザーの状態やコマンド ラインで設定されたプロパティに基づく条件では使用しないでください。異なるユーザーが使用するたびにインストーラーで製品の再インストールが必要になる可能性があります。

Note

コンポーネントの属性列の推移ビットが設定されていない限り、製品のその後のメンテナンス インストールで条件列の条件ステートメントが False と評価された場合でも、コンポーネントはインストール後は有効なままになります。

ほとんどの場合、アプリケーションに推移的なコンポーネントが含まれている場合、Windows インストーラーでは、アプリケーションを修復またはアップグレードするためにアプリケーションのソースが必要になります。 このような場合、元の機器製造元から出荷されたシステム復元 CD-ROM は機能しないため、アプリケーションの実際のインストール ソースを提供する必要があります。