解决微星ICE03字符串溢出警告

Resolving MSI ICE03 string overflow warning

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

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

据我所知,这是一个可以忽略的毫无意义的警告。 MSI 是 "loosely" 一个关系数据库,根据我多年来的观察,架构并未得到严格执行。例如,我的 FOSS 工具 IsWiX 以以下格式生成文件 ID:

owfGUID

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

odfGUID.GUID

长度为 72 个字符。文件 table 完全有效。当我创作一个非广告快捷方式时,我将其放入 WiX ShorCut 元素中,它创作 [#filekey] 到快捷方式 table 目标列中。

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

我可以告诉你,在我这些年里,我从未见过安装程序因忽略此警告而失败。如果在极端情况下这不是真的,我很乐意接受教育。