WiX 升级问题 - 文件的主要版本已增加,但修订版较低,现在旧文件已删除,但升级期间不会复制新文件

2023-11-30

我根据目录(用于 Web 应用程序)自动为安装程序生成 WiX 文件,其中包含对以下 3 个 .Net 程序集的引用:

  • 迁移器.dll
  • 迁移器.Framework.dll
  • 迁移器.Providers.dll

这是生成 WiX 片段:

<Fragment>
<DirectoryRef Id="bin">
  <Component Id="bin.Migrator.dll" Guid="*">
    <File Id="bin.Migrator.dll" Name="Migrator.dll" KeyPath="yes" Source="..\WebApplication\bin\Migrator.dll" />
  </Component>
</DirectoryRef>
</Fragment>
<Fragment>
<DirectoryRef Id="bin">
  <Component Id="bin.Migrator.Framework.dll" Guid="*">
    <File Id="bin.Migrator.Framework.dll" Name="Migrator.Framework.dll" KeyPath="yes" Source="..\WebApplication\bin\Migrator.Framework.dll" />
  </Component>
</DirectoryRef>
</Fragment>
<Fragment>
<DirectoryRef Id="bin">
  <Component Id="bin.Migrator.Providers.dll" Guid="*">
    <File Id="bin.Migrator.Providers.dll" Name="Migrator.Providers.dll" KeyPath="yes" Source="..\WebApplication\bin\Migrator.Providers.dll" />
  </Component>
</DirectoryRef>
</Fragment>

我们已经使用相同的基本安装程序结构一年左右了,但最近我们将 Migrator.Net 库更新为新的内部版本,版本号和程序集标题/描述属性从(从 Orca 转储出来)发生了变化

  • bin.Migrator.dll bin.Migrator.dll Migrator.dll 16384 3.0.1317.0 0 512 78
  • bin.Migrator.Framework.dll bin.Migrator.Framework.dll pi0mozkr.dll|Migrator.Framework.dll 20992 3.0.1317.0 0 512 79
  • bin.Migrator.Providers.dll bin.Migrator.Providers.dll jq05waoy.dll|Migrator.Providers.dll 73216 3.0.1317.0 0 512 82

升级库后:

  • bin.Migrator.dll bin.Migrator.dll Migrator.dll 16384 3.2.0.1 0 512 55
  • bin.Migrator.Framework.dll bin.Migrator.Framework.dll pi0mozkr.dll|Migrator.Framework.dll 28160 3.2.0.1 0 512 56
  • bin.Migrator.Providers.dll bin.Migrator.Providers.dll jq05waoy.dll|Migrator.Providers.dll 79872 3.2.0.1 0 512 57

虽然次要版本更高,但修订版现在是 1 而不是 1317。

从那时起我们发现升级到新版本会导致这3个文件没有被复制(因此升级过程会删除旧文件,但不会安装新文件)。

这是否与程序集的版本号更改有关,如果是,是否有任何方法可以覆盖此行为(我们只想删除所有内容,然后复制所有内容,无论版本如何)。

有趣的是,如果您安装,然后重新运行安装程序并进行“修复”,它确实会复制新文件 - 我认为这是因为修复文件时不再存在,因此文件版本检查逻辑不适用?

任何有关其工作原理以及如何避免我们遇到的升级问题的提示将不胜感激。


As 链接的问题建议您可以尝试重新安排删除现有产品以便在安装任何新文件之前删除旧产品,如下所示:

<InstallExecuteSequence>
    <RemoveExistingProducts After="InstallValidate" />
    <!-- other actions -->
</InstallExecuteSequence>

另一种选择是修改REINSTALLMODE属性,并替换e模式与a,这意味着它的价值将是amus。这样所有的文件都会被重新安装,操作时间会更长,但更可靠。

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

WiX 升级问题 - 文件的主要版本已增加,但修订版较低,现在旧文件已删除,但升级期间不会复制新文件 的相关文章

  • 将 Node.js 升级到最新版本

    所以 我安装了 Node js 现在当我尝试安装 Mongoosejs 时 我收到一条错误 告诉我没有所需的 Node js 版本 我有 v0 4 11 需要 v0 4 12 我怎样才能升级到这个版本 我想我只能使用最新版本再次安装它 但在
  • 对 .NET Windows 安装程序应用程序执行注册表搜索

    我有一个 NET winform 安装程序应用程序 在安装之前 我会进行注册表搜索以检查计算机上是否安装了 MS Access Runtime 搜索目标机器 搜索目标机器的属性 启动条件 启动条件的属性 但是我想避免对路径进行硬编码 例如
  • wix 安装程序/创建网站并分配新的或现有的 Web 应用程序池

    我尝试使用 wix 安装创建一个新网站 没关系 没有问题 但我无法将新的或现有的网络应用程序池分配给新网站 iis website 标记不包含 WebAppPool 属性 我如何将网络应用程序池分配给网站 你可以在下面看到我的代码 感谢您的
  • Dpkg:警告:包“x”的文件列表文件丢失;假设 Ubuntu 16.04 中当前没有安装包

    我使用 Ubuntu 16 04 和 lubunut 桌面环境 当我这样做时 我遇到了以下问题超过3天apt get upgrade 我不知道问题是什么以及如何解决 注意 3天前我尝试升级Linux header 4 4 66 但显示错误
  • Wix 4 收获目录的解释?

    我正在尝试学习 Wix 4 0 来为我正在开发的应用程序创建安装程序 构建我的应用程序后 我在一个文件夹中有一堆文件 我想将它们安装到程序文件中 我已经读到收获功能允许我简化此过程并为整个目录创建组件映射 但我不确定这是什么example
  • 如何禁用恢复 Visual Studio 安装程序项目丢失的文件?

    我创建了一个使用来自暴雪 API 服务的图像的程序 我为该程序创建了一个安装程序 并将图像放置在 用户的应用程序数据文件夹 中 安装非常好 图像被解压到文件夹 AppData Roaming MyApp 中 如果需要删除图像 程序将从暴雪服
  • WIX 工具集 - 自定义操作命令无法正确检测 Windows 10 版本

    我有一个安装程序 可以部署并运行单独的 exe文件以将驱动程序部署到系统 不幸的是 微软似乎已经放弃了对VersionNTWindows 10 及更高版本中的宏 所以我实施了另一篇文章中建议的方法 https stackoverflow c
  • 让 WiX Bootstrapper 用于 .NET 4.0 的引导

    我一直在寻找让我的引导程序能够安装 NET 4 0 和我自己的应用程序 我查看了几个博客和教程 但无法让它发挥作用 我在 Stack Overflow 问题中读到在 WiX 中启动 调用引导程序 https stackoverflow co
  • 如何在 C# 中找到已安装应用程序的升级代码?

    我正在使用 Windows Installer API 的 C 包装器WIX 工具集 http wixtoolset org 我用ProductInstallation类来获取有关已安装产品的信息 例如产品代码和产品名称 例如 产品名称 我
  • IIS 中的 WIX 和证书

    我正在尝试设置我的安装 以便使用 WIX 配置我的站点及其证书 我可以在 IIS 中查看证书并有权访问 cer 文件 这就是我对证书的了解 所以请简化任何答案 即我不知道我的 BinaryKey 是什么 该证书已安装在计算机上 理想情况下
  • 创建 MSI 的最佳工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是设置项目创建的新手 现在我正在使用 Visual Studio 2008 为我的项目创建安装文件 msi 我对在安装向导中创建自己的自
  • 如何与静默安装的 msi 交互? (进度数据并取消)

    由于某种原因 我们正在提供带有我们自己的安装 GUI 的产品 这意味着我们将在后台静默运行 msi 安装 通过使用 MSI API MsiInstallProduct 我可以静默安装该产品 但我不知道如何获取此安装的进度数据以及如何取消它
  • 安装引导程序如何检测是否安装了先决条件?

    试图解决这个问题 https stackoverflow com questions 2591384 bootstrapper setup exe says net 3 5 not found but launching msi direc
  • 在 Azure DevOps 中为 Wix MSI 文件生成 GUID

    我正在为 Web 服务器应用程序和 Sitecore 前端应用程序设置 Wix 安装程序 我的问题并非特定于 Web 服务器或 Sitecore 我的问题是 Wix 以及如何使用它进行持续交付 1 Wix 需要每个文件和产品本身的 GUID
  • 用于检查和安装先决条件的安装项目与引导程序项目

    这是我的情况 我创建了一个普通的 WiX 安装项目 然后我尝试检查一些先决条件 例如是否安装了 NET 框架 我似乎无法从 WiX 安装项目中执行此操作 所以我创造 WiX Bootstrapper 项目 我能够检查并安装它们 先决条件 我
  • 将外部 CAB 添加到具有内部 CAB 的 MSI

    我有一个安装应用程序的 Visual Studio 安装程序 vs2015 我希望它还安装一组配置文件 其内容因物理安装位置而异 这些文件将作为 cab 文件交付到与 msi 相同的目录中 cab 有一组已知的文件 这些文件将分布在安装位置
  • Wix\heat.exe 奇怪的输出

    我有一个目录 其中有一个文件 Iesi Collections dll 当我运行以下命令时 heat exe dir D MyDir cg References srd o D Product wxs nologo gg g1 dr INS
  • 单个 .msi Windows 软件包安装程序文件的最大大小是多少?

    我们正在对服务器进行一些上传测试 特别是接收 msi 软件包安装程序文件 目前 我可以使用有限的知识和我所拥有的 Visusl Studio 工具创建一个总大小为 2GB 的 msi 文件 但我想知道是否可以创建一个更大的文件 我的谷歌搜索
  • Wix:使用引导程序时显示 WixUI_minimal

    我对 Wix 有点陌生 我创建了一个引导程序来检查并安装 NET 版本 4 框架 如果它不存在 在我的 msi 包中 我使用 WixUI minimal 安装程序界面 当我运行 bootstrapper exe 时 显示标准引导程序 UI
  • WiX - 安装 Windows 服务并授予权限

    我们需要授予用户启动 停止和查询已安装服务状态的权限 在 WiX 2 0 中 这个 xml 可以工作

随机推荐