从每台计算机更改为每用户安装后,WiX升级不起作用。如何卸载旧版本?

时间:2020-04-27 11:28:52

标签: wix windows-installer upgrade uninstallation

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>

但这也不起作用。

如果从每台计算机切换到每用户安装,如何卸载旧版本的软件?

1 个答案:

答案 0 :(得分:1)

你被困住了。这是Windows安装程序的限制。

https://docs.microsoft.com/en-us/windows/win32/msi/major-upgrades

注意

如果在每个用户的安装上下文中安装了应用程序, 对应用程序的任何重大升级也必须使用 每个用户的上下文。如果在每台计算机上安装了应用程序 安装上下文,对应用程序的任何重大升级也必须 使用每台机器上下文执行。 Windows Installer将 不能跨安装上下文安装主要升级。