解决MSI ICE03字符串溢出警告

时间:2015-12-15 14:01:26

标签: windows-installer custom-action

我使用的是InstallShield 2015,但我不认为这个ICE03警告的关键是来自构建结束时的MSI验证步骤。我在其他帖子中看到的相同警告来自于MSI中具有长值的WiX构建。之所以发生这种情况是因为我定义了一个自定义操作,将属性设置为long值,以便为另一个自定义操作提供许多其他属性值。 (我所包含的属性名称列表超过255个字符。)

我知道这只是一个警告,我理论上可以忽略它,但重点是什么?为什么这里有警告,理想情况下,我应该做些什么,假设无知不是理想的解决方案?我应该将自定义操作更改为设置CustomActionData属性的DLL自定义操作吗?或者这个警告真的没有意义,应该被忽略?

1 个答案:

答案 0 :(得分:3)

AFAIK这是一个无可指责的警告,可以忽略。 MSI是一个“松散”的关系数据库,根据我多年来的观察,架构并没有严格执行。例如,我的FOSS工具IsWiX以以下格式生成文件ID:

owfGUID

因为这是一个合并模块,所以最终是

odfGUID.GUID

这是72个字符长。完全有效的文件表。当我创作一个非广告的shorcut时,我将它放入一个Wi​​X ShorCut元素中,它将[#filekey]创建到Shortcut表目标列中。

这在逻辑上是正确的,因为文档会告诉您这样做。问题是现在这是75个字符长并触发ICE 03错误。

我可以告诉你,在我这些年里,我从未见过安装程序失败,因为我忽略了这个警告。如果有一个边缘情况,这不是真的,我很想接受教育。