3

以前の DLL を削除するように WIX インストール オプションをアップグレードしましたが、コントロール パネルに移動し、[プログラムの追加と削除] セクションに移動すると、以前のバージョンがまだ存在します。

この [追加/削除] セクションから以前のアイコンを削除するにはどうすればよいですか?

.....

以下のコメントへの応答として、申し訳ありませんが、まだこれを機能させることができません。アップグレードすると、以前のバージョンが [プログラムの追加と削除] セクションに表示されます。コードは次のとおりです。

最初は Id を "*" にしていましたが、次のビルドを作成するときに製品 ID を変更するだけです

<Upgrade Id="$(var.UpgradeCode)">
  <UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="yes" Property="NEWERVERSIONDETECTED"/>
  <UpgradeVersion Minimum="1.0.0"
                  IncludeMinimum="yes"
                  OnlyDetect="no"
                  Maximum="$(var.ProductVersion)"
                  IncludeMaximum="no"
                  Property="PREVIOUSVERSIONSINSTALLED" />
</Upgrade>
4

1 に答える 1

0

アップグレード ID は、アップグレードするバージョン間で同じである必要があります。メジャー アップグレードを実行する場合、以前のインストールを削除してから新しいバージョンをインストールした場合、変更する必要があるプロパティは製品 ID です。

「*」により、新しい GUID が WIX によって生成されます

次のようなものが必要です。

<!--Product -->
<Product Id="*" Name="$(var.Product.Name)" Language="$(var.Product.Lang)" Version="$(var.Product.Version)" Manufacturer="$(var.Product.Manufacturer)" UpgradeCode="{Replace me with a constant Upgrade Guid}">
<Package InstallerVersion="$(var.Package.InstallerVersion)" Compressed="yes" Platform="$(var.Platform)" />   


   <!--Condition Messages-->
    <Condition Message="A newer version of $(var.Product.Name) is already installed. Exiting installation.">
      <![CDATA[Installed OR NOT NEWER_VERSION_FOUND]]>
    </Condition>

<!-- Upgrade Table -->
<Upgrade Id="{Replace me with a constant Upgrade Guid}">

  <UpgradeVersion
    Property="OLD_VERSION_FOUND"
    Minimum="0.0.0.0"
    Maximum="$(var.Product.Version)"
    IncludeMinimum="yes"
    IncludeMaximum="no"
    OnlyDetect="no"
    IgnoreRemoveFailure="yes"
    MigrateFeatures="yes"
    Language="1033"  />

  <UpgradeVersion
    Property="NEWER_VERSION_FOUND"
    Minimum="$(var.Product.Version)"
    IncludeMinimum="no"
    OnlyDetect="yes"
    Language="1033"  />

</Upgrade>

<!--Removes the old version and then installs the new version-->
<InstallExecuteSequence>
  <RemoveExistingProducts After="InstallInitialize"></RemoveExistingProducts>
  <InstallExecute After="RemoveExistingProducts"></InstallExecute>
</InstallExecuteSequence>

また、バージョン間でユーザーごとのインストールとマシンごとのインストールを切り替えることはできないことに注意してください。

于 2012-03-22T21:57:24.903 に答える