【问题标题】:How to include files that changed but have the same version number into MSP using WiX Pyro?如何使用 WiX Pyro 将更改但具有相同版本号的文件包含到 MSP 中?
【发布时间】:2014-06-12 14:31:19
【问题描述】:

我使用 WiX Pyro(using purely WiX toolset) 创建了一个 MSP 补丁文件。但似乎创建的 MSP 文件不包括内容更改但版本号未更改的文件。正如我认为的那样,这些文件中的大多数实际上并没有在主要内容上进行更改,而只是由 Visual Studio 重建。因此,Pyro 的行为可能是可取的。

但是我的客户问我为什么最新的 MSI 安装的文件和 MSP 补丁更新的文件不同。所以,我想知道有什么方法可以将这些文件包含到 MSP 补丁中,或者我可以告诉我的客户这两个文件集(最新的 MSI、旧的 MSI + MSP)是相同的,这样您就可以安全地使用该产品了吗? (当然,我觉得我的文件版本管理很差,不系统,但是微星的版本规则对我来说太严格了,有点不灵活。)

【问题讨论】:

  • 也许您可以将 Visual Studio 设置为自动递增每个程序集的最后一个版本号(内部版本号)? 1.0.0.* 或类似的版本。

标签: wix windows-installer msp


【解决方案1】:

Windows Installer 文件更新规则就是这样,我认为您不会更改它们。标准规则是您告诉 Windows 通过增加版本来更新文件,然后在安装时更高版本将替换更低版本。这就是生成补丁的工具也使用版本规则的原因——为什么它们应该包含没有更高版本的文件?服务包、补丁、修补程序等都基于文件版本工作。

如果您想使用您喜欢的任何文件版本,请停止使用补丁并进行重大升级,尽早执行 RemoveExistingProducts,这样您就相当于卸载所有旧文件,然后安装所有新文件.

顺便说一句,如果这些是托管代码文件,并且您认为增加文件版本意味着增加程序集版本,那么使用 AssemblyFileVersion 增加文件版本并保留程序集版本。

【讨论】:

  • 菲尔,REINSTALLMODE=emus 能用吗? msdn.microsoft.com/en-us/library/aa371182(v=vs.85).aspx。我认为会,但不确定我是否会推荐这种方法——默认命令行为 omus 可能太容易出错,除非补丁包含在具有默认 emus REINSTALLMODE 的 patch.exe 中?
  • 自动增加程序集构建版本号可能更好。不确定文件替换是否仅适用于 3 位数字 - 就像升级表和 ProductVersion 一样。
  • 好的,那么创建msp的时候就没有办法绕过msi版本规则了吧?
  • 基本问题是版本文件更新是基于递增的文件版本。许多工具都依赖于此,并且不打扰包含该文件。这是没有人能给你一个好的答案的情况之一,因为没有人这样做。补丁基于版本工作。只有在进行重大升级时,降级版本才是安全的。我见过有人强制降级文件版本并遇到各种问题,例如通过强制系统上的旧版本来降级 Microsoft 安全修复程序,忘记每个文件都会降级。
猜你喜欢
  • 2018-06-20
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多