wix - Wix 安装程序删除要更新但不安装新版本的文件
问题描述
最近遇到了一个配置为对以前安装的应用程序进行“重大升级”的 Wix 安装程序的问题。已安装在系统上的应用程序包含一个版本为 1.0.0 的 S7.Net.dll 文件,而安装程序(表示更新)包含一个同名的 dll (S7.Net.dll),但版本为0.3.0 安装在同一位置。但是,运行“升级”安装程序似乎会删除版本为 1.0.0 的文件,但从未将其替换为版本为 0.3.0 的文件。
我查看了安装程序(链接)使用的文件版本控制逻辑,如果我理解正确,安装程序不应该用“升级”安装程序中的文件替换系统上已经安装的文件(v1.0.0) (v0.3.0)。这种理解正确吗?我不确定这一点,因为“升级”安装程序确实包含一个MajorUpgrade
组件,据我了解,默认情况下该组件会执行一种“全部删除”操作 - 至少这是我从阅读中的RemoveFeatures
属性描述时所解释的维克斯文档。但是,如果执行“全部删除”,那么为什么还要比较两个文件的版本呢?
总的来说,我对文件版本控制逻辑的理解是否正确?我对Wix组件RemoveFeatures
属性的理解如何?MajorUpgrade
如果是这样,为什么“升级”安装程序会删除文件的现有版本而不替换它?
我已经包含MajorUpgrade
了安装程序中包含的组件,以及提到的每个 dll 文件的属性选项卡的屏幕截图。
<MajorUpgrade
AllowDowngrades="no"
DowngradeErrorMessage="A newer version of [ProductName] is already installed."/>
解决方案
推荐阅读
- firebase - Flutter 应用无法写入手动或其他用户创建的 Firestore 文档
- python - 如何使用 Selenium 将文本从 HTML 检索到 Python
- amazon-web-services - 使用带有管道自动化的 CDK 使用给定的模板文件创建资源
- python - 在python中安装neuralpy的问题
- java - forEach parameter does not match Consumer functional interface parameters but code still compiles, why?
- node.js - 我目前正在安装“npm install --save dev webpack webpack-dev-server”,但我遇到了这个问题
- php - 致命错误:在 Laravel 7.0 的第 29 行的 Foundation\Application.php 中找不到接口“Symfony\Component\HttpKernel\HttpKernelInterface”
- typescript - 在打字稿中,计算后无法引用类型
- linux - 查看重定向到 dev/null 的进程输出 - 撤消重定向
- python - Pyplot 在绘制 1d 列与 nd 列时绘制不同的线型和标记样式