Internal Consistency Evaluators
Internal consistency evaluators also called ICE’s 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.Watch Full Movie Online Streaming Online and Download
On basic level ICE01 to 105 are a set of predefined rules created by Microsoft to confirm the contents, logic and structure of Windows Installer package (MSI).
The table below also includes the recent additions ICE101 to ICE105 which were introduced with Windows Installer 5.0
ICE Reference Table
ICE | Description |
---|---|
ICE01 | Simple test of ICE mechanism. |
ICE02 | Circular reference test for File-Component, Registry-Component KeyPaths. |
ICE03 | Basic data and foreign key validation. |
ICE04 | Validates file sequence numbers against the LastSequence numbers of the Media Table. |
ICE05 | Validates for “required” entries in particular tables. |
ICE06 | Validates for missing column or tables in the database. Any column defined in the _Validation table must be found in the database. |
ICE07 | Validates that fonts are installed to the FontsFolder. |
ICE08 | Checks for duplicate GUIDs in the ComponentId column of the Component table. |
ICE09 | Validates that the permanent bit is set for every component marked for installation into the SystemFolder. |
ICE10 | Ensures that advertise feature states among children and parents are compatible. |
ICE12 | Validates type 35 and type 51 custom actions and their locations in the sequence tables. |
ICE13 | Validates that dialogs are not listed as actions in the execute sequence tables. Dialog actions are only allowed in the user interface sequence tables. |
ICE14 | Validates that feature parents do not have the msidbFeatureAttributesFollowParent bit set. Also validates that the entries in the Feature and Feature_Parent columns are not the same in the same record. |
ICE15 | Validates that a circular reference exists between every entry in the MIME table and the corresponding extension in the Extension table. |
ICE16 | Validates that the ProductName in the Property table is not greater than 63 characters in length. |
ICE17 | Validates control type dependencies in the Control table. Covers PushButtons, RadioButtonGroups, ListBoxes, ListViews, and ComboBoxes. |
ICE18 | Validates the KeyPath column of the Component table when it is null. In this case, the key path is a Directory. |
ICE19 | Validates the advertising tables: Class, TypeLib, Extension, PublishComponents, and Shortcut. |
ICE20 | Validates that the required dialogs are in the Dialog table. |
ICE21 | Validates that all components in the Component table map to a feature in the FeatureComponents table. |
ICE22 | Validates that the Feature_ and Component_ columns in the PublishComponent table. |
ICE23 | Validates the tab order of controls in all dialog boxes. |
ICE24 | Validates certain properties in the Property table. |
ICE25 | Verifies merge module dependencies and merge module exclusions. |
ICE26 | Validates required and prohibited actions in the sequence tables. |
ICE27 | Validates the organization and order of the sequence tables. |
ICE28 | Validates actions that must not be separated by ForceReboot. |
ICE29 | Validates that your stream names remain unique if truncated to the 62-character limit. |
ICE30 | Validates that the installation of components containing the same file never install the file more than one time in the same directory. |
ICE31 | Validates the text styles listed in the Text column of the control table. |
ICE32 | Compares the column definitions to validate that keys and foreign keys are of the same size and type. |
ICE33 | Checks the registry table for entries that belong in other tables. |
ICE34 | Validates that every group of radio buttons has a default. |
ICE35 | Validates that any files from a cabinet file cannot be set to run from the source. |
ICE36 | Validates that icons listed in the Icon table are used in the Class, ProgID, or Shortcut tables. |
ICE38 | Validates that components installed under the user’s profile use a registry key under HKCU as their key path. |
ICE39 | Validates the Summary Information stream of the database. |
ICE40 | Performs various miscellaneous checks. |
ICE41 | Validates that entries in the Extension and Class tables refer to components belonging to the referenced feature. |
ICE42 | Checks that Class table entries do not have .exe files set as InProc values, and that only LocalServer contexts have arguments and DefInProc values. |
ICE43 | Checks that non-advertised shortcuts are in components with HKCU registry keys as the key paths. |
ICE44 | Checks that dialog events in the ControlEvent table (NewDialog, SpawnDialog, SpawnWaitDialog) reference valid Dialogs in the Dialog table. |
ICE45 | Checks for reserved bits that are set. |
ICE46 | Checks for custom properties that only differ from defined properties by their case. |
ICE47 | Checks for features with more than 1600 components per feature.. |
ICE48 | Checks for directories that are hard-coded to local paths. |
ICE49 | Checks for non-REG_SZ default values in the registry table. |
ICE50 | Checks that advertised shortcuts have correct icons and context menus. |
ICE51 | Checks that TTC/TTF fonts do not have titles, but that all other fonts do. |
ICE52 | Checks for non-public properties in the AppSearch table. |
ICE53 | Checks for registry entries that write private installer information or policy values. |
ICE54 | Checks for components using companion files as their key path file. |
ICE55 | Checks that LockPermission objects exist and have valid permissions. |
ICE56 | Validates that the directory structure of the .msi file has a single valid root. |
ICE57 | Validates that individual components do not mix per-machine and per-user data. |
ICE58 | Checks that your Media Table does not have more than 80 rows. |
ICE59 | Checks that advertised shortcuts belong to components that are installed by the target feature of the shortcut. |
ICE60 | Checks that if a file in the File Table is not a font and has a version, then it also has a language. |
ICE61 | Checks the Upgrade Table. |
ICE62 | Performs extensive checks on the IsolatedComponent Table for data that may cause unexpected behavior. |
ICE63 | Checks for proper sequencing of the RemoveExistingProducts action. |
ICE64 | Checks that new directories in the user profile are removed in roaming scenarios. |
ICE65 | Checks that the Environment Table does not have invalid prefix or append values. |
ICE66 | Uses the tables in the database to determine which schema your database should use. |
ICE67 | Checks that the target of a non-advertised shortcut belongs to the same component as the shortcut itself, or that the attributes of the target component ensure that it does not change installation locations. |
ICE68 | Checks that all custom action types needed for an installation are valid. |
ICE69 | Checks that all substrings of the form [$componentkey] within a Formatted string do not cross-reference components. |
ICE70 | Verifies that integer values for registry entries are specified correctly. |
ICE71 | Verifies that the Media Table contains an entry with DiskId equal to 1. |
ICE72 | Ensures that the only custom actions used in the AdvtExecuteSequence Table are type 19, type 35, and type 51 custom actions. |
ICE73 | Verifies that your package does not reuse package codes or product codes of the Windows Installer SDK samples. For more information, see Package Codes and Product Codes. |
ICE74 | Verifies that the FASTOEM property has not been authored into the Property Table. |
ICE75 | Verifies that all custom action types that use an installed file as their source are sequenced after the CostFinalize Action. |
ICE76 | Verifies that no files in the BindImage Table reference SFP (WFP) catalogs. |
ICE77 | Verifies that in-script custom actions are sequenced after the InstallInitialize Action and before the InstallFinalize Action. |
ICE78 | Verifies that the AdvtUISequence Table either does not exist or is empty. |
ICE79 | Validates references to components and features entered in the database fields using the Condition data type. |
ICE80 | Validates that Template Summary Property and Page Count Summary Property correctly specify the presence of 64-bit components or custom action scripts. |
ICE81 | Validates the MsiDigitalCertificate Table, MsiDigitalSignature Table and MsiPackageCertificate Table. |
ICE82 | Validates the InstallExecuteSequence Table. |
ICE83 | Validates the MsiAssembly Table. |
ICE84 | Checks the sequence tables to verify that required Standard Actions are not set with conditions. |
ICE85 | Validates that the SourceName column of the MoveFile Table is a valid long file name. |
ICE86 | Issues a warning if the package uses the AdminUser property in database column of the Condition type. |
ICE87 | Validates that the following properties have not been authored in the Property Table. |
ICE88 | Validates the DirProperty column of IniFile Table. |
ICE89 | Validates that the value in the Progid_Parent column in ProgId Table is a valid foreign key into the ProgId column in ProgId table. |
ICE90 | Posts a warning if it finds that a shortcut’s directory has been specified as a public property. |
ICE91 | Posts a warning if a file, .ini file, or shortcut file is installed into a per-user profile directory that does not vary based on the ALLUSERS property. |
ICE92 | Verifies that a component without a Component Id GUID is not also specified as a permanent component. Verifies that no component has both the msidbComponentAttributesPermanent and msidbComponentAttributesUninstallOnSupersedence attributes. |
ICE93 | Issues a warning if a custom action uses the same name as a standard action. |
ICE94 | Issues a warning if there are any unadvertised shortcuts pointing to an assembly file in the global assembly cache. |
ICE95 | Checks the Control Table and BBControl Table to verify that the billboard controls fit onto all the billboards. |
ICE96 | Verifies that the PublishFeatures Action and the PublishProduct Action are entered in the AdvtExecuteSequence Table. |
ICE97 | Verifies that two components do not isolate a shared component to the same directory. |
ICE98 | Verifies the description field of the ODBCDataSource Table for an ODBC data source. |
ICE99 | Verifies that no property name entered in the Directory table duplicates a name reserved for the public or private use of the Windows Installer. |
ICE100 | Checks the authoring of the MsiEmbeddedUI and MsiEmbeddedChainer tables. |
ICE101 | Checks that no value in the Feature column of the Feature table exceeds a maximum length of 38 characters. |
ICE102 | Validates the MsiServiceConfig and MsiServiceConfigFailureActions tables. |
ICE103 | Validates the MsiPrint and MsiLaunchApp control events. |
ICE104 | Verifies the MsiLockPermissionsEx and LockPermissions tables. |
ICE105 | Validates that the package has been authored to be installed in a per-user context. |
0 Comments