다음을 통해 공유


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.

Component2는 component1 격리를 위한 애플리케이션 구성 요소로 나열됩니다. 그러나 Component2에는 레지스트리 키 경로가 있으며 구성 요소를 격리하는 데 사용할 유효한 실행 경로를 제공하지 않습니다.

이 오류를 해결하려면 격리된 구성 요소 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은 격리된 공유 구성 요소로 나열되지만 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는 다양한 기능에 의해 설치됩니다. Component1은 Feature1에 의해 설치되고, Component2는 Feature2에 의해 설치됩니다. Feature1은 Feature2의 부모가 아니므로 격리된 구성 요소가 아닌 애플리케이션을 설치하여 격리를 끊을 수 있습니다.

이 오류를 해결하려면 Component1을 Component2를 설치하는 기능과 동일한 기능(또는 부모 기능)에 연결하는 FeatureComponents 테이블에 항목을 추가합니다.

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에는 구성 요소 테이블에 조건이 있습니다. 컴퓨터에 설치하는 동안 이 조건이 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
Component1 Component2
Component1 Component3

 

구성 요소 테이블

구성 요소 ComponentId 디렉토리_ 특성 조건 KeyPath
Component1 Dir1 0 MYCONDITION File1
Component2 TARGETDIR 4 Registry2
Component3 TARGETDIR 0 File3

 

featureComponentsTable

특징_ 구성 요소_
Feature1 Component1
기능 2 Component2
Feature1 Component3

 

기능 테이블(부분)

특징 Feature_Parent
Feature1
기능 2

 

ICE 참조