Dela via


ICE69

ICE69 kontrollerar att alla delsträngar i formuläret [$componentkey] inom en formaterad sträng inte korsreferenskomponenter. En referens för flera komponenter inträffar när egenskapen [$componentkey] för en formaterad sträng refererar till en annan komponent än komponenten som lagras i kolumnen Component_ i tabellerna.

Problem med korskomponentreferenser beror på hur formaterade strängar utvärderas. Om komponenten som refereras till egenskapen [$componentkey] redan är installerad och inte ändras under den aktuella installationen (till exempel ominstalleras, flyttas till källan och så vidare) utvärderas uttrycket [$componentkey] till null, eftersom åtgärdstillståndet för komponenten i [$componentkey] är null. Liknande problem kan uppstå under uppgraderings- och reparationsåtgärder.

Resultat

ICE69 returnerar ett fel om en [$componentkey] delsträng i en formaterad sträng korsreferenser till en komponent i en annan funktion. ICE69 returnerar en varning om en [$componentkey] delsträng i en formaterad sträng korsreferenser en komponent i samma funktion. (Tabellen FeatureComponents används för att fastställa den här mappningen. Den måste mappas till samma funktion för varningen. Att referera till komponenter i överordnade funktioner eller referera till komponenter i underordnade funktioner anses vara ett fel.)

ICE69 rapporterar ett fel om delsträngen [#FileKey] i en formaterad sträng refererar till en fil som inte anges i tabellen File som tillhör samma komponent.

Exempel

ICE69 rapporterar följande för de exempel som visas.

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

Åtgärda det här felet genom att inte korsreferensera komponenter. Ändra [$componentkey] så att den matchar komponenten i genvägen.

genvägstabell (partiell)

Genväg Komponent_ Argument
Test QuickTest -v [$Test]
Genväg 2 QuickTest [$Test 2]

 

Tabellerna Verb och Extension är specialfall där verbtabellen refererar till ett tillägg som tillhör en komponent. Ett tillägg kan dock tillhöra flera komponenter eftersom den primära nyckeln för tilläggstabellen består av kolumnerna Extension och Component_. Du kan logiskt ha följande situation.

verbtabell (partiell)

Förlängning Verb_ Argument
Tst öppna -v [$comp 1][$comp 2]

 

tilläggstabell (partiell)

Förlängning Komponent_
Tst comp1
Tst comp2

 

FeatureComponents Table

Drag_ Komponent_
Funktion1 QuickTest
Funktion1 Test
Funktion 2 Test2

 

I det här fallet måste du se till att minst en av egenskaperna [$componentkey] utvärderas till ett värde som inte är null. Men varje [$componentkey] egenskap i kolumnen Argument i verbtabellen ([$comp 1] och [$comp 2] i exemplet ovan) måste referera till en möjlig komponent som ingår i tillägget som är associerat med verbet. En referens som [$comp 3] skulle resultera i en varning från ICE69.

Tabellen AppId har en liknande situation som verbtabellen. Den använder tabellen Class som komponentreferens. I det här fallet verifieras AppId-tabellen på samma sätt som Verb-Extension valideringen (nu AppId-Class).

Kolumnen Argument i tabellen Klass verifieras som Shortcut, Registryoch liknande tabeller.

Tabell som används under körningen (endast om den hittas)

IniFile

RemoveIniFile

Registry

RemoveRegistry

ServiceControl

ServiceInstall

genväg

Verb

tillägg

klass

AppId

Miljö

ICE-referens