0

メジャー アップグレード (#206 など) を正常にインストールし、(#206) のようなコードを含めました。

<Upgrade Id="$(var.ProductUpgradeCode)">
  <UpgradeVersion Minimum="$(var.ProductVersion)" IncludeMinimum="no" OnlyDetect="yes" Language="1033" Property="NEWPRODUCTFOUND" />
  <UpgradeVersion Minimum="1.0.0.178" IncludeMinimum="yes" Maximum="$(var.ProductVersion)" IncludeMaximum="no" Language="1033" Property="UPGRADEFOUND" />
</Upgrade>

シナリオ: ビルド #177 をインストールしてから、ビルド #206 にアップグレードしました。このダウングレードを防ぎたい #177 のインストールはまだ許可されています。

ビルド #178 以降、メジャー アップグレード用に製品 GUID を変更しましたが、正常に動作しています。これを防ぐ方法を提案してください。ビルドを 177 より下にダウングレードしたくありませんbuild no <= 177

4

1 に答える 1

2

あなたの問題は、バージョンの比較がデフォルトでMSIでどのように行われるかです-1.0.0.123は、たとえば1.0.0.33と同じように扱われます。インストーラーがこれを古いバージョンとして検出するようにリビジョン バージョンを増やすか、回避策を使用する必要があります。

たとえば、カスタム アクションを作成して、まさにこのリビジョン バージョンをチェックし、たとえば InstallValidate の前に配置することができます。

<CustomAction Id='MyVersionCheck' Return='check' (...) />

<InstallExecuteSequence>
    <Custom Action='MyVersionCheck' Before='InstallValidate' />
</InstallExecuteSequence>

詳細については、この記事を参照してください。カスタム アクションの作成方法については、このブログ エントリを出発点としてお勧めします。

于 2012-08-13T10:32:01.020 に答える