Поделиться через


ICE62

ICE62 выполняет обширные проверки в таблице IsolatedComponent на наличие данных, которые могут привести к непредвиденному поведению.

Сбой при устранении ошибки, сообщаемой ICE62, может привести к сбою изолированной системы компонентов различными способами. Например, если бит SharedDllRefCount не задан для общего компонента, регистрация компонента может быть удалена, если другое приложение использует этот ComponentId и удаляется.

Результат

ICE62 публикует предупреждение или ошибку при поиске данных в таблице IsolatedComponent, которые могут привести к непредвиденному поведению.

Пример

ICE62 сообщает о следующих ошибках и предупреждениях в приведенных примерах.

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

Компонент 2 указан в качестве компонента приложения для изоляции компонента component1. Однако Компонент 2 имеет путь к разделу реестра и не предоставляет допустимый путь к исполняемому файлу для изоляции компонента.

Чтобы устранить эту ошибку, используйте другой компонент в качестве приложения для изолированного компонента Component1.

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

Компонент 1 указан как изолированный общий компонент, но не имеет бита SharedDllRefCount. Это может привести к неправильному времени существования компонента. Если другое приложение использует этот компонент (изолированное или нет) и удаляется, регистрация компонента удаляется, но изолированная копия этого приложения остается. Это приводит к проблемам с восстановлением и удалением.

Чтобы исправить эту ошибку, задайте бит SharedDllRefCount для компонента.

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 и Component2 устанавливаются различными компонентами. Компонент 1 устанавливается компонентом Feature1, а компонент 2 — компонентом Feature2. Feature1 не является родительским компонентом Feature2, поэтому можно установить приложение, но не изолированный компонент, нарушая изоляцию.

Чтобы устранить эту ошибку, добавьте запись в таблицу FeatureComponents, связывающую Компонент 1 с тем же компонентом, что и компонент (или родительский компонент) компонента, устанавливающего Компонент 2.

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.

Компонент 1 имеет условие в таблице Компонент. Если это условие изменится с TRUE на FALSE во время установки на компьютере, изолированный компонент может быть потерян без сведений о регистрации.

Чтобы исправить это предупреждение, удалите условие или создайте условие, чтобы оно никогда не меняется с TRUE на 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 изолирован для компонентов Component2 и Component3, и два компонента также устанавливаются в один каталог. Приложения совместно используют изолированный компонент, но при удалении одного приложения общий компонент также удаляется, в результате чего другие приложения потеряют изолированный компонент.

Чтобы устранить это предупреждение, установите приложения в разные каталоги или проверка, действительно ли для некоторых приложений требуется изолированный компонент.

Таблица IsolatedComponent

Component_Shared Component_Application
Компонент1 Компонент 2
Компонент1 Компонент 3

 

Таблица компонентов

Компонент ComponentId Каталог_ Атрибуты Условие KeyPath
Компонент1 Dir1 0 MYCONDITION Файл1
Компонент 2 TARGETDIR 4 Реестр2
Компонент 3 TARGETDIR 0 Файл3

 

FeatureComponentsTable

Функция_ Компонент_
Функция 1 Компонент1
Функция 2 Компонент 2
Функция 1 Компонент 3

 

Таблица признаков (частичная)

Компонент Feature_Parent
Функция 1
Функция 2

 

Справочник по ICE