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.

Result

O ICE02 postará uma mensagem de erro se encontrar uma referência que deva ser recíproca e não é.

Exemplo

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.

Referência do ICE