古いパッケージが新しいバージョン上にインストールされないようにする

ユーザーが新しいバージョンを既にインストールしている場合は、メジャー アップグレードをインストールしない Windows インストーラー アップグレード パッケージを作成できます。 このトピックの手順で防止できるのは、メジャー アップグレード パッケージの実行によって発生する可能性があるダウングレードのみです。 この手順は、最初のインストール時のみに実行され、メンテナンス モード (再インストール) では実行されない、FindRelatedProducts アクション に依存します。 マイナー アップグレードは再インストールを使用して実行されるため、この手順を使用して、マイナー アップグレード パッケージによってアプリケーションのダウングレードが試行されるかどうかを判断することはできません。 詳細については、「将来のメジャー アップグレード用のアプリケーションの準備」を参照してください。

古いパッケージが新しいバージョンにインストールされないようにするには

  1. このアップグレードを受け取る資格がある関連製品のグループの UpgradeCode プロパティを、Upgrade テーブルの UpgradeCode 列に入力します。

  2. Upgrade テーブルの Attributes 列に msidbUpgradeAttributesOnlyDetect ビット フラグを入力します。

  3. このパッケージによって提供されるアップグレードのバージョンを、Upgrade テーブルの VersionMin 列に入力します。 VersionMax 列は空にしておきます。

  4. FindRelatedProducts アクションによって設定されるプロパティの名前を、Upgrade テーブルの ActionProperty 列に入力します。

  5. SecureCustomProperties プロパティと、Upgrade テーブルの ActionProperty 列に指定されたプロパティを、Property テーブルに追加します。

  6. カスタム アクションの種類 19 を、InstallExecuteSequence テーブルの FindRelatedProducts アクションの後に追加します。 このアクションのためのレコードを CustomAction テーブルに含め、表示されるテキストを Target 列に入力します。 種類 19 のカスタム アクションがインストーラーに組み込まれるため、書き込むコードはありません。

  7. カスタム アクションの種類 19 を含む InstallExecuteSequence テーブルのレコードの Condition 列に、ActionProperty の名前を入力します。 これによって、新しいバージョンが既にインストールされていることを Upgrade テーブルが検出した場合のみカスタム アクションが実行されるように条件設定されます。

    たとえば、関連製品のグループをバージョン 3.0 にアップグレードする Windows インストーラー パッケージでは、UpgradeCustomActionInstallExecuteSequenceProperty の各テーブルに次のレコードが含まれることがあります。 グループの関連製品すべての UpgradeCode は同じですが、3.0 よりも新しいバージョンが既にコンピューターにインストールされている場合、インストーラーによってこのアップグレード パッケージはインストールされません。 この場合、インストーラーによってエラー メッセージが表示され、インストールが失敗します。 バージョン 3.0 アップグレード パッケージは、バージョン 1.0 および 2.0 に対してインストールされます。

    Upgrade テーブル

    UpgradeCode VersionMin VersionMax Language 属性 [削除] ActionProperty
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 3.0   msidbUpgradeAttributesOnlyDetect NEWPRODUCTFOUND
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 1.0 3.0 msidbUpgradeAttributesVersionMinInclusive UPGRADEFOUND

     

    CustomAction テーブル

    アクション Type source 移行先
    CA1 19 A higher upgrade is already installed.

     

    InstallExecuteSequence Table

    アクション 条件 シーケンス
    FindRelatedProducts 200
    CA1 NEWPRODUCTFOUND 201

     

    Property テーブル

    プロパティ
    SecureCustomProperties NEWPRODUCTFOUND;UPGRADEFOUND