What does ICE60 check?
ICE60 checks that files in the File table meet the following condition:
If the file is not a font and has a version, then it must have a language.
ICE60 checks that no versioned files are listed in the MsiFileHash table.
Failure to fix a warning reported by ICE60 generally leads to a file being needlessly reinstalled when a product repair is done. This happens because the file to be installed in the repair and the existing file on disk have the same version (they are the same file) but different languages. The file table lists the language as null, but the file itself has a language value in the resource. Based on the file versioning rules, the installer favors the file to be installed, so it is recopied needlessly.
When does ICE60 show up?
ICE60 posts a warning or an error if a file in the File table that is not a font and has a version, does not have a language.
ICE60 posts an error if a file listed in the MsiFileHash table is versioned.
How can I fix ICE60?
If ICE60 shows up due to a missing language code, add a language to the file in the File table. Files should have language values stored in the version resource whenever possible. If a file is language neutral, use the LANGID 0.
If a versioned file is listed in the MsiFileHash table, remove the record from the table.