Freigeben über


ICE69

ICE69 überprüft, ob alle Teilzeichenfolgen des Formulars [$componentkey] innerhalb einer formatierten Zeichenfolge keine Querverweiskomponenten enthalten. Ein komponentenübergreifender Verweis tritt auf, wenn die [$componentkey]-Eigenschaft einer formatierten Zeichenfolge auf eine andere Komponente als die Komponente verweist, die in der Component_ Spalte Ihrer Tabellen gespeichert ist.

Probleme mit komponentenübergreifenden Verweisen ergeben sich aus der Art und Weise, wie formatierten Zeichenfolgen ausgewertet werden. Wenn die Komponente, auf die mit der [$componentkey]-Eigenschaft verwiesen wird, bereits installiert ist und während der aktuellen Installation nicht geändert wird (z. B. neu installiert, in die Quelle verschoben usw.), wird der Ausdruck [$componentkey] als NULL ausgewertet, da der Aktionszustand der Komponente in [$componentkey] null ist. Ähnliche Probleme können bei Upgrade- und Reparaturvorgängen auftreten.

Ergebnis

ICE69 gibt einen Fehler zurück, wenn eine [$componentkey]-Teilzeichenfolge innerhalb eines formatierten Zeichenfolge querverweise auf eine Komponente in einem anderen Feature verweist. ICE69 gibt eine Warnung zurück, wenn eine [$componentkey]-Teilzeichenfolge innerhalb einer formatierten Zeichenfolge quer auf eine Komponente im selben Feature verweist. (Die FeatureComponents- Tabelle wird verwendet, um diese Zuordnung zu bestimmen. Es muss demselben Feature für die Warnung zugeordnet werden. Das Verweisen auf Komponenten in übergeordneten Features oder verweisende Komponenten in untergeordneten Features wird als Fehler angesehen.)

ICE69 meldet einen Fehler, wenn die [#FileKey]-Teilzeichenfolge innerhalb einer formatierten Zeichenfolge auf eine Datei verweist, die in der Datei- Tabelle nicht als Zugehörigkeit zur gleichen Komponente angegeben ist.

Beispiel

ICE69 meldet folgendes für die gezeigten Beispiele.

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."

Um diesen Fehler zu beheben, verweisen Sie nicht auf Querverweiskomponenten. Ändern Sie die [$componentkey] so, dass sie der Komponente der Verknüpfung entspricht.

Verknüpfungstabelle (teilweise)

Abkürzung Bestandteil_ Argument
Test QuickTest -v [$Test]
Verknüpfung2 QuickTest [$Test 2]

 

Die Tabellen Verb und Extension sind Sonderfälle, in denen die Verb-Tabelle auf eine Erweiterung verweist, die zu einer Komponente gehört. Eine Erweiterung kann jedoch zu mehreren Komponenten gehören, da der Primärschlüssel für die Erweiterungstabelle aus den Spalten Erweiterung und Component_ besteht. Sie können die folgende Situation logisch haben.

VerbTabelle (teilweise)

Erweiterung Verb_ Argument
Tst offen -v [$comp 1][$comp 2]

 

Erweiterungstabelle (teilweise)

Erweiterung Bestandteil_
Tst comp1
Tst Comp2

 

FeatureComponents Table

Merkmal_ Bestandteil_
Feature1 QuickTest
Feature1 Test
Feature2 Test2

 

In diesem Fall müssen Sie sicherstellen, dass mindestens eine der [$componentkey]-Eigenschaften zu einem Wert ungleich NULL ausgewertet wird. Jede [$componentkey]-Eigenschaft in der Argumentspalte der Verb-Tabelle ([$comp 1] und [$comp 2] im obigen Beispiel) muss jedoch auf eine mögliche Komponente verweisen, die der Erweiterung zugeordnet ist, die dem Verb zugeordnet ist. Ein Verweis wie [$comp 3] würde zu einer Warnung von ICE69 führen.

Die AppId-Tabelle weist eine ähnliche Situation wie die Verb-Tabelle auf. Es verwendet die Class-Tabelle für den Komponentenverweis. In diesem Fall wird die AppId-Tabelle auf die gleiche Weise wie die Verb-Extension Validierung (jetzt AppId-Class) überprüft.

Die Argumentspalte der Klassentabelle wird wie die Shortcut, Registryund ähnliche Tabellen überprüft.

Tabelle, die während der Ausführung verwendet wird (nur wenn gefunden)

IniFile-

RemoveIniFile-

Registrierungs-

RemoveRegistry-

ServiceControl-

ServiceInstall-

Verb-

Erweiterungs-

Klasse

AppId-

Environment

ICE Reference