Freigeben über


ICE69

ICE69 verifiziert, dass alle Teilzeichenfolgen der Form [$componentkey] in einer formatierten Zeichenfolge keine Querverweise auf Komponenten 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 Spalte „Component_“ Ihrer Tabellen gespeichert ist.

Probleme mit komponentenübergreifenden Verweisen ergeben sich aus der Auswertung formatierter Zeichenfolgen. Wenn die Komponente, auf die mit der Eigenschaft [$componentkey] 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] auf 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 einer formatierten Zeichenfolge auf eine Komponente in einem anderen Feature verweist. ICE69 gibt eine Warnung zurück, wenn eine [$componentkey]-Teilzeichenfolge innerhalb einer formatierten Zeichenfolge auf eine Komponente im gleichen Feature verweist. (Die FeatureComponents-Tabelle wird verwendet, um diese Zuordnung zu bestimmen. Sie muss für die Warnung auf das gleiche Feature verweisen. Ein Verweis auf Komponenten in übergeordneten Features oder ein Verweis auf 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 Dateitabelle nicht als Teil derselben 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, dürfen Sie keine Querverweise auf Komponenten vornehmen. Ändern Sie den [$componentkey], um der Komponente der Verknüpfung zu entsprechen.

Shortcut-Tabelle (teilweise)

Verknüpfung Component_ Argument
Test QuickTest -v [$Test]
Shortcut2 QuickTest [$Test2]

 

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 „Extension“ und „Component_“ besteht. Es kann logischerweise die folgende Situation eintreten.

Verb-Tabelle (partiell)

Durchwahl Verb_ Argument
tst open -v [$comp1][$comp2]

 

Extension-Tabelle (partiell)

Durchwahl Component_
tst comp1
tst comp2

 

FeatureComponents-Tabelle

Feature_ Component_
Feature1 QuickTest
Feature1 Test
Feature2 Test2

 

In diesem Fall müssen Sie sicherstellen, dass mindestens eine der [$componentkey]-Eigenschaften mit einem Wert ungleich NULL ausgewertet wird. Jede [$componentkey]-Eigenschaft in der Spalte „Argument“ der Verb-Tabelle ([$comp1] und [$comp2] im obigen Beispiel) muss jedoch auf eine mögliche Komponente verweisen, die in der mit dem Verb verbundenen Erweiterung enthalten ist. Ein Verweis wie [$comp3] würde zu einer Warnung von ICE69 führen.

Die AppId-Tabelle hat eine ähnliche Situation wie die Verb-Tabelle. Sie verwendet die Class-Tabelle als Komponentenreferenz. In diesem Fall wird die AppId-Tabelle auf die gleiche Weise wie die Verb-Extension-Validierung (jetzt AppId-Klasse) überprüft.

Die Argumentspalte der Class-Tabelle wird wie die Verknüpfung, Registrierung und ähnliche Tabellen überprüft.

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

IniFile

RemoveIniFile

Registrierung

RemoveRegistry

ServiceControl

ServiceInstall

Tastenkombination

Verb

Erweiterung

Klasse

AppId

Umgebung

ICE-Referenz