0

以下の要件でインストールを試みました。
1. メジャー アップグレードを処理し、ダウングレードを防止する必要があります。
2. マイナー アップグレード/アップデートを処理し、ダウングレードを防止する必要があります。
3. パッチ適用可能で、ダウングレードを防止する必要があります。
もちろん、すべて同じパッケージに入っています

これまで、私は次から次へと障害にぶつかってきました。
FindrelatedProductsはメンテナンス モードでは実行されないため、upgradeversion タグでインストールされた他の製品を実際に確認することはできません。Pyro はパッチを作成するのを好まないので、 ProductCode= "*" を
持つことはできません。また、 https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/ に従って構築されたダウングレードを防止しても、スイッチREINSTALL=ALLを使用してコマンドラインからインストールを実行しても実際には機能しないことに気付きました。およびREINSTALLMODE=vomus。スイッチがアップグレード バージョンの設定を無視しているようです。

私は何かを逃したと確信していますが、それを見ることはできません。これを達成する方法についてのヒントはありますか?

私のアップグレード要素は次のようになります

<Upgrade Id="put-guid-here"> 
  <UpgradeVersion OnlyDetect="yes" Property="SELFFOUND" Minimum="6.1.15119" 
                  IncludeMinimum ="yes" Maximum="6.1.15124" IncludeMaximum="yes" />
  <UpgradeVersion OnlyDetect="yes" Property="NEWERFOUND" Minimum="6.1.15124" 
                  IncludeMinimum="no" />
</Upgrade>
4

1 に答える 1

0

メジャー アップグレードでは、新しいバージョンをインストールするために ProductCode (およびその他のもの) を変更する必要があり、Windows インストーラーに組み込まれているため、ダウングレードを防ぐことができます。

インストール済みの製品に対するマイナー アップグレードには、同じ ProductCode の MSI が必要です。これは、(完全に新しい製品をインストールするのではなく) メンテナンスのために既にインストールされている製品を対象としており、コマンド ラインで REINSTALL および REINSTALLMODE を設定する必要があるためです。このタイプの更新では、主要なアップグレード ロジックは使用されません。主にファイルを更新するためのものであり、パッチに代わるものです。

つまり、マイナー アップグレードを実行してダウングレードすることはできません。ただし、MSI ファイルを (既に出荷したものと同じ) 同じ ProductCode で、より低い ProductVersion でビルドし、REINSTALL を使用してインストールするように人々に指示しない限り、誰もダウングレードできません。そしてREINSTALLMODE。あなたは実際にそれをするつもりですか?あなたの質問からはそうではないようです。また、これまでに出荷した MSI ファイルだけがすべて異なる ProductCodes を持っている場合、問題は発生しないことに注意してください。

したがって、必要なのはメジャー アップグレードだけであり、場合によっては、ときどきパッチを作成することもあるでしょう。マイナー アップグレードに使用できる MSI ファイルが存在しないため、マイナー アップグレードについて心配する必要はありません。

于 2015-05-27T18:35:11.400 に答える