ICE32
ICE32 可验证 .msi 文件中的键和外键的大小和列定义类型是否相同。 此 ICE 自定义操作使用 _Validation 表 和 MsiViewGetColumnInfo 返回的定义类型进行比较。 有关详细信息,请参阅列定义格式。
如果 .msi 文件包含对不同列长度或列数据类型的键的任何外键,ICE32 会发布错误。
针对以下显示的示例,ICE32 将发布两个错误:
- 某个外键与已定义的键大小不同。
- 某个外键与键在其定义类型方面有所不同。
_Validation表(部分)
表 | 列 | KeyTable | KeyColumn |
---|---|---|---|
文件 | 版本 | 文件 | 1 |
Flap | Column8 | Flap | 1 |
列定义(部分)
表 | 列 | 类型 | 大小 |
---|---|---|---|
文件 | 文件 | S | 72 |
文件 | 版本 | S | 32 |
Flap | Column1 | i | 2 |
Flap | Column8 | S | 32 |
File 表的 Version 列可以是 File 表中另一个文件的外键。 这与配套文件一起出现。 但是,Version 列仅允许字符串长度 32,而 File 列允许字符串长度为 72。 若要修复此错误,请更改要匹配的字符串长度。
某个外键与键在其定义类型方面有所不同。 Flap Table 的 Column8 作为 Column1 的外键列出。 Column8 是字符串列,Column1 是整数列。 外键和键必须成对定义,使其数据类型匹配。