WIXを使用してビルドされたMSIパッケージも含むインストーラーを作成しています。msiexecを実行した後にリターンコードを確認し、いくつかのエラーコードをスキップします。たとえば、リターンコードが1638(製品はすでにインストールされている)の場合、ユーザーはエラーを受け取らないはずです。
ただし、古いバージョンの製品がインストールされている場合、戻りコードは1603(不明なエラー)です。私もこの状況をスキップしたい(ユーザーはすでに新しいバージョンを入手しています)
Wixコードは
<Upgrade Id="<GUID>">
<UpgradeVersion Minimum="$(var.product_version)" OnlyDetect="yes" Property="NEWERFOUND" />
<UpgradeVersion Minimum="0.1.0" IncludeMinimum="yes" Maximum="$(var.product_version)" IncludeMaximum="no" Property="SELFFOUND" />
</Upgrade>
<MajorUpgrade DowngradeErrorMessage=You have installed newer version $(var.product_name)." />
問題は、SELFFOUNDまたはNEWERFOUNDプロパティがアクティブ化されているときに、1603以外のコードを返す方法です。
更新:リターンコードに影響を与えたくありませんでした。一般的な致命的なエラーの代わりに適切なコードを取得したいと思います。