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>
但这也不行
如果我从每台机器安装切换到每个用户安装,如何卸载旧版软件?
你被卡住了,这是Windows安装程序的限制 这是windows安装程序的限制。
https:/docs.microsoft.comen-uswindowswin32msimajor-upgrades)。
注
如果应用程序安装在每个用户的安装上下文中,对应用程序的任何重大升级也必须使用每个用户上下文来执行。如果应用程序安装在每台机器的安装上下文中,对应用程序的任何重大升级也必须使用每台机器上下文来执行。Windows安装程序不会跨安装上下文安装重大升级。