• MSI: Internal Consistency Evaluators – ICEs Part 2

    Posted on November 8, 2012 by in Application Packaging, Desktop Engineering

    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 30

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

    ICE 32

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

    ICE 33

    1. Message: Reg Key “…” is used in an unsupported way. This key need not to be written as it already exists in the system.
      Solution: This error is usually generated by a merge module, if this error is generated by a merge module, it can be 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. Message: Reg Key “…” is used in an unsupported way. Typelib HELPDIR should be registered via the Typelib Table. This entry may overwrite a value created through that table.
      Solution: This entry may overwrite a value created through that table. Registry table
        (a)   add an entry to the Typelib table
        (b)   delete the entry from the Registry table
    3. Message: Reg key “…” is used in an unsupported way. Typelib should be registered via the Typelib table – this key is automatically written during typelib registration.
      Solution: In the registry path HK_Classes_Root\Typelib there are several key’s that also exist in the Typelib table. The key’s that exist in that table can be deleted from the registry. If the error is generated by a merge module, it can be ignored.
    4. Message: Reg key “…” is used in an unsupported way. CLSID – ProgId should be registered via the Class and ProgId tables. This entry may overwrite a value created through those tables.
      Solution: In the registry path HK_Classes_Root\ there are several key’s that also exist in the ProgId table. The key’s that exist in that table can be deleted from the registry. All sub-key’s can also be deleted. If the error is generated by a merge module, it can be ignored.
    5. Message: Reg key “…” is used in an unsupported way. ProgId – CLSID associations should be registered via the ProgId and Class tables. This entry may overwrite a value created through those tables.
      Solution: In the registry path HK_Classes_Root\ there are several key’s that also exist in the ProgId table. The key’s that exist in that table can be deleted from the registry. All sub-key’s can also be deleted. If the error is generated by a merge module, it can be ignored.
    6. Message: Reg key “…” is used in an unsupported way. CLSID contexts should be registered via the Class table. This entry may overwrite a value created through that table.
      Solution: This entry may overwrite a value created through that table
        (a)   add an entry to the Class table
        (b)   delete the entry from the Registry 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. Message: Reg key “…” is used in an unsupported way. CLSID DefinprocHandler should be registered via the Class table. This entry may overwrite a value created through that table.
      Solution: In the registry path HK_Classes_Root\CLSID there are several key’s that also exist in the Class table. The key’s that exist in that table can be deleted from the registry. 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.
    8. Message: Reg key “…” is used in an unsupported way. CLSIDs should be registered via the Class table. This entry may overwrite a value created through that table.
      Solution: In the registry path HK_Classes_Root\CLSID there are several key’s that also exist in the Class table. The key’s that exist in that table can be deleted from the registry. 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. Message: Reg key “…” is used in an unsupported way. Version Independent ProgId should be registered via the ProgId table. This entry may overwrite a value created through that table.
      Solution: In the registry path HK_Classes_Root\ there are several key’s that also exist in the ProgId table. The key’s that exist in that table can be deleted from the registry. All sub-key’s can also be deleted. If the error is generated by a merge module, it can be ignored
    10. Message: Reg key “…” is used in an unsupported way. ProgId should be registered through the ProgId table. This entry may overwrite a value created through that table.
      Solution: In the registry path HK_Classes_Root\ there are several key’s that also exist in the ProgId table. The key’s that exist in that table can be deleted from the registry. All sub-key’s can also be deleted. If the error is generated by a merge module, it can be ignored.
    11. Message: Reg key ‘….’ is used in an unsupported way. Shell extension verbs information should be registered via the Verb table.
      Solution: 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
    12. Message: Reg Key ‘….’ is used in an unsupported way. ProgId – Icon associations should be registered via the ProgId and Icon tables.
      Solution: This entry may overwrite a value created through those tables

    ICE 36

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

    ICE 38

    1. Message: Component “…” installs to user profile. It must use a registry key under KHCU as its keypath, not a file.
      Solution:
      (a)   find all occurrences of this component – usually in CreateFolder table (along with Component table and 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. Message: Component ‘….’ installs to user profile. It must use a registry key under HKCU as its KeyPath. The KeyPath is currently NULL
      Solution:
      Find all occurrences of this component – if in Shortcut 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) 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

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

     

     

    Be Sociable, Share!

    Written by

    Senior Packaging Engineer with 5 years of experience in application pakcaging, scripting and deployment. As a packaging engineer worked on various technolgies right from wise package studio, Admintstudio, Microsoft App-V and VMware Thinapp. Covered Finance, Pharmaceuticals and other domains.

    View all articles by

    Email : [email protected]

    Leave a Reply