10

現在、新しいバージョン番号に更新するたびにすべてのアップグレードが正常に機能しますが、ダウングレードすると奇妙な動作が発生します。既存のバージョンをアンインストールしてから、インストールしようとしているバージョンを部分的にインストールするようです.メインのexeはまだターゲットの場所に存在しませんが、宣伝されているショートカットが作成されます. 宣伝されているショートカットを開くと、インストールが完了し (おそらく修復が行われます)、正常に動作します。

なぜこれが起こっているのか、誰にもアイデアがありますか?

私のアップグレードブロックは次のようになります:

<UpgradeVersion Minimum="0.0.0.0" Maximum="99.0.0.0" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="yes" IncludeMaximum="no" IgnoreRemoveFailure="yes" />

(IgnoreRemoveFailure はこの問題を修正する試みでしたが、何もしていないようです)

私のInstallExecuteSequenceには<RemoveExistingProducts After="InstallValidate" />

また、私は持っていProduct Id="*"ますPackage Id="*"

ダウングレードが必要な理由は、互換性を確保するためにクライアント アプリケーションをサーバーと同じバージョンで実行する必要があり、プロセス全体を自動化する必要があるためです。クライアントとサーバーのバージョンがサインイン時に一致しない場合、ユーザーは単に「はい」をクリックすると、適切なバージョンがダウンロードされ、インストールされ、開始されます。これはこれまでのところアップグレードでは機能していますが、ダウングレードでは、アプリを手動で再起動し、起動前に Windows インストーラー ダイアログがポップアップするのを確認するという直感的ではない追加の手順が必要です。

最終的な結果は、アップグレードまたはダウングレードに関係なく、現在のバージョンを完全にアンインストールし、ダウンロードしたバージョンを完全にインストールする必要があるため、それを達成する別の方法があれば、それも良い答えです.

4

5 に答える 5

5

これは私のために働いたものです:

<Wix ...>
  <Product ...>
    <Property Id="REINSTALLMODE" Value="amus" />
    <MajorUpgrade AllowDowngrades="yes" />
于 2014-03-24T19:42:09.570 に答える
2

ダウングレードを許可することは、少なくとも部分的にはベスト プラクティスとは見なされません。これは、サポートするすべての組み合わせをテストするのが非常に難しいため、それらを修正することはまだ可能です。代わりにこのケースを検出してブロックし (最初に新しいバージョンを削除することを提案します)、自動的に前進をサポートすることはできませんか?

これを機能させる必要がある場合、ダウングレード インストール (または修復 - これを作成するには、マシンのログ ポリシーを設定する必要があります) の詳細ログに、メジャー アップグレードを確認するものがありますか (私はFindRelatedProducts の近くを見てください) または、exe のコンポーネントがインストールされていない理由について説明していますか? SELMGRマイナー アップグレード シナリオでこれを説明している可能性があるため、ログ行を必ず確認してください。

アドバタイズされたショートカットが配置されているため、代わりにコンポーネントがアドバタイズされたように聞こえます。これは、メジャー アップグレードを強制する必要があるように見えますが、マイナー アップグレードでのコンポーネント ルール違反を示している可能性があります (具体的には、古いバージョンでの削除のように見える新しいバージョンでのコンポーネントの追加 - HeathS の解説を参照) 。Product/@Id='*'

また、単一の機能、単一のコンポーネント、およびショートカット付きの単一のファイルを持つ基本バージョンから開始して、サンプル プロジェクトで作業を試みることもできます。関連する場合は、アップグレードされたバージョンに別のコンポーネントとファイルを追加します。それ以外の場合は、ファイルのバージョンをインクリメントします。次に、逆のシナリオを試してください。犯人が見つかるまで、ゆっくりと追加してください。次に、実際の製品から削除できるもの、または回避できるものであることを願っています.

于 2009-10-12T13:57:21.350 に答える
0

「UpgradeVersion」要素を 2 つ使用するとどうなりますか?

<UpgradeVersion Maximum="CurrentVersion" Property="PREVIOUSVERSIONSINSTALLED" IncludeMaximum="no" />
<UpgradeVersion Minimum="CurrentVersion" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="no" />
于 2009-10-16T17:58:27.533 に答える