wixでアップデートするバージョンを指定する

ver1.2からはアップデートできるようにし、ver1.1からはアップデートできなくするようにしたい場合、 UpgradeVersionでそのバージョン範囲を指定することで可能です。

<Upgrade Id="UpgradeCode”>
            <UpgradeVersion OnlyDetect="no" Property="OLDFOUND" Minimum="1.2" IncludeMinimum="yes" Maximum="1.3" IncludeMaximum="no" />
            <UpgradeVersion OnlyDetect="yes" Property="NEWERFOUND" Minimum="1.3" IncludeMinimum="yes" />
        </Upgrade>

UpgradeタグのIdにはProductタグで記載したUpgradeCodeを記載します。 このようにすることでPCに同一のUpgradeCodeを持つプロジェクトを検索し、そのバージョンがUpgradeVersionで指定した範囲であれば、OLDFOUNDまたはNEWERFOUNDにそのProductIdが保存されます。 OnlyDetectをnoにするとそのバージョンのプロジェクトはアンインストールするようになります。 その場合RemoveExistingProductsをInstallExecuteSequenceでスケジュールに入れる必要があります。

FindRelatedProductsで他のバージョンがあるかを検索するので、このアクションの後にOLDFOUNDを満たさなければエラーを返すカスタムアクションを追加すれば指定した範囲だけアップデートできます。

NEWERFOUNDのプロパティはこのアップデーターより新しいバージョンがあった場合に値がはいるので、 FindRelatedProductsの後にNEWERFOUNDを満たす場合にエラーを返すカスタムアクションを追加すればダウングレードを防ぐことが出来ます。