构建修补程序不包含先前修补程序包中添加的文件

时间:2014-10-22 20:56:01

标签: windows-installer installshield patch

在已发布的patch1中,我添加了原始基本包中不存在的文件。这工作得很好。在patch2中,它也运行良好。但是,在patch3中,此文件不会内置到修补程序中。 使用Orca的View Patch,我将看到新文件'添加'到File表中在PatchCreation.log中,当我将patch3应用到基MSI时。然而,在前两个补丁中,我看到这个'添加了'按预期在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将对“不同大小”和“被修改”做什么意味着什么。我认为这意味着它将包含在补丁中。但事实并非如此。 甚至可以在这些补丁日志中搜索条目,确认类似"啊啊,我看到你想要补丁中的这个,我会添加它" ??

我还确认所有补丁的未压缩MSI显示,使用Installshield的MSI Diff,文件(file1.exe.e)在File表中添加。至少那方面, 发布补丁的未压缩MSI版本似乎正在按预期工作。

即使我们无法弄清楚这里出了什么问题,还有其他办法可以强制使用吗?另一种方式将文件放入补丁包中?注意:我没有使用'二进制文件'补丁,我正在使用包括完整文件补丁

更新:物理文件可能实际上在补丁中,因为当我安装日志时显示:

Note: 1: 2715 2: file1.exe

表示

The specified File key ('[2]') not found in the File table.

这是否意味着makecab将文件放在那里,但条目从未添加到数据库中?如果是这样,这是否意味着我可以在数据库中手动添加适当的表关系?

这很令人困惑,因为我在日志中看到了我已发布的早期补丁的相同条目,这些补丁可以正常工作..

1 个答案:

答案 0 :(得分:0)

问题在于通过Installshield IDE添加Previous Setup。在添加我的第三个先前设置时,InstallShield将其Order列的值与原始设置的值进行交换,从而创建Microsoft称之为“不常见”(我会说,不正确..)的补丁序列:

http://msdn.microsoft.com/en-us/library/aa372066(v=vs.85).aspx

  

订单列:目标图像的相对顺序。因为多个   可以将“目标”修补为已升级的图像,“订单”字段提供   一种在补丁变换列表中对变换进行排序的方法。   通常,订单是从最旧到最新的图像。

不确定这是否是由他们设计的。要修复它,我必须手动编辑.ism文件来调整顺序(这不是一个非常易读的模式)。