次の問題があり、何が起こっているのかを理解しようとしています。私はこのコードを持っています: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を使用しているので、 をこのコードに貼り付ける必要があります。