当产品 ID 为 * 时,在 WiX 中卸载快捷方式以允许重大升级吗?

发布于 2024-11-03 04:06:05 字数 1453 浏览 0 评论 0原文

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

简而言之,创建卸载条目的方法如下:

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

基于Rob Mensching的建议这里,如果应用程序足够小,并且您不需要处理小更新和小升级(我不需要),您可以强制每个更新都是主要升级。 此处显示。我使用了 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] 在每次安装时都会发生变化。谢谢。

I was following the tutorial here to implement an uninstall shortcut in the start menu.

In short, the way to create the uninstall entry is as follows:

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

Based on Rob Mensching's suggestion here, if the application is small enough and you don't need to handle small updates and minor upgrades (which I don't), you can force every update to be a major upgrade. This is shown here. I used Rob's suggestion which was this:

<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>

Now my question is if Product Id is randomized (*) to allow a major upgrade to take place, is there any other way to add an uninstall shortcut to the start menu or must we do it through Add/Remove programs? I'd prefer to create the shortcut in the start menu since it's just easier for the user. Obviously the way it is now, it won't work because [ProductCode] that is used in the msiexec arguments will change on every install. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苏佲洛 2024-11-10 04:06:05

你是说你已经尝试过但不起作用吗?怎么会失败呢?什么是快捷方式参数?使用 Product/@Id="*" 设置 ProductCode 属性,因此它应该可以正常工作。

Are you saying you've tried it and it doesn't work? How does it fail? What is the shortcut argument? Using Product/@Id="*" sets the ProductCode property, so it should work correctly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文