推移的コンポーネントを使用する
推移的コンポーネントの一般的な用途は、システムのアップグレード中に再インストールする製品を準備することです。 インストール パッケージの作成者は、システムのアップグレードの間にスワップ アウトする必要があるコンポーネントを、推移的属性を持つものとして指定します。 ユーザーが後でシステムをアップグレードするときは、製品を再インストールする必要があります。 この再インストール時に、インストーラーは、製品全体をインストールするのではなく、前のコンポーネントを削除して、後のコンポーネントをインストールします。
インストール パッケージに 2 つの推移的コンポーネントを含めるには
両方の推移的コンポーネントをインストール パッケージに含めます。
標準コンポーネントと同じ Component テーブルで両方の推移的コンポーネントを指定します。 各推移的コンポーネントの ComponentId 列では、独自の一意の GUID を指定する必要があります。
Component テーブルで、各推移的コンポーネントの Attributes 列に msidbComponentAttributesTransitive ビットを含めます。 このビットが設定されていると、インストーラーは、再インストール時に Condition 列のステートメントの値を再評価します。
以前は False であった値が True に変わった場合、インストーラーはそのコンポーネントをインストールします。
以前は True であった値が False に変わった場合は、そのコンポーネントにクライアントとして他の製品が含まれている場合でも、インストーラーはそのコンポーネントを削除します。
Note
推移的ビットが設定されていないコンポーネントは、いったんインストールされると、その後の製品のメンテナンス インストールで条件ステートメントが False に評価された場合でも、有効のままになります。 条件は、コンピューターの状態にのみ基づいている必要があります。 ユーザーの状態またはコマンド ラインで設定されたプロパティに基づく条件では使わないでください。そのようにすると、異なるユーザーが使うたびに、インストーラーが製品の再インストールを要求する可能性があります。
1 番目の推移的コンポーネントの条件が False に変わったら、2 番目の推移的コンポーネントの条件が True に変わるように、相補的な条件式を Control テーブルの Condition フィールドに入力します。 このようにすると、アプリケーションの再インストール時に、1 番目のコンポーネントが削除されて、2 番目のコンポーネントがインストールされます。
推移的コンポーネントを切り替えるには、製品の再インストールが必要です。 したがって、パッケージの作成者は、製品を再インストールしたり、REINSTALLMODE プロパティのモードを設定したりするための方法を、ユーザーに提供する必要があります。 再インストールをトリガーするには、基本的に 3 つの方法があります。
- "完全 UI" を使うパッケージを作成することで、ユーザー インターフェイスから再インストールを実行して構成します。
- msiexec /f を使ってコマンド ラインから再インストールを実行し、/fコマンド ライン オプションの一覧からモードを選びます。
- アプリケーションで MsiReInstallProduct または MsiReInstallFeature を呼び出します。
ビットは、コンピューターの状態に基づく条件でのみ使う必要があります。 ユーザーの状態またはコマンド ラインで設定されたプロパティに基づく条件では使わないでください。そのようにすると、異なるユーザーが使うたびに、インストーラーが製品の再インストールを要求する可能性があります。
Note
Attributes 列の Transitive ビットが設定されていないコンポーネントは、いったんインストールされると、その後の製品のメンテナンス インストールで Condition 列の条件ステートメントが False と評価された場合でも、有効のままになります。
通常、アプリケーションに推移的コンポーネントが含まれている場合、Windows インストーラーでアプリケーションを修復またはアップグレードするには、アプリケーションのソースが必要です。 このような場合、元の機器製造元から出荷されたシステム復元 CD-ROM は機能せず、アプリケーションの実際のインストール ソースを提供してもらう必要があります。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示