我正在使用 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 必须有唯一的产品代码 GUIDe。
3) 新的 MSI 必须具有更高版本的 ProductVersion 属性。请注意,仅评估前 3 个数字。 (1.2.3 -> 1.2.4 有效,1.2.3.4 -> 1.2.3.5 无效)
4) 旧 MSI 和新 MSI 必须安装在同一上下文中(每用户 -> 每用户或每机器 -> 每机器)
5) 升级表必须正确编写。使用 MajorUpgrade 元素来协助完成此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)