ICE69

ICE69 Vérifie que toutes les sous-chaînes de la forme [$componentkey] dans une chaîne mise en forme n’ont pas de références croisées à des composants. Une référence entre composants se produit lorsque la propriété [$componentkey] d’une chaîne mise en forme fait référence à un composant autre que le composant stocké dans la colonne Component_ de vos tables.

Les problèmes de référencement entre composants découlent de la façon dont les chaînes mises en forme sont évaluées. Si le composant référencé avec la propriété [$componentkey] est déjà installé et n’est pas modifié pendant l’installation en cours (par exemple, réinstallation, déplacement vers la source, etc.), l’expression [$componentkey] prend la valeur null, car l’état d’action du composant dans [$componentkey] est null. Des problèmes similaires peuvent se produire pendant les opérations de mise à niveau et de réparation.

Résultats

ICE69 renvoie une erreur si une sous-chaîne [$componentkey] dans une chaîne mise en forme fait une référence croisée à un composant d’une autre fonctionnalité. ICE69 renvoie un avertissement si une sous-chaîne [$componentkey] dans une chaîne mise en forme fait une référence croisée à un composant dans la même fonctionnalité. (La table FeatureComponents est utilisée pour déterminer ce mappage. Il doit être mappé à la même fonctionnalité pour l’avertissement. Le référencement de composants dans les fonctionnalités parentes ou enfants est considéré comme une erreur.)

ICE69 signale une erreur si la sous-chaîne [#FileKey] dans une chaîne mise en forme fait référence à un fichier qui n’est pas spécifié dans la table File comme appartenant au même composant.

Exemple

ICE69 signale ce qui suit pour les exemples présentés.

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

Pour corriger cette erreur, ne faites pas de référence croisée des composants. Modifiez le [$componentkey] pour qu’il corresponde au composant du raccourci.

Table Shortcut (partielle)

Raccourci Component_ Argument
Test QuickTest -v [$Test]
Shortcut2 QuickTest [$Test2]

 

Les tables Verb et Extension sont des cas spéciaux dans la mesure où la table Verb fait référence à une extension qui appartient à un composant. Toutefois, une Extension peut appartenir à plusieurs composants, car la clé primaire de la table d’extension est composée des colonnes Extension et Component_. Vous pouvez logiquement avoir la situation suivante.

Table Verb (partielle)

Extension Verb_ Argument
tst ouvrir -v [$comp1][$comp2]

 

Table Extension (partielle)

Extension Component_
tst comp1
tst comp2

 

Table FeatureComponents

Feature_ Component_
Feature1 QuickTest
Feature1 Test
Feature2 Test 2

 

Dans ce cas, vous devez vous assurer qu’au moins une des propriétés [$componentkey] correspond à une valeur non null. Toutefois, chaque propriété [$componentkey] de la colonne Argument de la table Verb ([$comp 1] et [$comp 2] dans l’exemple ci-dessus) doit référencer un composant possible inclus avec l’extension associée au verbe. Une référence comme [$comp 3] entraînerait un avertissement d’ICE69.

La table AppId présente une situation similaire à la table Verb. Elle utilise la table Class pour sa référence de composant. Dans ce cas, la table AppId est validée de la même manière que la validation Verb-Extension (désormais AppId-Class).

La colonne Argument de la table Class est validée, comme les tables Shortcut, Registry et similaires.

Table utilisée pendant l’exécution (uniquement si elle est trouvée)

IniFile

RemoveIniFile

Registre

RemoveRegistry

ServiceControl

ServiceInstall

Raccourci

Verb

Extension

Classe

AppID

Environment

Référence ICE