【问题标题】:Create a Patch without 2nd MSI创建没有第二个 MSI 的补丁
【发布时间】:2017-10-31 10:46:18
【问题描述】:

我相信 Patch 的工作原理是通过比较现有的 MSI(第一个)和新的 MSI(第二个 MSI)来创建转换。我有一个客户要求(不要问我为什么)不要创建第二个 MSI,并且还有另一个选项来创建补丁。这可能吗?如果是这样,您能提供详细信息吗?如果没有,您能否提供链接/证明来证明这一点?

【问题讨论】:

  • 你的意思是create a MSP file?
  • 是的。我的意思是创建一个没有第二个 MSI 的 MSP 文件。
  • 如果您创建更新的 MSI 文件,然后使用它来创建补丁,然后给他们补丁,为什么客户会关心?他们从来没有看到第二届 MSI,只是那个补丁。构建补丁是您的内部开发过程,与“要求”无关。

标签: wix windows-installer patch


【解决方案1】:

由于所有文件都只是字节的集合,因此很难证明不可能。但是,Microsoft 记录的唯一一种创建补丁(.msp 文件)的方法涉及调用 patchwiz.dll(可能通过 msimsp.exe)来处理两个或多个安装数据库(.msi 文件)之间的差异。 Creating a Patch Package 更详细地描述了这个过程。

如果您通过了这一点,跳过 msimsp.exe/patchwiz.dll 从而避免在此处创建升级的 .msi 文件,您仍然需要创建 transform substorage 中的转换。 generate a transform(.mst 文件)的唯一记录方式仍然需要两个安装数据库,因此您需要第二个 .msi 文件来执行此步骤。

如果你知道如何在没有一对 .msi 文件的情况下生成 .mst 文件,那么理论上也可以将它们全部打包成一个 .msp 文件。但是,我还没有看到足够多的文档来说明如何做到这一点。

(指向该文档的指针将不胜感激,无论是作为 cmets、编辑还是替代答案。)

【讨论】:

  • 我很确定我已经创建了一个 MSI,但打开了一个 MSI 数据库,在内存中对其进行更改,然后生成 MST。这就是 ORCA 所做的。我怀疑 Ven 可能想看看 InstallShield 的 QuickPatch 项目类型。
  • 当然,但我认为所有这些场景都会创建第二个 .msi 文件。尽管它们可能是暂时的,并且在您考虑之前已被删除。基本概念是提议的要求对我来说毫无意义。您不需要分发它,但仍然必须制作 .msi 文件。
  • 补丁只是一种交付机制,用于已经在工作的升级 - 我知道我几年前第一次看到补丁时就读到了这个声明。当时我对这个事实感到非常惊讶。鉴于这一事实,如果没有两个 MSI 文件进行比较,就不可能生成补丁?正如 Michael 所说,必须至少生成一个临时 MSI 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-12
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多