【问题标题】:Uninstall shortcut in WiX when Product Id is * to allow major upgrades?当产品 ID 为 * 以允许重大升级时,在 WiX 中卸载快捷方式?
【发布时间】:2011-08-11 11:29:14
【问题描述】:

我正在按照教程here 在开始菜单中实现卸载快捷方式。

简而言之,创建卸载入口的方式如下:

 <Shortcut Id="UninstallProduct"             
           Name="Uninstall My Application"
           Target="[SystemFolder]msiexec.exe"
           Arguments="/x [ProductCode]"
           Description="Uninstalls My Application" />

根据 Rob Mensching 的建议here,如果应用程序足够小并且您不需要处理小更新和小升级(我不需要),您可以强制每次更新都为大升级。这显示为here。我使用了 Rob 的建议:

<Product Id="*" UpgradeCode="PUT-GUID-HERE" Version="$(var.ProductVersion)">
 <Upgrade Id="PUT-GUID-HERE">
    <UpgradeVersion OnlyDetect="yes" Minimum="$(var.ProductVersion)" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" />
    <UpgradeVersion OnlyDetect="no" Maximum="$(var.ProductVersion)" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" />
</Upgrade>

<InstallExecuteSequence>
    <RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>

现在我的问题是,如果产品 ID 是随机的 (*) 以允许进行重大升级,是否有任何其他方法可以将卸载快捷方式添加到开始菜单,或者我们必须通过添加/删除程序来完成?我更喜欢在开始菜单中创建快捷方式,因为它对用户来说更容易。显然它现在的方式是行不通的,因为 msiexec 参数中使用的 [ProductCode] 在每次安装时都会改变。谢谢。

【问题讨论】:

    标签: wix upgrade uninstallation


    【解决方案1】:

    你是说你已经尝试过但它不起作用?它是如何失败的?什么是捷径论点?使用 Product/@Id="*" 设置 ProductCode 属性,因此它应该可以正常工作。

    【讨论】:

    • 也许我做错了什么,但它失败了,当你点击卸载时,msiexec 似乎正在卸载应用程序,但它什么也没做,应用程序仍然存在,所有捷径还在。我已经定义了 并按照我的原始帖子中的说明使用它们。 Product UpgradeCode 和 Upgrade Id 具有相同的 GUID,但我认为问题在于 Product Id=* 和 msiexec 使用 Arguments="/x [ProductCode]。这些应该不同吗?
    • 你是在编译时说 [ProductCode] = Product Id (*) 吗?
    • 只是想添加,当我使用时得到相同的结果(从开始菜单卸载不起作用): 而不是 Upgrade 和 InstallExecuteSequence 标记。
    • Product/@Id="asterisk" 在构建时设置 ProductCode 属性。同样,快捷方式的参数字段是什么? GUID 是否与 ProductCode 属性匹配? (您可以使用 Orca 打开 .msi 并获取其 ProductCode。)产品代码和升级代码 GUID 应该不同,但如果您使用的是 Product/@Id="asterisk" 则不会有问题。跨度>
    • 感谢 Orca 的建议,刚刚检查过,是的,我的卸载快捷方式参数与 .msi 的 ProductCode 属性匹配。我想我找到了问题所在。我的应用程序的添加/删除程序中有两个整体,显然,修复它的唯一方法是先从那里删除两个条目,然后重建 WiX 项目,然后再次安装。现在它似乎可以正确卸载。我将如何防止它被安装两次(或在添加/删除程序中有两个整体)?或者,如果 UpgradeCodes 保持不变,它最初是如何发生的?
    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多