ICE62

O ICE62 executa verificações abrangentes na tabela IsolatedComponent em busca de dados que possam causar um comportamento inesperado.

A falha ao corrigir um erro relatado pelo ICE62 pode resultar em uma falha do sistema de componentes isolado de várias maneiras. Por exemplo, se o bit SharedDllRefCount não estiver definido para um componente compartilhado, o registro do componente poderá ser removido quando outro aplicativo usar essa ComponentId e for desinstalado.

Result

O ICE62 posta um aviso ou um erro quando encontra dados na tabela IsolatedComponent que podem produzir um comportamento inesperado.

Exemplo

O ICE62 relata os seguintes erros e avisos para os exemplos mostrados.

The component 'Component2' is listed as an isolated application 
component in the IsolatedComponent table, but the key path is not a file.

Component2 é listado como o componente do aplicativo para o isolamento de Component1. No entanto, Component2 tem um caminho da chave de registro e não fornece um caminho executável válido a ser usado para isolar o componente.

Para corrigir esse erro, use um componente diferente como o aplicativo para o componente isolado Component1.

The component 'Component1' is listed as an isolated shared component in the 
IsolatedComponent table, but is not marked with the SharedDllRefCount component attribute.

Component1 é listado como um componente compartilhado isolado, mas não tem o bit SharedDllRefCount definido. Isso pode resultar no tempo de vida incorreto do componente. Se outro aplicativo usar esse componente (isolado ou não) e estiver desinstalado, o registro do componente será removido, mas a cópia isolada desse aplicativo permanecerá. Isso causa problemas de reparo e desinstalação.

Para corrigir esse erro, defina o bit SharedDllRefCount para o componente.

The isolated shared component 'Component1' is not installed by the same feature as 
(or a parent feature of) its isolated application component 'Component2' (which is installed by feature 'Feature2').

Component1 e Component2 são instalados por recursos diferentes. Component1 é instalado por Feature1 e Component2 é instalado por Feature2. Feature1 não é pai de Feature2, portanto, é possível que o aplicativo seja instalado, mas não o componente isolado, quebrando o isolamento.

Para corrigir esse erro, adicione uma entrada à tabela FeatureComponents que vincula Component1 ao mesmo recurso (ou ao recurso-pai) do recurso que instala Component2.

WARNING: The isolated shared component 'Component1' (referenced in the IsolatedComponent table) 
is conditionalized. Isolated shared component conditions should never change from TRUE to FALSE after the first install of the product.

Component1 tem uma condição na tabela Component. Se essa condição mudar de TRUE para FALSE durante uma instalação em um computador, o componente isolado poderá ficar órfão sem informações de registro.

Para corrigir esse aviso, remova a condição ou crie a condição para que ela nunca possa ser alterada de TRUE para FALSE.

WARNING: The isolated shared component 'Component1' is shared by multiple applications 
(including 'Component2') that are installed to the directory 'TARGETDIR'.
WARNING: The isolated shared component 'Component1' is shared by multiple applications 
(including 'Component3') that are installed to the directory 'TARGETDIR'.

Component1 é isolado de Component2 e Component3, e os dois componentes também estão instalados no mesmo diretório. Os aplicativos compartilham um componente isolado, mas se um aplicativo for removido, o componente compartilhado será removido, fazendo com que os outros aplicativos percam o componente isolado.

Para corrigir esse aviso, instale os aplicativos em diretórios diferentes ou verifique se alguns aplicativos realmente exigem um componente isolado.

Tabela IsolatedComponent

Component_Shared Component_Application
Component1 Component2
Component1 Component3

 

Tabela Component

Componente ComponentId Directory_ Atributos Condição KeyPath
Component1 Dir1 0 MYCONDITION Arquivo1
Component2 TARGETDIR 4 Registry2
Component3 TARGETDIR 0 Arquivo3

 

Tabela FeatureComponents

Feature_ Component_
Feature1 Component1
Feature2 Component2
Feature1 Component3

 

Tabela Feature (parcial)

Recurso Feature_Parent
Feature1
Feature2

 

Referência do ICE