Wix重大升级,无论新文件版本如何都替换文件

2023-11-25

我的 WiX 安装程序(Wix 3.10、MSI 4.5)使用MajorUpgrade用于更新。要安装的文件是用heat.exe在预构建中。当前(较旧的)msi 文件包含一个文件nlog.dll(附带 NuGet 包v4.1.0)其文件版本为4.1.0.0,产品版本4.1.0和最后写入时间2015-09-01.

由于 nlog 团队遇到了一些严重的命名问题,他们发布了更新的 NuGet 包v4.1.1,包含更新的nlog.dll 它的文件版本减少回4.0.0.0而其产品版本已增加至4.1.1,最后写入时间是2015-09-14.

现在我遇到了一个相关的问题,就像罗比在这里所做的那样:wix 主要升级未安装所有文件:当我安装新的 msi 软件包并执行主要升级时,现在nlog.dll(根据其文件版本较新,但根据其文件日期和产品版本较旧)正在被删除,但新的nlog.dll未安装。

然而,使用Schedule="afterInstallExecute" or Schedule="afterInstallFinalize"正如所建议的那样,这对我来说不起作用。它不会像 Robbie 的情况那样删除较新的文件并且不安装较旧的文件,而是不会覆盖当前文件,而只是将其保留在原处。

长话短说,我希望我的安装程序只需安装它附带的所有文件,无论任何文件/产品/程序集版本控制内容如何。在某些情况下,需要用旧文件替换新文件。您不能告诉安装程序引擎忽略文件版本/日期吗?如果没有,我有什么选择?


您可以将 REINSTALLMODE 属性设置为 AMUS 而不是 OMUS。这将影响全球所有组件。

另一个技巧是使用“版本说谎”。您可以在此处创作具有更高版本的文件元素。使用热量会使这变得困难,因为现在您必须在编译之前转换 XML。

当然,真正的解决办法是打nlog团队的头。但根据我多年来从他们身上看到的情况,这永远不会发生。也许您只是使用资源编辑器来破解 DLL 并“修复”版本#。这是假设你不需要它的强命名。不过,这对我来说感觉很脏,而且可能是 CM 的噩梦。

或者直接转储 nlog。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Wix重大升级,无论新文件版本如何都替换文件 的相关文章

  • WiX 在构建服务器上失败

    我有一个使用 WiX 的项目 它在我的本地计算机上运行良好 但是当我发布到构建服务器时 构建会因以下内容而崩溃 来自 MSBuild 日志 Using HeatDirectory task from assembly C Program F
  • 获取生成的 ProductCode 作为 Wix 中的变量

    在我们的产品中我们使用Product Id 在 Wix 中告诉它为每个新版本生成新的产品代码 现在 我们需要在安装期间将正在安装的 MSI 的产品代码记录到我们的注册表项之一中 我们可以通过循环遍历 卸载 注册表项中的条目来查找产品名称和版
  • 如何使用 msi 安装程序部署 VBA Excel 加载项 (foo.xlam)?

    我是一名 C 开发人员 正在将同事的 VBA Excel 加载项 xlam 文件 与我的 msi 安装程序 使用 VS 部署项目构建 如果重要的话 捆绑在一起 xlam 放置在应用程序文件夹 C Program Files x86 MyCo
  • 如何使用自定义操作在 WiX 中运行脚本 - 最简单的示例?

    WiX新手问题 我该怎么办1 将一次性 shell 脚本与安装程序一起复制到 temp e g
  • 使用帮助库管理器和 WiX 安装帮助

    我试图通过使用 WiX 运行 Sandcastle 帮助文件生成器在构建我的 Sandcastle 项目后创建的 HelpLibraryManagerLauncher 将我自己的帮助文件添加到 Visual Studio 2010 的帮助库
  • 如何创建 heat.exe 收集的文件的快捷方式?

    使用 WiX Toolset 3 10 并尝试创建已使用 WiX Toolset 收获的某些文件的快捷方式heat exe效用 如 WIX bin heat exe dir SourceDir nologo platform x64 ke
  • 从对话框调用 CustomAction 时出现 WiX 安装错误 2762

    我是初学者 开始学习WiX 我想在安装过程中捕获 验证和注册用户详细信息 我创建了一个对话框来捕获用户注册并在用户单击 下一步 后调用自定义操作 但在这里我收到安装程序错误 2762 虽然错误描述说 必须在 InstallInitializ
  • 在wix中添加文件夹到安装程序而不是文件?

    我的安装程序必须将文件复制到 installdir 我的应用程序有大约 2000 个文件 我不可能编写脚本将每个文件添加到安装程序中 wix中是否有任何选项可以让我一次添加所有文件或包含文件的整个文件夹 我是 wix 新手 我在任何教程中都
  • 根据 VS 活动配置定义 Wix 属性和值

    如何定义根据激活的 Visual Studio 配置而变化的 Wix 属性和值 例如对于我们的发布版本 var x 1 对于导出版本 var x 2 我们使用 wixproj 文件将属性传递到 WiX
  • Google Cloud SDK 安装失败 UnicodeDecodeError:“ascii”编解码器

    我在安装时遇到以下错误谷歌云SDK https cloud google com sdk docs 在我的 Windows 10 计算机上 ERROR gcloud failed to load ascii codec can t deco
  • WIX 自动生成 GUID *?

    假设我生成产品 ID 为 的 WIX XML 文件 另外 对于每个组件 GUID 我都使用
  • 让 WIX 在项目中包含引用

    我对 WiX 和设置自定义安装程序完全陌生 所以我对问题的主题表示歉意 我有一个内部业务应用程序 日记 它构建并运行良好 因此我按照教程 官方文档添加 WiX 项目并引用日记的 csproj 然后构建并运行这个最基本版本的 WiX 安装程序
  • 在每台计算机安装中删除 HKCU 下的注册表项

    我使用 WiX 3 6 构建了一个 perMachine 安装程序来安装我尚未开发的软件 不幸的是 该软件在执行期间在 HKCU 下创建了一些注册表项 卸载时 还应删除自行创建的密钥 移除这些钥匙似乎并不那么容易 我正在与 ICE57 和
  • 如何使用 Wix 运行 sql 脚本创建数据库

    我在使用 Wix 创建数据库时遇到问题 我能找到的示例 参见下面的链接 都是首先使用 wix 创建数据库并运行创建表 sql 脚本 问题是我需要将 wix 设置为使用 CREATE DATABASE 运行 sql 脚本来创建数据库和表 而不
  • MSI 安装程序,64 位操作系统,写入 \windows\system32\inetsrv 文件夹

    在 Windows Server 2008 64 位上 我需要一个 msi 安装程序文件来将一些文件写入 windows system32 inetsrv 文件夹 这些文件是一些 XML 架构验证文件 C XmlReaderSettings
  • 是否有其他方法可以访问延迟自定义操作中的会话详细信息?

    我有一个自定义操作 需要获取以下值才能将某些部分从安装文件夹复制到 VS2010 文件夹 VS2010目录路径 VS2010DEVENV财产 安装路径 INSTALLLOCATION财产 为了提供足够的权限 我将自定义操作设置为Execut
  • WiX 属性引用另一个属性

    我正在尝试为我的应用程序创建多个快捷方式 通过使用在命令行上传递不同的参数Arguments的属性Shortcut http wix sourceforge net manual wix2 wix xsd shortcut htm元素 我希
  • 在 WiX 文件中,Name="SourceDir" 指的是什么?

    WiX 文件似乎总是包含这一行
  • Wix 为整个树生成单个组件 id

    我是一个几乎没有 wix 经验的人 我正在努力支持 Windows 以及我负责的组件 我正在尝试为我的产品生成的一组文件创建合并模块 这些文件存在于许多子目录中 我想知道如何为整个树中的所有文件创建一个组件 ID 我不担心小的升级 因为那是
  • 压缩未压缩的 MSI 文件

    我们有一个安装项目 它生成一个未压缩的 MSI 文件 并且根本没有 Setup exe 稍后由 NSIS 压缩 在特殊的构建设置中 我想在 NSIS 打包之前复制该 MSI 更改副本并保留它 我还想在 msbuild 创建它之后对其进行压缩

随机推荐

  • 将 pyodbc 游标结果输出为 python 字典

    如何序列化 pyodbc 游标输出 来自 fetchone fetchmany or fetchall 作为 Python 字典 我正在使用 Bottlepy 并需要返回 dict 以便它可以将其作为 JSON 返回 如果您事先不知道列 请
  • 将整数转换为位

    我有字节到二进制字符串的函数 std string byte to binary unsigned char byte int x 128 std ostringstream oss oss lt lt byte 255 0 for int
  • 我如何获得可用的时区(android:settings)

    我想要得到时区 我可以在设置中看到 日期和时间 gt 是的 我知道 在 java android 中可以通过以下方式获取所有时区TimeZone getAvailableIDs 但我只想获取存在于的时区 正如您所注意到的 可以获得所有的列表
  • r - 如何在多个面板中绘制图文

    I was trying to plot dynamic graph in different panels as it could be done on the website using group such as 但它应该是动态的使用
  • Java 中的“final”关键字如何工作? (我仍然可以修改对象。)

    在Java中我们使用final带变量的关键字指定其值不可更改 但我发现您可以更改类的构造函数 方法中的值 同样 如果变量是static那么就是编译错误 这是代码 import java util ArrayList import java
  • 如何重新排列数组项,将依赖项移动到顶部?

    我有以下内容array其中每一项可能 或可能不依赖于 另一项 test array c gt array depends gt b a gt array b gt array depends gt a d gt array depends
  • 即使运行 npm install 后,npm Gulp 依赖项也丢失

    我有一个使用 Gulp 的项目 我将项目部署到 Ubuntu 服务器上 现在想要编译资产 这是我的 gulpfile 目前所做的全部工作 安装 Node 和 npm 后我运行npm install从我的项目的根目录安装依赖项 package
  • 如何使用反应选择来自定义渲染每个下拉项下方的子文本?

    我试图弄清楚如何利用反应选择中的自定义组件来渲染包含带有潜文本的项目的下拉列表 我查看了以下每个组件 https react select com components并且不确定哪一个最适合我的需求 从组件列表来看 我相信option组件的
  • 从地理坐标获取时区的算法

    我想编写应用程序 用户可以在地图上指向任何地方 不仅是城市 并获取该地方的时区 我应该使用什么数据结构 应用程序没有互联网连接 和算法 我在哪里可以获得所需的数据 我不会比将地图划分为 24 个矩形更准确 我将用 Java ME 编写我的应
  • CMake:设置目标源目录

    我有一个 C 项目 其中所有实现源文件 cpp 都驻留在src项目目录中的目录 某些文件位于其他子目录中 假设有 50 个文件src foo 我需要将这些文件列为add library和 或target sources功能 现在 无论在哪里
  • 如何让我的 Spring-JUnit 测试认为它在 GenericApplicationContext 中运行?

    我在用着Spring 3 2 6 RELEASE JUnit 4 11 and DWR 3 0 0 rc2 我的问题是 当运行 Spring JUnit 集成测试时 如何模拟在org springframework context supp
  • hadoop中有超过120个计数器

    Hadoop 计数器大小有限制 默认为 120 我尝试使用配置 mapreduce job counters limit 来更改它 但它不起作用 我看过源代码 就像 org apache hadoop mapred Counters 类中的
  • 如何重新映射 CoC VIM 自动完成键?

    我正在尝试将自动完成键从 Enter 键重新映射到 TAB 因为当我打算转到下一行时 我会继续自动完成 下面的代码是 coc 的默认选项 我认为这是我应该能够重新映射密钥的地方 make
  • 在其他 JAR 中定义时 Spring Aspect 未执行

    我有一个由两个子项目组成的项目 这两个子项目都是 Spring 项目 并且每个子项目都有一个 applicationContext xml 一种是框架项目 最终作为 JAR 另一种是实际应用程序 最终作为 WAR 并依赖于 JAR 并将 J
  • 使用 MVVM 在 WPF 中显示 HTML

    我将 HTML 源字符串保存在 HTMLReport 字段中名为 Report 的 SQL Server 表中 字段类型为 NTEXT 现在我需要显示存储的 HTML 进入 WPF 窗口 HTML 标签和内联 CSS 需要在此 WPF 窗口
  • 使用 python -c 开关的长程序

    我想用 python 来做我一直用 bash 做的事情 是否可以对长程序使用 c 开关 例如有两个语句的 for 循环 这将使我可以直接从命令行使用 python 就像 bash 或 php 一样 Thanks 编辑 不知道我是如何错过它的
  • 将数据从 firebase 函数返回到应用程序

    在我的离子应用程序中 我正在连接到条纹支付网关 我有一个函数firebase这是在更新客户时触发的 exports updateStripeCustomer functions database ref Customers userId o
  • 安装 Zombie.js 错误:ReferenceError:未定义集合。我究竟做错了什么?

    背景 我目前正在阅读 使用 Node 和 Express 进行 Web 开发 作者 Ethan Brown 对于那些学习 Node 和 Express 的人来说是一本很棒的书 我被困在第 5 章 质量保证上 一切都很顺利 首先我运行了以下命
  • 如何将 java.util.Date 中的时间存储到 java.sql.Date 中

    我想转换java util Date to java sql Date但我也想要小时 分钟和秒 但 java sql Date 只能用于存储 date no time 我尝试了下面的代码 但它只给出了年 月和日java sql Date o
  • Wix重大升级,无论新文件版本如何都替换文件

    我的 WiX 安装程序 Wix 3 10 MSI 4 5 使用MajorUpgrade用于更新 要安装的文件是用heat exe在预构建中 当前 较旧的 msi 文件包含一个文件nlog dll 附带 NuGet 包v4 1 0 其文件版本