2016-08-11 2 views
0

次の問題があり、何が起こっているのかを理解しようとしています。私はこのコードを持っています:ProductVersionを別の形式に変更するとmsiのアップグレードが失敗する

... 
<Product Name="My Service" 
     Id="*" 
     UpgradeCode="$(var.UpgradeCode)" 
     Language="$(var.Language)" 
     Codepage="$(var.CodePage)" 
     Version="$(var.ProductVersion)" 
     Manufacturer="$(var.Manufacturer)"> 

    <Package Id="*" 
     Keywords="Installer" 
     Description="My Service Installer" 
     Comments="Service Installer" 
     Manufacturer="$(var.Manufacturer)" 
     InstallerVersion="300" 
     Languages="$(var.Language)" 
     Compressed="yes" 
     SummaryCodepage="$(var.CodePage)" /> 

    <Upgrade Id="$(var.UpgradeCode)"> 

    <!-- Populate NEWERVERSIONDETECTED if there is an installed 
     package with the same upgrade code 
     and version is > the version being installed --> 
     <UpgradeVersion Minimum="$(var.ProductVersion)" 
        IncludeMinimum="no" 
        OnlyDetect="no" 
        Property="NEWERVERSIONDETECTED" /> 

    <!-- Populate UPGRADEFOUND if there is an installed 
     package with the same upgrade code 
     and the version is between the earliest version defined 
     and the version being installed --> 
     <UpgradeVersion Minimum="$(var.FirstVersion)" 
        IncludeMinimum="yes" 
        Maximum="$(var.ProductVersion)" 
        IncludeMaximum="no" 
        Property="PREVIOUSVERSIONSINSTALLED" /> 
    </Upgrade> 

    <Condition Message="A newer version is already installed.">NOT NEWERVERSIONDETECTED</Condition> 

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

<!-- Step 1: Define the directory structure --> 
... 
<!-- Step 2: Add files to your installer package --> 
... 
<!-- Step 3: Tell WiX to install the files --> 
... 

ProductVersionとFirstVersionはx.x.x形式です。 msiには3つのファイルしか含まれていないので、すべてをアンインストールして新しいファイルを配置することをお勧めします(メジャーアップグレードなど)。 ここには何が起きているのですか: FirstVersionは "0.0.1"と定義されています。私は2回目のプロジェクトをビルドします(最初のビルドではProductVersion "0.0.2"、2番目のビルドでは "0.0.3"で2つのmsiを生成します)。 0.0.2の上に0.0.3をインストールすると、すべてがスムーズに進んでいます。プログラムの追加と削除で新しいバージョンがインストールされていることを確認します。「サービス」はローカルサービスで実行中の&です。プログラムファイルでは新しいファイルが格納されています。

私がProductVersion 2.0.2と2.0.3(前の手順と同じ手順)でプロジェクトをビルドすると、2.0.2の上に2.0.3をインストールすると、エラーがポップアップせず、インストールが完了します(少なくともイベントビューアではそう言いますが)Program Files内のフォルダは存在しません。私のサービスはローカルサービスでは不明です(起動しません)。私の新しいバージョン2.0.3がインストールされていることを示すプログラムの追加と削除では、よく見えるのが唯一のものです。そして、別の奇妙なことは、アプリケーションの追加と削除を正常にアンインストールできるということです。エラーはありません!

はなぜPRODUCTVERSIONのアップグレードとして0.0.x形式のために正常に動作しているが、2.0.xのための ありませんか?

私は、アップグレード時にmsiexecの出力をログに記録しようとしたが、それはあまりにも私にとっては複雑 です。

PS:アップグレードを実装する別の方法はお勧めしません。私は多くの制限があるmsitoolsを使用しているので、 をこのコードに貼り付ける必要があります。

答えて

0

バージョンは正しいですが、間違いはありません。

verbose logがないと、問題を見つける機会がかなり少なくなります。まったく難しいことではありません。上記のリンクに従うと、ログを生成して私たちと共有したり、to read it自分自身で試してみるための複数の方法の例があります。

関連する問題