Sdílet prostřednictvím


ICE69

ICE69 zkontroluje, zda všechny podřetězce formuláře [$componentkey] v rámci formátovaného řetězce nepřevazují komponenty křížového odkazu. Odkaz mezi komponentami nastane, když vlastnost [$componentkey] formátovaného řetězce odkazuje na jinou komponentu než komponentu uloženou ve sloupci Component_ tabulek.

Problémy s odkazováním mezi komponentami vznikají ze způsobu, jakým se vyhodnocují formátované řetězce. Pokud je součást odkazovaná s vlastností [$componentkey] již nainstalována a během aktuální instalace se nemění (například přeinstalována, přesunuta do zdroje atd.), výraz [$componentkey] se vyhodnotí jako null, protože stav akce komponenty v [$componentkey] má hodnotu null. K podobným problémům může dojít během operací upgradu a opravy.

Výsledek

ICE69 vrátí chybu, pokud podřetězce [$componentkey] v rámci formátovaného řetězec křížově odkazuje na komponentu v jiné funkci. ICE69 vrátí upozornění, pokud podřetězce [$componentkey] ve formátovaný řetězec křížově odkazuje na komponentu ve stejné funkci. (K určení tohoto mapování se používá tabulka FeatureComponents. Musí se mapovat na stejnou funkci pro upozornění. Odkazování na komponenty v nadřazených funkcích nebo odkazování na komponenty v podřízených funkcích se považuje za chybu.)

ICE69 hlásí chybu, pokud podřetězce [#FileKey] v rámci formátovaného řetězec odkazuje na soubor, který není zadaný v tabulce File, jako patří do stejné komponenty.

Příklad

ICE69 uvádí následující příklady.

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

Chcete-li tuto chybu opravit, nepoužívejte křížové odkazy komponenty. Změňte [$componentkey] tak, aby odpovídala komponentě zástupce.

tabulka zástupců (částečná)

Zkratka Komponenta_ Argument
Test Rychlý test -v [$Test]
Zástupce 2 Rychlý test [$Test 2]

 

Tabulky Slovesa a rozšíření rozšíření jsou zvláštními případy v tom, že tabulka sloves odkazuje na rozšíření, které patří ke komponentě. Rozšíření ale může patřit do více komponent, protože primární klíč pro tabulku rozšíření je tvořen rozšířením a Component_ sloupci. Můžete mít logicky následující situaci.

slovesné tabulky (částečné)

Prodloužení Sloveso_ Argument
Tst otevřený -v [$comp 1][$comp 2]

 

rozšiřující tabulky (částečné)

Prodloužení Komponenta_
Tst comp1
Tst comp2

 

tabulky FeatureComponents

Rys_ Komponenta_
Funkce 1 Rychlý test
Funkce 1 Test
Funkce 2 Test2

 

V tomto případě je nutné zajistit, aby se alespoň jedna z vlastností [$componentkey] vyhodnotila na hodnotu, která není null. Každá vlastnost [$componentkey] ve sloupci Argument tabulky sloves ([$comp 1] a [$comp 2] ve výše uvedeném příkladu však musí odkazovat na možnou komponentu, která je součástí rozšíření přidruženého k příkazu. Odkaz jako [$comp 3] by mohl vést k upozornění z ICE69.

Tabulka AppId má podobnou situaci jako tabulka Slovesa. Pro referenční informace o komponentách používá tabulku Class. V tomto případě se tabulka AppId ověřuje stejným způsobem jako ověřování Verb-Extension (nyní AppId-Class).

Sloupec Argument tabulky třídy je ověřen jako Shortcut, Registrya podobné tabulky.

Tabulka použitá během provádění (pouze pokud byla nalezena)

IniFile

removeIniFile

registry

RemoveRegistry

ServiceControl

ServiceInstall

zástupce

sloveso

rozšíření

třídy

AppId

prostředí

referenční ICE