更改产品代码时可以将1.0.0.0升级到1.0.0.1吗?

2023-12-08

我被要求将版本 1.0.0.0 升级到 1.0.0.1。默认情况下,当我使用虚拟安装程序进行测试时,如果我们更改产品代码,1.0.0.0 和 1.0.0.1 都会并排安装。

但如果我们执行版本 1.0.1.0(同时更改产品代码),它将进行升级。这是我的升级部分:

   <Upgrade Id="{354E9DAE-EB70-4BCC-BD93-AC20ACE3F370}">
     <UpgradeVersion
      Maximum="$(var.ver)"
      Property="DOMAJORUPGRADE"
      MigrateFeatures="yes"
      IncludeMinimum="yes"/>
   </Upgrade>

问题:有什么方法可以将1.0.0.0升级到1.0.0.1吗?

实际上,我得到了这样一个场景:

  1. 在 1.0.0.0 之上安装 1.0.0.1 时,需要升级 1.0.0.0。
  2. 在 1.0.0.1 之上安装 1.0.0.0 时,1.0.0.0 需要失败。
  3. 当使用不同的产品代码在 1.0.0.1 之上安装 1.0.0.1 时(仅可能在开发版本中),需要卸载现有的 1.0.0.1。

查看帮助主题主要升级元素:

以下是关于AllowSameVersionUpgrades 属性的说明:

当设置为 no(默认)时,安装具有相同功能的产品 允许版本和升级代码(但不同的产品代码) MSI将其视为两种产品。当设置为 yes 时,WiX 设置 msidbUpgradeAttributesVersionMaxInclusive 属性,告诉 MSI 将具有相同版本的产品视为主要升级。

当两个产品版本仅在第四个版本不同时,这非常有用 版本字段。 MSI 在比较时特别忽略该字段 产品版本,因此两种产品仅在第四个方面有所不同 version 字段是相同的产品,需要将此属性设置为 yes 被检测到。

请注意,由于 MSI 忽略了第四个产品版本字段, 将此属性设置为 yes 还允许在第一次时降级 三个产品版本字段相同。例如,产品 版本 1.0.0.1 将“升级”1.0.0.2998,因为它们被视为 相同版本(1.0.0)。这可能会重新引入严重的错误,因此 最安全的选择是更改前三个版本字段并省略 此属性获取默认值 no。

当AllowDowngrades 也为“yes”时,此属性不能为“yes” -- AllowDowngrades 已允许两个具有相同版本的产品 号可以互相升级。

蒂姆的回答有 95% 正确。我真的不建议只更改第四个版本。也就是说,有一种方法可以减轻上面提到的“意外降级”错误。编写一条不检测相同版本的 MajorUpgrade 规则。然后编写一个自定义操作,对第四个字段中更大的产品进行额外检查并共享您的 UpgradeCode。将检测到的 ProductCode 设置或附加到 ActionProperty。在FindRelatedProducts 和RemoveExistingProducts 之间安排此自定义操作,您将获得Windows Installer 从未设计过的所需行为。

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

更改产品代码时可以将1.0.0.0升级到1.0.0.1吗? 的相关文章

  • 如何制作一个简单包装 EXE 文件的 MSI

    经过大量实验后 我得出的结论是 Windows Installer 是一种糟糕的技术 但客户需要 MSI 文件 那么 如何创建一个 MSI 文件 将 EXE 文件提取到临时目录 并使用与传递给 EXE 文件相同或相似的选项运行它 MSI 的
  • Wix - 自定义安装目录

    我使用的是 Wix 3 x 用户应该能够选择目标目录 我的Setup wxs目前是这样的 http pastebin com uH1EjbDQ http pastebin com uH1EjbDQ 询问用户自定义目标目录的最简单方法是什么
  • 将构建参数传递给 .wxs 文件以动态构建 wix 安装程序

    我是一名学生开发人员 我已经为我现在工作的公司构建了几个安装程序 所以我对WIX还是比较熟悉的 我们最近决定拥有一个构建服务器来自动构建我们的解决方案 它构建调试和发布以及混淆 和非混淆 项目 你真的不需要理解这些 您需要了解的是 我有相同
  • WIX 目标文件由 LFN 系统上的两个不同组件安装在 [ProgramFilesFolder] 中:这会破坏组件引用计数

    我正在使用 WIX 通过 TFS MSBuild 生成 msi 破坏构建的错误 不仅仅是警告 是 ICE30 The target file eiycriw9 exe MyApp exe is installed in ProgramFil
  • MSI 安装程序,64 位操作系统,写入 \windows\system32\inetsrv 文件夹

    在 Windows Server 2008 64 位上 我需要一个 msi 安装程序文件来将一些文件写入 windows system32 inetsrv 文件夹 这些文件是一些 XML 架构验证文件 C XmlReaderSettings
  • 执行卸载之前停止 Windows 服务

    我有一个安装程序 它安装了一些组件 包括 Windows 服务 安装后它将启动使用 CustomAction 安装到系统上的服务 当我卸载应用程序时出现问题 安装程序要求先关闭应用程序 然后再继续 我创建了一个将停止服务的自定义操作 并通过
  • 是否有其他方法可以访问延迟自定义操作中的会话详细信息?

    我有一个自定义操作 需要获取以下值才能将某些部分从安装文件夹复制到 VS2010 文件夹 VS2010目录路径 VS2010DEVENV财产 安装路径 INSTALLLOCATION财产 为了提供足够的权限 我将自定义操作设置为Execut
  • 为什么最新的 Python 3.8.x 版本不提供 Windows 安装程序?

    我需要在Windows计算机上安装Python 3 8并希望使用最新的小版本3 8 12 https www python org downloads release python 3812 官方发布网页提供了源代码的 tarball 文件
  • 找出是什么原因导致可怕的“网站遇到意外错误。请稍后再试。”信息

    在进行 drupal 6 到 7 升级时 我收到了不太有用的消息 网站遇到意外错误 请稍后再试 每次我进入某些页面时 例如 管理 配置 找出导致致命错误的原因以便我可以修复它的最佳方法是什么 我现在能想到的就是开始禁用贡献的模块 直到该页面
  • Wix 为整个树生成单个组件 id

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

    我正在编写一个 Python 脚本 将大量 Windows 安装程序索引到数据库中 我想知道如何使用在 Linux 上运行的 Python 从 EXE MSI 和 ZIP 文件中读取元数据信息 公司 产品名称 版本等 Software 我在
  • 如何禁用恢复 Visual Studio 安装程序项目丢失的文件?

    我创建了一个使用来自暴雪 API 服务的图像的程序 我为该程序创建了一个安装程序 并将图像放置在 用户的应用程序数据文件夹 中 安装非常好 图像被解压到文件夹 AppData Roaming MyApp 中 如果需要删除图像 程序将从暴雪服
  • WiX - 提交多个属性以推迟自定义操作

    我的 WiX 安装程序在处理延迟 立即自定义操作时遇到问题 请原谅我的英语 我想将用户输入的一些属性交给延迟的自定义操作 我知道我需要立即自定义操作和 CustomActionData 来执行此操作 我就是这样实现的 二进制
  • 手动创建 msix 包,无需 GUI 或 msi 安装程序

    谁能给我提示如何手动定义 msix 包 我的应用程序还没有 msi 包 所以我不能简单地转换它 有没有一种方法可以像配置文件一样创建 我可以手动定义哪些文件需要进入 msix 包 MSIX GUI Creator 也没有给我足够的控制权 非
  • Wix 安装结束后添加多个复选框

    我的 C 应用程序有一个设置 在设置结束时 我添加了一个建议启动应用程序的复选框 效果很好 但我无法添加第二个复选框来提议启动可选安装程序 有我的代码
  • WIX Heat.exe 命令参数 -var 不接受空格?

    我有这个使用所有不变路径的 WIX 命令 并且它不需要系统环境 与此示例不同 http weblogs sqlteam com mladenp archive 2010 02 23 WiX 3 Tutorial Generate filed
  • 如何说服 VS2005 msi 升级?

    我有一个使用 VS2005 用 C 编写的 Windows 服务 安装是通过一个向导调用 msiexec 来安装同样使用 VS2005 创建的 msi 文件 我在生成将从一个版本的服务升级到另一个版本的 msi 文件时遇到问题 向导程序负责
  • 安装引导程序如何检测是否安装了先决条件?

    试图解决这个问题 https stackoverflow com questions 2591384 bootstrapper setup exe says net 3 5 not found but launching msi direc
  • WiX:如何立即重新启动explorer.exe?

    我是软件打包方面的初学者 我正在使用 cpack Wix 我试图找到有关的有用信息或良好文档util 重启资源 但找不到我的问题的任何答案 Issue 我必须安装一个 ShellExtension 它需要在设置一些注册表值后重新启动 exp
  • 良好的 WiX 编辑器 [重复]

    这个问题在这里已经有答案了 我目前正在开发一个使用 WiX 创建 MSI 的项目 我过去在 Sourceforge 上使用 WiXEdit 来管理包含在 WiX 项目中的文件 因为它比直接操作 XML 稍微容易一些 但它仍然有点笨重 有谁知

随机推荐