다음을 통해 공유


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]을 변경합니다.

바로 가기 테이블(부분)

지름길 구성 요소_ 논쟁
테스트 QuickTest -v [$Test]
Shortcut2 QuickTest [$Test 2]

 

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

동사 테이블(부분)

확장 동사_ 논쟁
tst 열다 -v [$comp 1][$comp 2]

 

확장 테이블(부분)

확장 구성 요소_
tst comp1
tst comp2

 

featureComponents 테이블

특징_ 구성 요소_
Feature1 QuickTest
Feature1 테스트
기능 2 Test2

 

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

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

클래스 테이블의 인수 열은 바로 가기, 레지스트리및 유사한 테이블과 같이 유효성이 검사됩니다.

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

IniFile

RemoveIniFile

레지스트리

RemoveRegistry

ServiceControl

ServiceInstall

바로 가기

동사

확장

클래스

AppId

환경

ICE 참조