WiX从每台机器安装改为每一个用户安装后,无法升级。如何卸载旧版本?

问题描述 投票:0回答:1

WiX工具集版本: 3.11.2.4516

为了从每台机器的安装切换到每一个用户的安装,我把我的WiX配置从这个。

<Product Id="*" Name="$(var.ProductName)" Language="1033" Version="1.0.0.1"
  Manufacturer="$(var.CompanyName)" UpgradeCode="eec853e6-9345-4be0-908f-958f212c6f30">

  <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" />

  <MajorUpgrade Schedule="afterInstallInitialize"
    DowngradeErrorMessage="A newer version of $(var.ProductName) is already installed" />

改成了这个(删除 Package/@InstallScopePackage/@InstallPrivileges):

<Product Id="*" Name="$(var.ProductName)" Language="1033" Version="2.0.0.0"
  Manufacturer="$(var.CompanyName)" UpgradeCode="eec853e6-9345-4be0-908f-958f212c6f30">

  <Package InstallerVersion="200" Compressed="yes" />

  <MajorUpgrade Schedule="afterInstallInitialize"
    DowngradeErrorMessage="A newer version of $(var.ProductName) is already installed" />

现在产品是按用户而不是按机器安装的。但是 <MajorUpgrade> 不工作了。我也试着把 Product/@UpgradeCode 到一个新的GUID,并将以下内容添加到我的WiX配置中(在下面的 <MajorUpgrade> 元素)。)

<Upgrade Id="eec853e6-9345-4be0-908f-958f212c6f30">
  <UpgradeVersion OnlyDetect="no" Property="OLD_SERVICE_INSTALLER_FOUND" Minimum="0.0.0.0" />
</Upgrade>

但这也不行

如果我从每台机器安装切换到每个用户安装,如何卸载旧版软件?

wix windows-installer upgrade uninstall
1个回答
1
投票

你被卡住了,这是Windows安装程序的限制 这是windows安装程序的限制。

https:/docs.microsoft.comen-uswindowswin32msimajor-upgrades)。

如果应用程序安装在每个用户的安装上下文中,对应用程序的任何重大升级也必须使用每个用户上下文来执行。如果应用程序安装在每台机器的安装上下文中,对应用程序的任何重大升级也必须使用每台机器上下文来执行。Windows安装程序不会跨安装上下文安装重大升级。

© www.soinside.com 2019 - 2024. All rights reserved.