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

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

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

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

  2. アップグレード テーブルの [属性] 列に msidbUpgradeAttributesOnlyDetect ビット フラグを入力します。

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

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

  5. SecureCustomProperties プロパティと、アップグレード テーブルの ActionProperty 列で指定されたプロパティをプロパティ テーブルに追加します。

  6. InstallExecuteSequence テーブルの FindRelatedProducts アクションの後に、カスタム アクションの種類 19 を追加します。 このアクションの CustomAction テーブル にレコードを含め、[ターゲット] 列に表示するテキストを入力します。 タイプ 19 カスタム アクションはインストーラーに組み込まれているため、記述するコードはありません。

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

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

    アップグレード テーブル

    UpgradeCode VersionMin VersionMax 言語 属性 削除 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 より高いアップグレードが既にインストールされています。

     

    InstallExecuteSequence テーブル

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

     

    プロパティ テーブル

    プロパティ
    SecureCustomProperties NEWPRODUCTFOUND;UPGRADEFOUND