![](/img/trans.png)
[英]When installing MSI for current user only, the old version of application is not uninstalled (appears in Add/Remove programs twice)
[英]remove program from programs and features when installing newer version msi using wix
我正在使用WIX创建安装程序msi。 当我安装较新版本的应用程序时,我的较旧应用程序已安装在计算机上,然后它删除了较旧版本的所有文件和程序集,并将较新版本的文件和程序集放入其中,但在控制面板的程序和功能中同时显示了较新版本和较旧版本。
我正在使用以下代码进行升级
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion Minimum="$(var.ProductVersion)" IncludeMinimum="no" OnlyDetect="yes" Language="!(loc.lcid)" Property="NEWPRODUCTFOUND"/>
<UpgradeVersion Minimum="1.0.0.0" IncludeMinimum="yes" Maximum="$(var.ProductVersion)" IncludeMaximum="no" Language="!(loc.lcid)" Property="UPGRADEFOUND"/>
</Upgrade>
<CustomAction Id="PreventDowngrading" Error="!(loc.CustomAction_PreventDowngrading)"/>
<InstallUISequence>
<Custom Action="SetWindowsTypeProp" Before="FindRelatedProducts">1</Custom>
<!--Custom Action="SetPresenceProperties" After="SetWindowsTypeProp">1</Custom-->
<Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
</InstallUISequence>
<InstallExecuteSequence>
<Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
<RemoveExistingProducts Before="InstallInitialize"/>
</InstallExecuteSequence>
请帮助我如何从程序和功能中删除条目
这意味着您的MajorUpgrade无法正常工作。 FindRelatedProducts找不到较旧的版本,因此REmoveExistingProducts无法正常工作。 对于最新版本的WiX,您可以删除很多此类代码,并用较新的MajorUpgrade元素替换。 这是一个较高级别的抽象,可以简化大部分编写工作。
为了成功进行MajorUpgrade,必须完成几件事:
1)新旧MSI必须具有相同的UpgradeCode GUID。 (尽管从技术上来说,MSI可以通过使用其他UpgradeCode属性来删除不相关的产品,但出于这个问题的目的,我们将忽略它。)
2)新旧MSI必须具有唯一的ProductCode GUID。
3)新的MSI必须具有更高版本的ProductVersion属性。 请注意,仅对前三个数字进行评估。 (1.2.3-> 1.2.4有效1.2.3.4-> 1.2.3.5无效)
4)旧MSI和新MSI必须在相同的上下文中安装(每个用户->每个用户或每台计算机->每台计算机)
5)升级表必须正确编写。 使用MajorUpgrade元素可以帮助完成此任务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.