Windows installer 解析MSI ICE03字符串溢出警告

Windows installer 解析MSI ICE03字符串溢出警告,windows-installer,custom-action,Windows Installer,Custom Action,我使用的是InstallShield 2015,但我不认为这是ICE03警告的关键,该警告来自构建结束时的MSI验证步骤。我从其他帖子中看到,同样的警告出现在MSI中具有长值的WiX构建中。这是因为我定义了一个自定义操作,将属性设置为长值,以便为另一个自定义操作提供许多其他属性值。(我包含的属性名称列表超过255个字符。) 我知道这只是一个警告,理论上我可以忽略它,但有什么意义呢?为什么这里会有一个警告,假设无知不是理想的解决方案,那么理想情况下,我应该怎么做?我是否应该将自定义操作更改为设置C

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


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

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

owfGUID

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

odfGUID.GUID

它有72个字符长。完全有效的文件表。当我编写一个非广告shorcut时,我将其放入WiX shorcut元素,它将[#filekey]编写到快捷表目标列中

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


我可以告诉你,在我这么多年的时间里,我从未见过安装程序失败,因为我忽略了这个警告。如果有一个边缘案例是不正确的,我希望接受教育。

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

owfGUID

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

odfGUID.GUID

它有72个字符长。完全有效的文件表。当我编写一个非广告shorcut时,我将其放入WiX shorcut元素,它将[#filekey]编写到快捷表目标列中

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


我可以告诉你,在我这么多年的时间里,我从未见过安装程序失败,因为我忽略了这个警告。如果边缘情况不是这样,我希望接受教育。

ICE03字符串溢出(大于列中允许的长度)是吗?不是最大值吗?好的,我明白了,不能删除注释…ICE03字符串溢出(大于列中允许的长度)是吗?不是最大值吗?好的,我明白了,不能删除评论……仅供参考,这似乎对功能名称很重要。关于Heath Stewart,他说:“更重要的是修复功能表的字符串溢出警告,否则MsiEnumFeatures函数将只返回功能名称的一部分”。很高兴知道。我个人尽量让我的功能名称非常简短,并且总是大写。如果有人正在进行静默安装并使用ADDLOCAL=或REMOVE=我希望功能名称易于记忆和键入。仅供参考,这似乎对功能名称很重要。关于Heath Stewart,他说:“更重要的是修复功能表的字符串溢出警告,否则MsiEnumFeatures函数将只返回功能名称的一部分”。很高兴知道。我个人尽量让我的功能名称非常简短,并且总是大写。如果有人正在进行静默安装并使用ADDLOCAL=或REMOVE=我希望功能名称易于记忆和键入。