在已发布的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将文件放在那里,但条目从未添加到数据库中?如果是这样,这是否意味着我可以在数据库中手动添加适当的表关系?
这很令人困惑,因为我在日志中看到了我已发布的早期补丁的相同条目,这些补丁可以正常工作..
答案 0 :(得分:0)
问题在于通过Installshield IDE添加Previous Setup。在添加我的第三个先前设置时,InstallShield将其Order列的值与原始设置的值进行交换,从而创建Microsoft称之为“不常见”(我会说,不正确..)的补丁序列:
http://msdn.microsoft.com/en-us/library/aa372066(v=vs.85).aspx
订单列:目标图像的相对顺序。因为多个 可以将“目标”修补为已升级的图像,“订单”字段提供 一种在补丁变换列表中对变换进行排序的方法。 通常,订单是从最旧到最新的图像。
不确定这是否是由他们设计的。要修复它,我必须手动编辑.ism文件来调整顺序(这不是一个非常易读的模式)。