ICE30

Windows Installer

ICE30

ICE30 validates that the installation of components containing the same file never installs the file more than once in the same directory.

ICE30 goes to every component in the Component table and then determines the component's target directory from the Directory table. It then checks to see which of these components install to the same target directory. Finally, it uses the File table to verify that none of the files in these components have the same name.

ICE30 checks both long file names (LFN) and short file names (SFN).

ICE30 does not evaluate properties in the resolution of directories because these properties can change at runtime and alter the directory resolution scheme. This means ICE30 can detect file collisions due to directories with the same property in their paths, but does not detect collisions resulting from two properties having the same value.

Result

ICE30 posts an error message for each pair of components that installs the same file to the same directory.

Example

The example shown returns each of the following errors twice.

ICE30 error or warning Description
ERROR: The target file 'README.1st' is installed in 'TARGETDIR\PRODUCT' by two different components on an SFN system: 'Component1' and 'Component2'. This breaks component reference counting. Component1 and Component2 both have a file named 'READEME.1st'.

When using short file names, the installer installs both Dir1 and Dir2 to the same directory, TARGETDIR\PRODUCT.

ICE30 generate two errors, one for each file. In an authoring environment that displays error locations, the first error is at one file's entry in the File Table, and the second at the location of the other file.

ERROR: Installation of a conditionalized component would cause the target file 'README.1st' to be installed in 'TARGETDIR\COMMON TOOLS' by two different components on an LFN system: 'Component3' and 'Component4'. This would break component reference counting. Component4 has an entry in the Condition column of the Component table and Component3 does not.

If VersionNT is True, Component4 is installed, and there a collision with the Readme.1st always installed by Component3.

ICE30 generates 4 errors, one pair for SFN, one for LFN.

WARNING: The target file 'README.1st' might be installed in 'TARGETDIR\COMMON TOOLS' by two different conditionalized components on an SFN system: 'Component4' and 'Component5'. If the conditions are not mutually exclusive, this will break the component reference counting system. Because Component4 and Component5 both have entries in the Condition column of the Component table this file collision may not occur.

ICE30 only posts a warning because the conditions must be determined at the time of the installation.

ICE30 generates 4 warnings, one pair for SFN, one for LFN.

 

Component Table (partial)

Component Directory Condition
Component1 Dir1
Component2 Dir2
Component3 Dir3
Component4 Dir3 VersionNT
Component5 Dir3 Version9X

 

Directory Table

Directory Parent_Directory DefaultDir
SOURCEDIR   TARGETDIR
Dir1 SOURCEDIR Product|Component1 Product:.
Dir2 SOURCEDIR Product:.
Dir3 SOURCEDIR Common|Common Tools:

 

File Table (partial)

File Component_ FileName
File1 Component1 README.1st
File2 Component2 README.1st
File3 Component3 README.1st
File4 Component4 README.1st
File5 Component5 README.1st

 

See Also

ICE Reference

Send comments about this topic to Microsoft

Build date: 8/13/2009

© 2009 Microsoft Corporation. All rights reserved.