You are on page 1of 11

Internal Consistency Evaluators – ICEs

Internal consistency evaluators, also called ICEs, are custom actions written in VBScript, JScript, or as a
DLL or EXE. When these custom actions are executed, they scan the database for entries in database
records that are valid when examined individually but that may cause incorrect behavior in the context of
the whole database.

ICE 01
Message Solution
1

ICE 02
Message Solution
1 File: ‘…’ not found in File Table. Ice02.html Under the Component Table, change the attribute to
Component KeyPath ODBCDataSource 32 for the ODBCDataSource
Evaluation: ICE02

ICE 03
Message Solution
1 ICE Internal Error 1149. API Returned: 1615.
2 Error 2228: ,_FtrRef, SELECT ‘Table’,
‘Column’ FROM ‘_FtrRef’ WHERE ‘Table’ =
‘Property’ AND ‘Colomn’ = ‘Property’
3 String overflow (greater then length permitted There is more data inserted in the field then
in column); Table: “…”. Column: Target permitted.(more than 255 characters). This usually
Key(s): “…” happens when a VBScript is added to the
installation. In most cases it will just function with
the error.
4 Invalid “…” string: Table: “…”, Column: “…”, There is no legal string entered for the given key.
Key(s): “…” Commonly an invalid character triggers this error,
i.e. a filename with non-English characters like ä, ë
or ü. If possible change these characters to a, e or u.
5 Not a valid foreign key; Table: “-_Validation”, Check the _Validation table for the following
Column: “…”, Key(s): “…” entries:
WiseReleaseMedia | MediaName |N
WiseReleaseMedia | Release_ | N
WiseReleaseMedia | DiskID | Y
WiseReleaseMedia | Size | Y
WiseReleaseMedia | Attributes | Y
6 Not a valid foreign key: Table: “Shortcut:” The Icon_ column in the shortcut table must match
Column: “Icon*.*” the exact entry (Icon name) in the Icon table.
Not a valid foreign key; Table: Class, Column: The incorrect icon ID was in the Icon_ column.  
Icon_, Key(s): classid > . < context > . < Lookup the correct Icon_ id in the Icon table and
component_ > in Class table copy it to the Icon_ column in the Class table. The
exact path can be copied.
7 Not a valid foreign key; Table: The value of the Datasource_ column in the
ODBCSourceAttirbute, Column: DtaSource_, ODBCSourceAttribute table is pointing to a
Key(s): primarykey in the ODBCDataSource table which
doesn’t exist.
8 Not a valid foreign key: Table; Class, Column: Smartui2.ocx is used as an example.
AppID_, Key(s): Value in te AppID column should only be a GUID
{GUID}.InprocServer32.smartui2.ocx_COM value that links to the AppID table.
Check the compnents and its gien name as in the
error message.This error may occur if you made
changes in the package or in the tables.
9 Not a valid foreign key; Table: File, Column: There is a file in the file table that is a resource of
Component_, Key(s): the PCDLIB32.DLL174 component, but you don’t
PCBLIB32.DLL174ice03.html File have a component in the component table with this
Component_PCDLIB32.DLL174 name. Create component.
10 Invalid identifier; Table: ProgId, Column: Icon_ An optional foreign key into the Icon table
Icon_, Keys(s): idoc_auto_file ProgId that specifies the icon file associated with this
Icon_idoc_auto_file ProgId. This is written under the DefaultIcon key
associated with this ProgId. This column must
beNull for a version independent ProgId.
11 Invalid identifier; Table: RemoveFile, Column: Check the Component ID.
Component_, Key(s): '.....'. Found in
RemoveFile table.
12 Invalid Filename; Table: “…”, Column: “…”, There is an invalid name entered for a file.
Filename, Key(s): “…”
13 Invalid Language Id; Table: File, Column: Look at the language set against other files - either
Language, Key(s): File '....' in File table. change the entry to the same language as other
files, change it to 0 or remove the language
completely.
14 Invalid Filename/usage of wildcards; Table: The file was down to be removed, but was not in
“…”, Column: “…”; Filename, Key(s): “…” the File table to be added, so removed:
  (a)   the entry in RemoveFile table
  (b)   the entry in Component table
Or ensure that the file is in the File table if it is
required.
15 Invalid Full Path; Table: “Directory, Column: In the _Validation table change the value of the
“DefaultDir, Key(s): ProfilesFolder Category column back to DefaultDir.
16 Invalid property string; Table: directory, Go to Directory table, check if the Column
Column: DefaultDir, Key(s): DefaultDir also has the shortfile name:
ProgramFilesFolder i.e.
commonFilesFolder CommonAppDataFolder
AppDataFolder .:APPLIC~1|Application Data.
CommonAppDataFolder etc. If not add the shortfile name.
17 Invalid filename/iniFile table; Table: iniFile; Ini file names contain spaces inside the shortfile
Column: File name Delete the spaces inside the short file names.
Leave the long file names alone.
18 Invalid format string; Table: Registry, Column: Check the syntax of the Key 'StringName' in
Key, Key(s): "StringName" Registry table. Column Key - may be a missing these brackets
{....} or they need to be closed in that string.
19 Invalid GUID string. Be sure GUID is all UPPER case
20 Not a valid foreign key; Table: ProgId, 'foreign key' will be a class that has not been listed
Column: Class_, Key(s): '....' in ProgId table. in the Class table

ICE 04
Message Solution
1 File: MyFile, Sequence: 210 Greater Validates that the sequence number of every file in the
Than Max Allowed by Media Table. file Table is less than or equal to the largest sequence
Ammount in the media table. number in the LastSequence column of the Media Table.
Check the number of files in the sequence column and
adjust this to last entry in the media table.
ICE 08
Message Solution
1 (Duplicate GUIDS) 2 components with Change the GUID of one of these components.
the same GUIDs.

ICE 09
Message Solution
1 Component “…” is a non-permanent On the component mentioned, the option “Always
system component increment shared .DLL count” must be activated. If the
component points to a Merge Module the error can be
ignored. This is an acceptable error, however to make
the component a permanent system component then give
it a value of 24 in the Attrib column

ICE 15

Message Solution
1 MIME Type 'AppName' referenced by 'AppName' does not map to an extension with a circular
extension 'Ext'. reference Extension Remove the entry from MIME
column in Extension table.

ICE 18

Message Solution
1 KeyPath for Component “…” is Directory Create a new row in the table “CreateFolder”, select the
“…”. The Directory is not listed in the mentioned Directory and the mentioned Component.
CreateFolders table

ICE 19

Message Solution
1 Extension: 'imgr' advertises component: The component is empty or might show empty in view
'imgr'. This component cannot be of files/registry, but may contain other information like
advertised because the KeyPath type extensions/ini files. In case of an extension being there,
disallows it. move it to a different component. In the extensions table
http://dartools/iceman/ice19.html choose a different component which has a key path and
Extension Component_imgr imgr delete the empty component.

ICE 21

Message Solution
1 Component: 'MyComponent' does not Add an entry to FeatureComponents table with the
belong to any Feature in following entries:
FeatureComponents table.   (a)   Feature_ = A Present Feature
  (b)   Component_ = 'MyComponent'
ICE 24

Message Solution
1 UpgradeCode: ' < None > 'is an invalid Modify the UpgradeCode field entry in Property table -
Windows Installer GUID in Property use GUID Generator to generate a unique id, and copy
table. this id into the UpgradeCode field

ICE 27

Message Solution
1 Unknown action: 'Action1' of There is an action listed in the sequence table indicated
InstallExecuteSequnence table. Not a that is not a standard actions , a custom action listed in
standard action and not found in the CustomAction table , or a dialog box listed in the
CustomAction or Dialog tables. Dialog table .

ICE 30

Message Solution
1 Installation of Component “…” would Go to the given component. In that component there are
cause the target file “…” to be installed two files with the same name. One of those files must be
twice in “…” on a SFN/LFN system. This deleted.
will break the component reference
counting system.
2 Installation of a conditionalized The This file is installed by two components in the same
component would cause the target file directory. It is possible that the file also exists in a merge
“…” to be installed in “….” By two module. Delete the file ot of the given component.
different components on a LFN system:
“…” and “…”. This would break
component reference counting.
3 The Target file “…” might be installed in The file is installed/exists by/in two different merge
“…” by two different conditionalized modules. This error can be ignored, because the
components on a SFN/LFN system: “…” reference counting system setting is done by the merge
and “…”. If the conditions are not module.
mutually exclusive, this will break the
component reference counting system.

ICE 32

Message Solution
1 Possible Mis-Aligned Foreign Keys Edit the ModuleSignature and Modulecomponents table
ModuleSignature.1 = s72 schema and ensure that both columns (‘1’ and
Modulecomponents.ModuleID = s72 ‘ModuleID’) have the same string length.

ICE 33

Message Solution
1 Reg Key “…” is used in an unsupported This error is usually generated by a merge module, if
way. This key need not to be written as it this error is generated by a merge module, it can be
already exists in the system. ignored.
This entry may overwrite a value created through that
table. Various
  (a)   check Verb table for extensions
  (b)   check Extensions table for same extensions
  (c)   copy the value from the Registry table to the
Argument column in the Verb table
  (d)   delete the entry from the Registry table
2 Reg Key “…” is used in an unsupported This entry may overwrite a value created through that
way. Typelib HELPDIR should be table. Registry table
registered via the Typelib Table. This   (a)   add an entry to the Typelib table
entry may overwrite a value created   (b)   delete the entry from the Registry table
through that table.
3 Reg key “…” is used in an unsupported In the registry path HK_Classes_Root\Typelib there are
way. Typelib should be registered via the several key’s that also exist in the Typelib table. The
Typelib table – this key is automatically key’s that exist in that table can be deleted from the
written during typelib registration. registry. If the error is generated by a merge module, it
can be ignored.
4 Reg key “…” is used in an unsupported In the registry path HK_Classes_Root\ there are several
way. CLSID – ProgId should be key’s that also exist in the ProgId table. The key’s that
registered via the Class and ProgId tables. exist in that table can be deleted from the registry. All
This entry may overwrite a value created sub-key’s can also be deleted. If the error is generated by
through those tables. a merge module, it can be ignored.
5 Reg key “…” is used in an unsupported In the registry path HK_Classes_Root\ there are several
way. ProgId – CLSID associations should key’s that also exist in the ProgId table. The key’s that
be registered via the ProgId and Class exist in that table can be deleted from the registry. All
tables. This entry may overwrite a value sub-key’s can also be deleted. If the error is generated by
created through those tables. a merge module, it can be ignored.
6 Reg key “…” is used in an unsupported This entry may overwrite a value created through that
way. CLSID contexts should be table
registered via the Class table. This entry   (a)   add an entry to the Class table
may overwrite a value created through   (b)   delete the entry from the Registry table
that table. If in one of the sub-keys there is a value that begins
with “[!” or there is a name of a DLL or OCX
mentioned then that DLL or OCX should be set to
registers itself.
7 Reg key “…” is used in an unsupported In the registry path HK_Classes_Root\CLSID there are
way. CLSID DefinprocHandler should be several key’s that also exist in the Class table. The key’s
registered via the Class table. This entry that exist in that table can be deleted from the registry.
may overwrite a value created through All sub-key’s can also be deleted. If the error is
that table. generated by a merge module, it can be ignored.
If in one of the sub-keys there is a value that begins
with “[!” or there is a name of a DLL or OCX
mentioned then that DLL or OCX should be set to
registers itself.
8 Reg key “…” is used in an unsupported In the registry path HK_Classes_Root\CLSID there are
way. CLSIDs should be registered via the several key’s that also exist in the Class table. The key’s
Class table. This entry may overwrite a that exist in that table can be deleted from the registry.
value created through that table. All sub-key’s can also be deleted. If the error is
generated by a merge module, it can be ignored.
If in one of the sub-keys there is a value that begins
with “[!” or there is a name of a DLL or OCX
mentioned then that DLL or OCX should be set to
registers itself.
9 Reg key “…” is used in an unsupported In the registry path HK_Classes_Root\ there are several
way. Version Independent ProgId should key’s that also exist in the ProgId table. The key’s that
be registered via the ProgId table. This exist in that table can be deleted from the registry. All
entry may overwrite a value created
through that table. sub-key’s can also be deleted. If the error is generated by
a merge module, it can be ignored
10 Reg key “…” is used in an unsupported In the registry path HK_Classes_Root\ there are several
way. ProgId should be registered through key’s that also exist in the ProgId table. The key’s that
the ProgId table. This entry may exist in that table can be deleted from the registry. All
overwrite a value created through that sub-key’s can also be deleted. If the error is generated by
table. a merge module, it can be ignored.
11 Reg key '....' is used in an unsupported This entry may overwrite a value created through that
way. Shell extension verbs information table. Various
should be registered via the Verb table.   (a)   check Verb table for extensions
  (b)   check Extensions table for same extensions
  (c)   copy the value from the Registry table to the
Argument column in the Verb table
  (d)   delete the entry from the Registry table
Reg Key '....' is used in an unsupported This entry may overwrite a value created through those
way. ProgId - Icon associations should be tables
registered via the ProgId and Icon tables.

ICE 36

Message Solution
1 Icon Bloat. Icon '....' is not used in the If the icon can be used in either the Class, Shortcut or
Class, Shortcut, or ProgID table. This ProgId tables, then use it; otherwise delete it as it?s not
adversely affects performance. required

ICE 38

Message Solution
1 Component “…” installs to user profile. It (a)   find all occurrences of this component - usually in
must use a registry key under KHCU as CreateFolder table (along with Component table and
its keypath, not a file. FeatureComponent table)
  (b)   add an entry to the Registry table with the
following details:
       Reg       = Regisrtyxxx Root      = 1 (for HKCU) 2
(for HKLM)
       Key       = Software\xxxxxx\Directories
       Name    = component GUID
       Value    = directory id
       Comp    = component id
  (c)   copy the Registry id into the KeyPath column of
the component, in the Component table
  (d)   change the 0 in Attributes column to 4
2 Component '....' installs to user profile. It Find all occurrences of this component - if in Shortcut
must use a registry key under HKCU as table (along with Component table and
its KeyPath. The KeyPath is currently FeatureComponent table)
NULL   a)    add an entry to the Registry table with the
following details:
       Reg       = Featurexxx Root      = 1 (for HKCU) 2
(for HKLM)
       Key      = Software\xxxxxxx\Shortcuts
       Name    = component GUID
       Value    = shortcut id
       Comp    = component id
  b)    copy the Registry id into the KeyPath column of
the component, in the Component table  

Find all occurrences of this component - if in File table


(along with Component table and FeatureComponent
table)
  (a)   add an entry to the Registry table with the
following details:
       Reg       = Featurexxx
       Root      = 1 (for HKCU)
       Key       = Software\xxxxxx\Files
       Name    = component GUID
       Value    = file id
       Comp    = component id
  (b)   copy the Registry id into the KeyPath column of
the component, in the Component table  

Find all occurrences of this component - if in Registry


table

ICE 39

Message Solution
1 The file “…” is explicitly marked If the mentioned file is within a Merge Module this error
compressed, but the Summary can be ignored.
Information Stream already specifies that
the whole install is compressed. This
might not be the behavior you want.

ICE 43

Message Solution
1 Component “…” has non-advertised Put one Current_User registry key under the mentioned
shortcuts. It Should use a registry key component and set that registry key as the keypath or
under HKCU as its KeyPath, not a file. Create a dummy regkey with a value of 1 for HKCU.
Change the attributes in the component table to 4, add
the new dummy key as the key path for this component.
Add the component in the registry table as the
component
2 Reg Entry “…” is not of type REG_SZ on In the Component where Reg Entry “…” resides set the
Windows 95 Systems. Make sure the condition to “NOT Version9x”.
component is conditionalized to never be
installed on Win95 machines.

ICE 45

Message Solution
1 Row ‘Resume_Install_Dialog.InstallNow They should be 0 to ensure compatibility with future
in table ‘Control’ has bits set in the installer versions.
‘Attributes’ column that are reserved.
ICE 46

Message Solution
1 Feature “..” has 2000 components. This This limitation no longer exists with Windows Installer
could cause problems on Win9x systems. version 2.0 or later.
You should try to have fewer than 817
components per feature.
Property ADDLocal defined in Property Delete ADDLocal property and add the property in Caps
table differs from another defined and define as you need e.g. ALL
property only by case.

ICE 47

Message Solution
1 Feature 'My Feature' has xxxx If the install is not on a win95 build this is an acceptable
components. This could cause problems error in most cases
in Win9x systems. You should try to have
fewer than 817 components per feature.

ICE 50

Message Solution
1 The extension of icon “…” for shortcut Shortcut Table
“…” is not “exe” or “ico”. The icon will Check the filename being used for the shortcut, and
not be displayed correctly. ensure it's a valid extension (usually "dll") - if this is the
case, then this is an usually an acceptable error.
2 The extension of icon '....' for shortcut '....' If the extensions of the icon and the target file do not
does not match the extension of the match, the shortcut will not have the correct context
KeyFile for component '....' menu when the component is advertised. To fix this
error, rename the icon to match the extension of the
target file.

ICE 51

Message Solution
1 Font “…” is a TTC\TTF font, but also has A TTF font automatically registers a title for the font.
a title. But a title is also given in the table. Go to the table font
and delete the title text from the mentioned font.

ICE 53

Message Solution
1 Registry Key 'xxxxxxx' writes Darwin This is usually reference to Installer keys in the registry
internal or policy information.. and is spurious - delete them.

ICE 57

Message Solution
1 Component 'ShortcutsComponent' has Create a new component holding the HKCU registry
both per-user data and a keypath that can part, add that new component to an existing feature.
be either per-user or per-machine. Change the keypath for the Shortcutscomponent to
http://dartools/iceman/ice57.html another resource (noneuserprofile file or HKLM registry
Component Component entry).
ShortcutsComponent' In the Registry table find the registry entry and change
“ShortcutsComponent” used as example the component column to the name of the component
you created.
2 Component has both per user and per Create a new component (with a new GUID), move all
machine data with a per machine keypath of the per user data from the component that kicks up the
error to the new one. Set one of the files/reg keys as it’s
keypath. If you use a registry key as the keypath for the
new component you’ll need to set the attribute on that
component to 4 to avoid new ICE errors.

ICE 60

Message Solution
1 The File “…” is not a Font, and its If this error is generated by a Merge Module, the error
version is not a companion file reference. can be ignored.
It should have a language specified in the
Language Column.

ICE 62

Message Solution
1 The isolated shared component “…” is There are DLL’s isolated in compare cense to
shared by multiple applications executables that are in the same directory. Check what
(including…) that are installed to the executable is installed in the same directory as a DLL.
directory “…”. Then delete all association to that executable in the
IsolatedComponent Table.

ICE 64

Message Solution
1 The directory '....' is in the user profile but There are DLL’s isolated in compare cense to
is not listed in the RemoveFile table. executables that are in the same directory. Check what
executable is installed in the same directory as a DLL.
Then delete all association to that executable in the
IsolatedComponent Table. Or
in RemoveFile table
Find this component in the Component table - if IN
Component table:
  (a)   add an entry to the RemoveFile table with the
following details:
       FileKey             = 'xxxxxxx'
       Component        = component id
       FileName           = leave blank
       DirProperty        = directory id
       InstallMode        = 3

Find this component in the Component table - if NOT in


Component table:
  (a)   add an entry to the Component table
  (b)   add an entry to the FeatureComponents table
  (c)   add an entry to the RemoveFile table with the
following details:
       FileKey              = '....'
       Component        = component id
       FileName           = leave blank
       DirProperty        = directory id
       Install Mode       = 3

ICE 80

Message Solution
1 This 64BitComponent DIFxAPI.dll uses Remove 64-bit driver condition on Components Table
32BitDirectory Drivers and change the attribute to 0 from 256.
ice80.html Component
Directory_ DIFxAPI.dll

ICE 99

Message Solution
1 WindowsVolume is the same as one of the Remove the WindowsVolume property entry from the
MSI Public Properties and can cause Property table.
unforeseen side WindowsVolume is a system directory which will be
effects. ice99.html Directory Directory Wi populated from the Directory table.
ndowsVolume
2 Same as above, different folder name. Delete the offending Directory table row and then find
entries which contained it in the Component table and
change its folder name to 'WindowsFolder'

You might also like