2015-12-15 21 views
1

我正在使用InstallShield 2015,但我不认为这是ICE03警告的关键,该警告来自构建结束时的MSI验证步骤。我从其他帖子看到的同样的警告来自于在MSI中以较长的值构建的WiX。发生这种情况是因为我定义了一个自定义操作来将属性设置为长整型值,以便将其他属性值提供给另一个自定义操作。 (我包含的房产名称列表超过了255个字符。)解决MSI ICE03字符串溢出警告

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

+0

ICE03字符串溢出(大于列中允许的长度)是?不是最大值吗?好吧,我明白了,无法删除评论.... – PhilDW

回答

3

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

owfGUID

因为这是一个合并模块此结束是

odfGUID.GUID

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

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

我可以告诉你,在我多年来我从未见过安装程序失败,因为我忽略了这个警告。如果出现这种情况并非如此,我很乐意接受教育。

+0

仅供参考,它似乎对于功能名称很重要。在[这个11岁的职位](https://blogs.msdn.microsoft.com/heaths/2006/06/08/run-ice-validation-and-fix-errors/)Heath Stewart说:“_it更多重要的是,您修复功能表或MsiEnumFeatures功能的字符串溢出警告将仅返回功能部件name_“。 – Paul

+0

很高兴知道。我个人试图保持我的功能名称非常短,并始终处于大写状态。如果有人正在进行无提示安装并使用ADDLOCAL =或REMOVE =我希望功能名称易于记忆和输入。 –