1

以前のインストーラーがNSIS (Nullsoft Scriptable Install System) で作成された既存の製品のインストーラーを作成しています。WiXを使用して、この製品の msi ベースのインストーラーを作成する必要があります。私はこれに関して特定の質問があります:-

  1. アプリケーションがターゲット マシンにインストールされているかどうかを検出する方法は? アプリケーションは、NSIS (古いバージョン) または MSI (現在以降) を使用してインストールされている可能性があります。
  2. ターゲット マシンに古い/同じバージョンの製品がインストールされている場合にアップグレードできる WiX インストーラーを作成する方法。いくつかのサイトでこのトピックを見つけましたが、それらはすべて機能していません。具体的には、ソフトウェアのリリースごとに、インストーラー コード ベースでどの情報 (GUID、バージョンなど) を変更する必要があるかを知りたいです。
  3. 当社の製品は、毎年 3 つまたは 4 つのバージョンがリリースされています。どのようなインストーラーが最適ですか?

Wix コードの製品要素のバージョンを変更しただけでは、新しいインストーラーは古いインストーラーを置き換えることができないことに注意してください。新しいバージョンのインストーラーをダブルクリックすると、エラー ダイアログが表示されます。

この製品の別のバージョンが既にインストールされています。このバージョンのインストールを続行できません。この製品の既存のバージョンを構成または削除するには、[コントロール パネル] の [プログラムの追加と削除] を使用してください。」

サンプルコード:

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
   <Product Name='Baton' Id='41B8F929-B6CF-41BE-9E40-C96D9BD6D672'
       UpgradeCode='E1F03FA4-D470-4FA6-86BA-F5CDD3007C1D'
       Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='Company Name.'>

       <Package Id='*' Keywords='Installer' Description="product Installer"
           Comments='product comments'
           InstallerVersion='100' Languages='1033' Compressed='yes'
           SummaryCodepage='1252' />

       <Upgrade Id='E1F03FA4-D470-4FA6-86BA-F5CDD3007C1D'>
           <UpgradeVersion OnlyDetect='no' Property='PREVIOUSFOUND' Minimum='1.0.0'
               IncludeMinimum='yes' Maximum='1.1.0' IncludeMaximum='yes' />
       </Upgrade>

       <!-- ***Install execution sequence*** -->
       <InstallExecuteSequence>
           <RemoveExistingProducts After="InstallInitialize"/>
4

1 に答える 1

3

この製品の別のバージョンが既にインストールされています。このバージョンのインストールは続行できません。この製品の既存のバージョンを構成または削除するには、コントロール パネルの [プログラムの追加と削除] を使用します。

これは、まったく同じ製品 ID を使用してインストーラーを再構築し、再度実行したときに発生するエラーです。これを回避するには、製品要素 ID を に設定しId="*"ます。

メジャー アップグレードは、この回答のように実装できます。Product要素と要素の間でバージョンの一貫性を維持するためにプリプロセッサ変数を使用する点を除いて、サンプル コードとほぼ同じUpgradeVersionです。格下げも防げます。

于 2009-12-04T00:24:30.693 に答える