1

アップグレードを作成する製品があります。これで、アップグレードとして機能するようにアップグレード コードではなく、アプリ コードを更新しました。

現在、WIX xml で MajorUpgrade タグを使用していません。

次の構成は、以前の構成をアンインストールし、新しいファイルをディレクトリにインストールしますが、バージョン番号が変更されたファイルのみをインストールします。

<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
<Upgrade Id="$(var.SleakSoft_UpgradeCode)">
 <UpgradeVersion Minimum="4.12.0" Maximum="$(var.SleakSoft_AppVersion)" Property="OLDERVERSIONBEINGUPGRADED" OnlyDetect="no" IncludeMinimum="yes" IncludeMaximum="no" />
  <UpgradeVersion Minimum="$(var.SleakSoft_AppVersion)" IncludeMinimum="yes" OnlyDetect="yes" Language="!(loc.LANG)" Property="NEWPRODUCTFOUND" />
  <UpgradeVersion Minimum="4.12.0" Maximum="5.0.0" OnlyDetect="no" Language="!(loc.LANG)" IncludeMaximum="yes" Property="UPGRADEFOUND" />
</Upgrade>  
<CustomAction Id="PreventDowngrading" Error="Newer version of Sleak Talk is already installed." />
  <InstallExecuteSequence>
  <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
  <RemoveExistingProducts After="InstallInitialize"  />
</InstallExecuteSequence>

既存の製品を削除した後、インストーラーにすべてのファイルをインストールするにはどうすればよいですか。

私はすでに InstallExecure After="RemoveExistingProducts" と InstallExecuteAgain After="RemoveExistingProduct" を試しましたが、うまくいきませんでした。

4

2 に答える 2

0

さて、試してみましたが、今のところ、私のために働いたホットフィックスは、アンインストールが完了したときにすべてのものを強制的に再インストールすることです.

<Property Id="REINSTALLMODE" Value="amus" />

上書きすると、WIX プロジェクトのビルド中に警告がスローされます。プロパティ ID は「商品」タグの子です。

そして、Mirosoft WIXのドキュメントが言ったように

既存のファイルを置き換えるときに、Windows インストーラーがファイルのバージョン管理規則を適用する方法に注意してください。Windows インストーラーは、コンポーネントのファイルをインストールする前に、まずコンポーネントのキー ファイルが既にインストールされているかどうかを確認します。インストーラーは、ターゲットの場所にインストールされているコンポーネントのキー ファイルと同じ名前のファイルを検出すると、2 つのキー ファイルのバージョン、日付、および言語を比較し、ファイルのバージョン管理規則を使用して、そのコンポーネントによって提供されるコンポーネントをインストールするかどうかを決定します。パッケージ。インストーラーは、キー ファイルに基づいてコンポーネント ベースを置き換える必要があると判断した場合、インストールされた各ファイルのファイル バージョン管理規則を使用して、ファイルを置き換えるかどうかを判断します。

というわけで仕方なく上書きするしかありませんでした。

于 2014-04-19T10:13:11.247 に答える