【问题标题】:Uninstall older version of the application卸载旧版本的应用程序
【发布时间】:2011-12-25 07:02:30
【问题描述】:

我有 WiX 生成的安装程序,我希望它问:“您已经安装了这个应用程序。要卸载它吗?”运行时。目前它会再次安装应用程序,如果之前安装了另一个版本,则会错误地卸载它。

【问题讨论】:

    标签: .net wix windows-installer


    【解决方案1】:

    以下将允许您执行升级,从而删除以前的版本:

    <?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 和 Version 以满足您的需要,这也将允许您执行升级,即使版本没有更改。

    【讨论】:

    • 是的,无论是否已安装旧版本或此版本,都最好要求卸载
    • 你的意思是你想在升级前提示,而不是仅仅检测和删除以前的版本?
    • 不,我根本不想升级,我想让它说:“你已经安装了这个应用程序,你想卸载它吗?”,我想让它说出来无论如何,它是否已安装旧版本或当前版本。谢谢
    • 已安装旧版本 = 提示卸载,然后仅卸载。当前版本已安装 = 提示卸载,然后仅卸载。所以如果已经安装了你只想提示卸载?
    • 用户友好的安装程序将支持多个版本的并行安装或执行升级到较新版本。您可以在执行升级之前询问用户是否要升级。如果他们不想,请不要安装较新的版本。您不能有条件地安排卸载与 MSI 无关的不相关产品。
    【解决方案2】:

    如果您使用 WiX 3.5,您可以使用 MajorUpgrade 元素。

    【讨论】:

      猜你喜欢
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 2013-01-09
      • 2013-02-17
      • 2011-08-19
      • 2021-03-23
      • 1970-01-01
      相关资源
      最近更新 更多