我有WiX生成的安装程序,我想让它问:“你已经安装了这个应用程序。你要卸载吗?”什么时候跑。目前,如果以前安装了其他版本,它会再次安装该应用并将其卸载错误。
答案 0 :(得分:13)
下面将允许您执行升级,删除以前的版本:
<?define Version = "!(bind.fileVersion.<YOUR-FILE-HERE>)" ?>
<?define UpgradeCode = "<YOUR-GUID-HERE>" ?>
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion Minimum="$(var.Version)" IncludeMinimum="no" OnlyDetect="yes" Property="NEWERVERSIONDETECTED" />
<UpgradeVersion Minimum="0.0.0" Maximum="$(var.Version)" IncludeMinimum="yes" IncludeMaximum="yes" Property="OLDERVERSIONBEINGUPGRADED" />
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
<Custom Action="NewerVersion" After="FindRelatedProducts">NEWERVERSIONDETECTED</Custom>
</InstallExecuteSequence>
<CustomAction Id="NewerVersion" Error="A later version of [ProductName] is already installed." />
您需要定义UpgradeCode和版本以满足您的需求,即使版本未更改,您也可以进行升级。
答案 1 :(得分:7)
如果您使用WiX 3.5,则可以使用MajorUpgrade元素。