다음을 통해 공유


ICE69

ICE69는 서식이 지정된 문자열 내 [$componentkey] 형식의 모든 하위 문자열이 상호 참조 구성 요소가 아닌지 확인합니다. 구성 요소 간 참조는 형식이 지정된 문자열의 [$componentkey] 속성이 테이블의 Component_ 열에 저장된 구성 요소 이외의 구성 요소를 참조할 때 발생합니다.

구성 요소 간 참조 문제는 서식이 지정된 문자열을 평가하는 방식에서 발생합니다. [$componentkey] 속성으로 참조된 구성 요소가 이미 설치되어 있고 현재 설치 중에 변경되지 않는 경우(예: 다시 설치, 원본으로 이동 등) [$componentkey] 식은 [$componentkey]에 있는 구성 요소의 작업 상태가 null이므로 null로 평가됩니다. 업그레이드 및 복구 작업 중에 비슷한 문제가 발생할 수 있습니다.

결과

ICE69는 서식이 지정된 문자열 내의 [$componentkey] 하위 문자열이 다른 기능의 구성 요소를 상호 참조하는 경우 오류를 반환합니다. ICE69는 서식이 지정된 문자열 내의 [$componentkey] 하위 문자열이 동일한 기능의 구성 요소를 상호 참조하는 경우 경고를 반환합니다. (FeatureComponents 테이블은 이 매핑을 확인하는 데 사용됩니다. 경고에 대해 동일한 기능에 매핑해야 합니다. 부모 기능에서 구성 요소를 참조하거나 자식 기능의 구성 요소를 참조하는 것은 오류로 간주됩니다.)

ICE69는 서식이 지정된 문자열 내의 [#FileKey] 하위 문자열이 File 테이블에 동일한 구성 요소에 속하는 것으로 지정되지 않은 파일을 참조하는 경우 오류를 보고합니다.

ICE69는 표시된 예제에 대해 다음을 보고합니다.

WARNING: "Mismatched component reference. Entry 'Test' of the Shortcut table belongs to component 'QuickTest'. However, the formatted string in column 'Argument' references component 'Test'. Components are in the same feature."
ERROR: "Mismatched component reference. Entry 'Shortcut2' of the Shortcut table belongs to component 'QuickTest'. However, the formatted string in column 'Argument' references component 'Test2'. Components are not in the same feature."

이 오류를 해결하려면 구성 요소를 상호 참조하지 마세요. 바로 가기의 구성 요소와 일치하도록 [$componentkey]를 변경합니다.

Shortcut 테이블(부분)

바로 가기 Component_ 인수
테스트 QuickTest -v [$Test]
Shortcut2 QuickTest [$Test2]

 

VerbExtension 테이블은 Verb 테이블이 구성 요소에 속한 확장을 참조한다는 점에서 특수한 경우입니다. 그러나 확장 테이블의 기본 키는 Extension 및 Component_ 열로 구성되므로 확장은 여러 구성 요소에 속할 수 있습니다. 논리적으로 다음과 같은 상황이 발생할 수 있습니다.

Verb 테이블(부분)

확장명 Verb_ 인수
tst 열기 -v [$comp1][$comp2]

 

Extension 테이블(부분)

확장명 Component_
tst comp1
tst comp2

 

FeatureComponents 테이블

Feature_ Component_
Feature1 QuickTest
Feature1 테스트
Feature2 Test2

 

이 경우 [$componentkey] 속성 중 하나 이상이 null이 아닌 값으로 평가되는지 확인해야 합니다. 그러나 Verb 테이블의 Argument 열에 있는 모든 [$componentkey] 속성(위의 예제에서는 [$comp1] 및 [$comp2])은 동사와 연결된 확장에 포함된 가능한 구성 요소를 참조해야 합니다. [$comp3]와 같은 참조는 ICE69에서 경고를 발생합니다.

AppId 테이블은 Verb 테이블과 비슷한 상황이 있습니다. 구성 요소 참조에 Class 테이블을 사용합니다. 이 경우 AppId 테이블은 Verb-Extension 유효성 검사(현재 AppId-Class)와 동일한 방식으로 유효성을 검사합니다.

Class 테이블의 Argument 열은 바로 가기, 레지스트리 및 유사한 테이블처럼 유효성이 검사됩니다.

실행 중에 사용되는 테이블(발견된 경우에만)

IniFile

RemoveIniFile

Registry

RemoveRegistry

ServiceControl

ServiceInstall

바로 가기

동사

내선 번호

클래스

AppId

환경

ICE 참조