- Revenera Community
- :
- InstallShield
- :
- InstallShield Knowledge Base
- :
- ICE03 Validation Error
- Mark as New
- Mark as Read
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
ICE03 Validation Error
ICE03 Validation Error
Summary
Discussion on causes and resolution of ICE03 validation errorsSymptoms
-
ICE03 - Error - Invalid identifier; Table: File, Column: File, Key(s): Test.pdf
-
ICE03 - ICE03 - Error - Invalid identifier; Table: MsiFileHash, Column: File_, Key(s): Test.pdf
-
ICE03 Failure ICE Internal Error 1149. API Returned: 1615.
-
ICE03 Failure Error 2228: C:\apps\Test\Product1\Release1\DiskImages\Disk1\Integration Test.msi, _FtrRef, SELECT 'Table', Column' FROM _FtrRef" WHERE 'Table' = 'File' AND 'Column' = 'File'
Cause
Resolution
Table: TypeLib
LibID | Language | Component_ | Version |
---|---|---|---|
{C9FCC3A5-FBF1-11D6-AA40-005056C00001} | 0 | Component1 | 100 |
Table: _Validation
Table | Column | Nullable | MinValue | MaxValue |
---|---|---|---|---|
TypeLib | Version | Y | 0 | 80 |
The value for the table in question must be changed to a value that falls within the Min/Max Value limits. If the value cannot be changed, the Max or Min Value must be changed accordingly in the _Validation table itself via the Direct Editor. See the Additional Information section of this article for information on how to access the _Validation table.
Table: LockPermissions
LockObject | Table | Domain | User |
---|---|---|---|
IniFile1 | IniFile | TestUser |
Table: _Validation
Table | Column | Set | MinValue | MaxValue |
---|---|---|---|---|
LockPermissions | Table | CreateFolder;File;Registry | 10 | 1650 |
The field in question can be manually adjusted via the Direct Editor in the InstallShield IDE to match the Set column in the _Validation table. In the example above, the value of the Table column in the LockPermissions table must be changed to match a value currently in the Set column of the _Validation table. If the _Validation table must be accessed to verify valid values, see the Additional Information section of this article for information on how to access the _Validation table.
Below is a list of data types that may trigger ICE03.
Data Type | Example | MSI Help Library Topic |
---|---|---|
Version | The Version column of the File table | Version |
UpperCase | NA | UpperCase |
GUID | The ComponentID column of the Component table | GUID |
Identifier | Directory column of the Component table | Identifier |
Language | Language column of the File table | Language and Language Identifiers |
FileName | FileName column of the File table | FileName |
Path | NA | Path |
Paths | Path column of the BindImage table | Paths |
AnyPath | Path column of the DrLocator table | AnyPath |
Formatted | Value column of the Registry table | Formatted |
Template | Message column of the Error table | Template |
DefaultDir | DefaultDir column of the Directory table | DefaultDir |
RegPath | Key column of the RegLocator table | RegPath |
Property | Source column of the Media table | Property |
Condition | Condition column of the Component table | Condition |
CustomSource | Source column of the Custom Action table | CustomSource |
Shortcut | Target column of the Shortcut table | Shortcut |
Cabinet | Cabinet column of the Media table | Cabinet |
The database and validation tables must be authored to match. Either a row must be deleted from the _Validation table or a row must be added to the _Validation table. A row must be available in the _Validation table for each column available for the table in question. Refer to the table below for an illustration. Note: Not all columns are displayed in the TypeLib or _Validation table below.
A row must be available for each column of the TypeLib Table. As an illustration, there is a row for the Version column in the _Validation table. This is indicated by the Column column of the table. There must be a similar row available for every column of the TypeLib table. The next row's Column column may have the value of Language to indicate that the row is for the Language column of the TypeLib table.
Table: TypeLib
LibID | Language | Component_ | Version |
---|---|---|---|
{C9FCC3A5-FBF1-11D6-AA40-005056C00001} | 0 | Component1 | 100 |
Table: _Validation
Table | Column | Nullable | MinValue | MaxValue |
---|---|---|---|---|
TypeLib | Version | Y | 0 | 80 |
Validation does not recognize the Category string used for this particular column in the _ Validation table.
The data type in the _Validation table?s Category column must be modified to a valid data type. For a list of valid data types, see the MSI Help Library topic "Column Data Types."
The KeyTable column in the _Validation table references a table that does not exist in the database.
The value in the KeyTable column of the _Validation table must be changed to an existing MSI table name.
The value in the MinValue column of the _validation table is greater than the value in the MaxValue column.
The MaxValue column in the_Validation table must be set to a value greater than the MinValue column. See Causes 1 and 2 for sample _Validation tables displaying the MaxValue and MinValue columns.
For a solution to this error, see MSI Help Library topic "Column Definition Format."
Primary key columns cannot be localized.
The Primary key columns in the _Validation table must be set to non-localized values. The primary key of a table is the key that makes the table unique. The primary key can be determined by looking up the table in the MSI Help Library. A Y will be under the Key column indicating which of a table's values serves as the key. For example, the File column is the key of the File table. For more information on localization, see the MSI Help Library topic "Localizing a Windows Installer Package."
Machine the MSI package was built on has the NtfsDisable8dot3NameCreation option enabled
After removing or setting the value to 0, rebuild the project (note that if files or folders were added to the project with
the registry option enabled, the files or folders may need to be removed and re-added to the project). These validation errors can be worked around by manually correcting the table entries in the File and Directory tables. For example, if an ICE03 invalid file name error is reported on the following Filename column value in the File table: This is a long filename.txt . Change the Filename column value to the following: THISIS~1.txt|This is a long filename.txt
Additional Information
- The _Validation table is a self-referential check to ensure data values are within typical ranges. Some setups have files that lie outside this range. In these cases, the _Validation table needs to be modified as necessary.
- When validating the MSI tables and fields causing validation errors are highlighted in red, which helps to distinguish which field needs to be adjusted.
- The _Validation table is not exposed via the Direct Editor. Follow these steps to open the built MSI file in Direct Edit mode to expose the _Validation table:
- Open your project in the InstallShield.
- From the Tools menu, choose Open Release Folder. This opens your Disk1 folder in Windows Explorer.
- There should be an .msi file in the Disk1 folder. If you do not see this file, you need to create an uncompressed build with the Release Wizard. To do this:
- Right-click your release in the Releases view and choose Release Wizard.
- Step through the wizard until you get to the Release Configuration panel and choose to keep files uncompressed.
- Right-click your release in the Releases view and choose Release Wizard.
- Once the .msi file is exposed in the Disk1 folder, close your current project.
- Right-click the .msi file in your Disk1 folder and choose Edit with InstallShield Developer (or Edit with InstallShield DevStudio, or Edit with InstallShield). This opens the .msi file in Direct Edit mode.
- Open your project in the InstallShield.
- The IDE provides a Generate GUID button that automatically generates a New valid GUID for pieces of the installation that require a GUID. For example, in the case of the component, you can go to the Components section of the IDE and select the Component Code Property of the component. A Generate GUID button is available in the lower right corner. Pressing this button generates a New GUID for that component.