Search code examples
windows-installercustom-action

Resolving MSI ICE03 string overflow warning


I'm using InstallShield 2015, but I don't think that's key for this ICE03 warning, which comes from an MSI validation step at the end of the build. The same warning, I see from other posts, comes in WiX builds with long values in the MSI. It's occurring because I have a Custom Action defined to set a property to a long value for the purpose of providing many other property values to another custom action. (The list of property names I am including is longer than 255 characters.)

I know this is only a warning, and I can theoretically ignore it, but what's the point? Why is there a warning here, and what, ideally, should I do about it, assuming ignorance is not the ideal solution? Should I change the custom action to a DLL custom action that sets the property for CustomActionData? Or is this warning really just pointless and should be ignored?


Solution

  • AFAIK it's a pointless warning that can be ignored. MSI is "loosely" a relational database and from my observations over the years schema is not strictly enforced. For example, my FOSS tool IsWiX generates file ID's in the format:

    owfGUID

    Because this is a merge module this ends up being

    odfGUID.GUID

    which is 72 char long. Perfectly valid of the file table. When I author a non-advertised shorcut, I put this into a WiX ShorCut element it authors [#filekey] into the Shortcut table target column.

    This is logically sound as the docs tell you to do this. The problem is this is now 75 char long and triggers an ICE 03 error.

    I can tell you that in all my years I've never ever seen an installer fail because I ignored this warning. If there is an edge case where this is not true, I'd love to be educated.