使用 wix 安装较新版本的 msi 时从程序和功能中删除程序

2023-12-28

我正在使用 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(使用前将#替换为@)

使用 wix 安装较新版本的 msi 时从程序和功能中删除程序 的相关文章

随机推荐

  • 为什么 scala 值 class#toString 包含案例类信息?

    价值类别 http docs scala lang org overviews core value classes html可用于实现类型安全 而无需拆箱的开销 我的印象是 在运行时 此类类型 类将 不存在 被视为简单类型 例如 值类ca
  • nodeJs巨大数组处理抛出RangeError:超出最大调用堆栈大小

    这是处理大量条目的代码的一部分 最初它与文件系统一起工作并对文件进行一些操作 有什么好的方法可以绕过限制并防止抛出RangeError 超出最大调用堆栈大小 目前它允许我迭代大约 3000 个项目 var async require asy
  • TensorFlow:dataset.train.next_batch 是如何定义的?

    我正在尝试学习 TensorFlow 并研究以下示例 https github com aymericdamien TensorFlow Examples blob master notebooks 3 NeuralNetworks aut
  • 在 .NET 中获取默认 Windows 系统颜色

    我正在编写一个自定义按钮控件作为 即将成为 免费控件套件的一部分 并且我希望将我的 默认 控件颜色基于相应的 Windows 系统颜色 因此 在网上查找 默认 Windows 系统颜色 后 我找不到有关 Windows 控件 尤其是按钮控件
  • 如何在 iOS 上旋转自定义启动屏幕?

    我的启动屏幕可以正常工作 但我的应用程序可以在横向模式下运行 并且启动屏幕以默认的纵向模式显示 如何启动应用程序 以便启动屏幕像我的应用程序一样在横向模式之间旋转 我正在使用以下代码 BOOL shouldAutorotateToInter
  • 使用 MVVM 分配数据上下文的最佳方法是什么?

    我一直在寻找设置数据上下文属性的最佳方法 我找到了三种方法 在视图上分配数据上下文 在 XAML 或隐藏代码上 通过构造函数在 ViewModel 上分配数据上下文 使用一些配置来获取视图和视图模型引用 并通过一些基础结构类在运行时绑定数据
  • 滚动到 javascript 或 jquery 中具有特定 id 的 html 元素

    我有分配了 id 的 html 元素 现在我想滚动到这些元素 我看到 jQuery 有一个scrollTop 它接受一个整数值 我如何轻松地将带有 id 的特定 html 元素滚动到顶部 理想情况下 动画精美流畅 快速搜索显示了许多滚动插件
  • 如何使 ReactJS 应用程序在 AWS 上处于活动/可见状态

    我在AWS上开发了一个reactJS项目 前端 它有来自heroku的RESTFUL API 它们完全分离 即前端和后端 我已成功将文件上传到 S3 并激活了我的 CloudFront 发行版 但我无法真正找出问题所在 因为当我点击从域名生
  • 如何在 Bash 脚本中添加数字?

    我有这个 Bash 脚本 但在第 16 行遇到了问题 我如何获取第 15 行的先前结果并添加 它到第 16 行的变量 bin bash num 0 metab 0 for i 1 i lt 2 i do for j in ls output
  • Xcode应用程序运行问题

    我刚刚将 iPhone 5 更新至 iOS 版本 10 1 当我尝试在设备上运行我正在开发的应用程序时 我从 Xcode 收到以下错误 无法找到设备支持文件 这款 iPhone 5 型号 A1429 运行的是 iOS 10 1 14B72
  • 如何在参数化后运行拆卸功能/夹具

    我正在尝试运行拆卸函数 夹具来对一个测试用例进行整个参数化 所以我想在我的 conftest py 文件中有这样的东西 pytest fixture autouse True scope parametrization def parame
  • laravel eloquent 中的一对多关系

    早上好 我在 Eloquent 中的模型关系方面遇到了一些麻烦 我需要使用中间表链接这些文章的文章和图像 在中间表中 我想添加文章和图像的 id 并且我想检索属于一篇文章的所有图像 管理关系的最佳方法是什么 提前致谢 您不需要使用数据透视表
  • 在没有继承的情况下,如何重写类方法并从新方法中调用原始方法?

    我找到了一个成功覆盖的来源Time strftime像这样 class Time alias old strftime strftime def strftime do something old strftime end end 问题是
  • Jetpack Compose 如何删除 EditText/TextField 下划线并保留光标?

    您好 我需要删除文本字段中的下划线 因为当文本字段是圆形时它看起来很难看 我已将 activeColor 设置为透明 但光标不会显示 因为它是透明的 如何删除下划线 activeColor并保留光标 这是我的圆形文本字段代码 Composa
  • jQuery 和 ajax 在 PHP 中设置会话变量

    我在 PHP 中使用会话变量来管理多语言站点中的当前语言 为了实现我想要的 我使用了一个标志图标 当单击该图标时 jQuery 它会告诉 lang json php 将会话变量切换到新语言 我在 jQuery 方面没有收到错误 var se
  • 如何裁剪两幅图像的差异?

    我想拍这两张照片 基本上产生这个 我已经尽可能使用compare with fuzz定义已更改的部分 是否可以获取该区域的边界框并裁剪第二帧 我会按照这些思路做一些事情 convert a jpg b jpg colorspace gray
  • 附近连接 2.0:何时可以同时发布广告/发现?

    我目前正在尝试使用 P2P CLUSTER 策略同时进行广告和发现 我相信这应该有效 因为可用的文档 https developers google com nearby connections strategies表示 P2P CLUST
  • Visual Studio Code 中的 C++ IntelliSense 无法识别 C++ STL

    我在我的 Linux 笔记本电脑上使用 Visual Studio Code 我刚刚写了一个像这样的简单程序main cpp include
  • 警告:scalac:有一个弃用警告;使用 -deprecation 重新运行以获取详细信息

    请注意消息输出中的这一点 警告 scalac 有一个弃用警告 使用 deprecation 重新运行以获取详细信息 这是什么意思 我应该重新运行什么 我尝试重建和同步项目 但警告信息仍然存在 从命令行找到了解决方案 sbt set scal
  • 使用 wix 安装较新版本的 msi 时从程序和功能中删除程序

    我正在使用 WIX 创建安装程序 msi 当我安装较新版本的应用程序时 我的旧应用程序已安装在计算机上 然后它会删除旧版本的所有文件和程序集并放置较新版本的文件和程序集 但在控制面板的程序和功能中显示旧版本和新版本 我正在使用以下代码进行升