【发布时间】:2023-09-17 00:23:01
【问题描述】:
在已经发布的 patch1 中,我添加了一个在原始基础包中不存在的文件。那工作得很好。在 patch2 中,它也运行良好。然而,在 patch3 中,这个文件并没有内置到补丁中。 使用 Orca 的 View Patch,当我将 patch3 应用到基本 MSI 时,我确实没有看到新文件“添加”到 PatchCreation.log 的文件表中。然而,在前两个补丁中,我在 File 表中看到了这个“添加”条目,正如预期的那样。
在问题补丁的 PatchCreatin.log 文件中: 我看到两个与此文件相关的“比较文件”条目,每个条目对应于以前的未压缩 MSI 版本:
INFO Comparing Files: PathTo3.0.1UncompressedMsi\file1.exe PathToLatestUncompressedMsi\file1.exe...
INFO Different sizes...
INFO File Key: file1.exe.e is modified
INFO Comparing Files: PathTo3.0.2UncompressedMsi\file1.exe PathToLatestUncompressedMsi\file1.exe...
INFO Different sizes...
INFO File Key: file1.exe.e is modified
使用我构建并已发布的第二个补丁(再次,它运行良好),我看到了类似的日志记录,关于比较最新 MSI 中的文件与第一个补丁 MSI 中的文件:
INFO Comparing Files: PathTo3.0.1UncompressedMsi\file1.exe PathToLatestUncompressedMsi\file1.exe...
INFO Different sizes...
INFO File Key: file1.exe.e is modified
就 PatchWiz 对“不同大小”和“已修改”的处理方式而言,我不确定日志条目的含义。我认为这意味着它将包含在补丁中。然而事实并非如此。 是否甚至可以在这些 patchwiz 日志中搜索一个条目,以确认类似“啊,我看到你想要在补丁中添加这个,我会添加它” ??
我还确认所有补丁的未压缩 MSI 显示,使用 Installshield 的 MSI Diff,文件 (file1.exe.e) 已添加到文件表中。所以至少在那个方面, 用于创建补丁的未压缩 MSI 版本似乎按预期工作。
即使我们无法弄清楚这里出了什么问题,还有其他方法可以将文件“强制”到补丁包中吗?注意:我没有使用“二进制”补丁,我正在使用包含完整文件补丁
更新:物理文件实际上可能在补丁中,因为当我安装时日志显示:
Note: 1: 2715 2: file1.exe
意思是
The specified File key ('[2]') not found in the File table.
这是否意味着 makecab 将文件放在那里,但是条目从未添加到数据库中?如果是这样,这是否意味着我可以在数据库中手动添加适当的表关系?
这令人困惑,因为我在日志中看到了我已经发布的早期补丁的相同条目,这些补丁确实可以正常工作..
【问题讨论】:
-
我认为这取决于该文件是否具有文件版本。如果它是版本化的,那么补丁工具会将新版本中的版本与基础版本进行比较,我很确定如果版本较低,它们将不会包含它。那是因为应用补丁时文件版本控制规则不会替换已安装的文件,因此安装补丁没有意义。
-
我以前遇到过,但这次没有
标签: windows-installer installshield patch