ICE02
O ICE02 valida se determinadas referências entre as tabelas Component, File e Registry são recíprocas. Essas referências devem ser recíprocas para que o instalador determine corretamente o estado de instalação dos componentes.
O instalador usa a coluna KeyPath da tabela Component para detectar a presença do componente listado na coluna Component. A coluna KeyPath contém uma chave na tabela Registry ou File. Ambas as tabelas têm uma coluna Component_ que contém uma chave de volta à tabela Component apontando para o componente que controla a entrada ou o arquivo do Registro. Essas referências devem ser recíprocas.
O ICE02 postará uma mensagem de erro se encontrar uma referência que deva ser recíproca e não é.
O ICE02 postaria as seguintes mensagens de erro para um arquivo .msi que contivesse as entradas de banco de dados mostradas.
File: 'Red_File' cannot be the key file for Component: 'Blue'. The file belongs to Component: 'Red'
Tabela Component (parcial)
Componente | KeyPath |
---|---|
Vermelho | Red_File |
Azul | Red_File |
Tabela File (parcial)
Coluna File | Component_ |
---|---|
Red_File | Vermelho |
Blue_File | Azul |
O Componente Blue faz referência a Red_File, mas Red_File não é controlado pelo Componente Blue e, portanto, não pode ser o arquivo KeyPath. Se o instalador fosse chamado para obter o estado de instalação do Blue, ele verificaria incorretamente se Red_File estava instalado. Alterar o campo KeyPath de Blue na tabela Component para Blue_File corrige o erro.