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.
O ICE30 posta uma mensagem de erro para cada par de componentes que instala o mesmo arquivo no mesmo diretório.
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 |
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 |