1

インストーラーが以前のインストーラーを見つけたら、再インストールする前にすべて削除する必要があります。これまでのところ、私はこのコードを持っています:

<Product Id="GUID1" Name="MyName" Language="1033"
    Version="1.0.0.0" Manufacturer="MyManufacturer" UpgradeCode="GUID2">
  <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

  <InstallExecuteSequence>
    <RemoveExistingProducts Before="InstallInitialize" />
  </InstallExecuteSequence>

  <Feature Id="ProductFeature" Title="MyTitle" Level="1">
    <ComponentGroupRef Id="MyFeatures" />
  </Feature>
</Product>

しかし、インストーラーを実行すると、次のメッセージが表示されます。この製品の別のバージョンがインストールされています。このインストールは続行できません。(またはこのようなもの、私のウィンドウは英語ではありません)。

それをどのように修正しますか?

4

1 に答える 1

2

必要に応じて、アップグレード コードとバージョン管理システムを使用してこれを行うことができます。

    <Product Id="*"
         Name="MyApp"
         Language="1033"
         Version="1.0.0"
         Manufacturer="Me"
         UpgradeCode="bf35a656-3e28-4f40-9ebd-566174c9c948">

         <MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A later version of MyApp is already installed. Setup will now exit."/>

         <!-- other stuff -->
    </Product>

重要なのは、常に製品コードを "*" にし、"UpgradeCode" 定数を維持することです。これにより、バージョンを 1.0.1 に変更すると、以前のバージョンがすべて削除されます。ただし、ユーザーが新しいバージョンを既に持っているときに古いバージョンをインストールしようとすると、(最初に手動でアンインストールしない限り) インストールできません。

免責事項:同じバージョンは更新をトリガーしません。また、4 番目の番号 (1.0.0.*) を変更しても、更新はトリガーされません。3 つの番号のバージョン管理スキームで問題なく動作します。4 つの番号のバージョン管理を行うために、ソフトウェアのブートストラップ (setup.exe) の設計を検討します。

于 2013-07-25T21:09:04.303 に答える