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/@InstallScope
和Package/@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>
但这也不起作用。
如果从每台计算机切换到每用户安装,如何卸载旧版本的软件?
答案 0 :(得分:1)
你被困住了。这是Windows安装程序的限制。
https://docs.microsoft.com/en-us/windows/win32/msi/major-upgrades
注意
如果在每个用户的安装上下文中安装了应用程序, 对应用程序的任何重大升级也必须使用 每个用户的上下文。如果在每台计算机上安装了应用程序 安装上下文,对应用程序的任何重大升级也必须 使用每台机器上下文执行。 Windows Installer将 不能跨安装上下文安装主要升级。