ICE30

O ICE30 valida que a instalação de componentes que contêm o mesmo arquivo nunca instala o arquivo mais de uma vez no mesmo diretório.

O ICE30 vai para todos os componentes na tabela Component e determina o diretório de destino do componente da tabela Directory. Em seguida, ele verifica qual desses componentes foi instalado no mesmo diretório de destino. Por fim, ele usa a tabela File para verificar se nenhum dos arquivos nesses componentes tem o mesmo nome.

O ICE30 verifica LFN (nomes de arquivo longos) e SFN (nomes de arquivo curtos).

O ICE30 não avalia as propriedades na resolução de diretórios, pois essas propriedades podem ser alteradas em runtime e alterar o esquema de resolução de diretório. Isso significa que o ICE30 pode detectar colisões de arquivos devido a diretórios com a mesma propriedade nos caminhos, mas não detecta colisões resultantes de duas propriedades com o mesmo valor.

Result

O ICE30 posta uma mensagem de erro para cada par de componentes que instala o mesmo arquivo no mesmo diretório.

Exemplo

O exemplo mostrado retorna cada um dos erros a seguir duas vezes.

Erro ou aviso ICE30 Descrição
ERRO: o arquivo de destino 'README.1st' foi instalado em 'TARGETDIR\PRODUCT' por dois componentes diferentes em um sistema SFN: 'Component1' e 'Component2'. Isso interrompe a contagem de referência de componentes. Component1 e Component2 têm um arquivo chamado 'READEME.1st'. Ao usar nomes de arquivo curtos, o instalador instala Dir1 e Dir2 no mesmo diretório, TARGETDIR\PRODUCT.
O ICE30 gera dois erros, um para cada arquivo. Em um ambiente de criação que exibe os locais de erro, o primeiro erro está na entrada de um arquivo na Tabela File e o segundo no local do outro arquivo.
ERRO: a instalação de um componente condicionalizado faria com que o arquivo de destino 'README.1st' fosse instalado em 'TARGETDIR\COMMON TOOLS' por dois componentes diferentes em um sistema LFN: 'Component3' e 'Component4'. Isso interromperia a contagem de referência de componentes. Component4 tem uma entrada na coluna Condition da tabela Component e Component3 não. Se VersionNT for True, Component4 será instalado e haverá uma colisão com o Readme.1st sempre instalado pelo Component3.
O ICE30 gera quatro erros, um par para SFN e um para LFN.
AVISO: o arquivo de destino 'README.1st' pode ser instalado em 'TARGETDIR\COMMON TOOLS' por dois componentes condicionalizados diferentes em um sistema SFN: 'Component4' e 'Component5'. Se as condições não forem mutuamente exclusivas, isso interromperá o sistema de contagem de referência do componente. Como Component4 e Component5 têm entradas na coluna Condition da tabela Component, essa colisão de arquivo pode não ocorrer. O ICE30 publica apenas um aviso, pois as condições devem ser determinadas no momento da instalação.
O ICE30 gera quatro avisos, um par para SFN e um para LFN.

 

Tabela Component (parcial)

Componente Diretório Condição
Component1 Dir1
Component2 Dir2
Component3 Dir3
Component4 Dir3 VersionNT
Component5 Dir3 Version9X

 

Tabela Directory

Diretório Parent_Directory DefaultDir
SOURCEDIR   TARGETDIR
Dir1 SOURCEDIR Product|Component1 Product:.
Dir2 SOURCEDIR Product:.
Dir3 SOURCEDIR Common|Common Tools:

 

Tabela File (parcial)

Arquivo Component_ FileName
Arquivo1 Component1 README.1st
Arquivo2 Component2 README.1st
Arquivo3 Component3 README.1st
Arquivo4 Component4 README.1st
Arquivo5 Component5 README.1st

 

Referência do ICE