Udostępnij za pośrednictwem


ICE69

ICE69 sprawdza, czy wszystkie podciągy formularza [$componentkey] w sformatowanym ciągu nie zawierają składników odwołania krzyżowego. Odwołanie między składnikami występuje, gdy właściwość [$componentkey] sformatowanego ciągu odwołuje się do składnika innego niż składnik przechowywany w kolumnie Component_ tabel.

Problemy z odwoływaniem się między składnikami wynikają ze sposobu oceniania ciągów sformatowanych. Jeśli składnik, do którego odwołuje się właściwość [$componentkey], jest już zainstalowany i nie jest zmieniany podczas bieżącej instalacji (na przykład ponowne zainstalowanie, przeniesienie do źródła itd.), wyrażenie [$componentkey] daje wartość null, ponieważ stan akcji składnika w [$componentkey] ma wartość null. Podobne problemy mogą wystąpić podczas operacji uaktualniania i naprawy.

Wynik

ICE69 zwraca błąd, jeśli podciąg [$componentkey] w sformatowany ciąg odwołuje się do składnika w innej funkcji. ICE69 zwraca ostrzeżenie, jeśli podciąg [$componentkey] w sformatowanym ciągu odwołuje się do składnika w tej samej funkcji. (Tabela FeatureComponents służy do określania tego mapowania. Musi być mapowana na tę samą funkcję dla ostrzeżenia. Odwoływanie się do składników w funkcjach nadrzędnych lub odwoływanie się do składników w funkcjach podrzędnych jest uznawane za błąd).

ICE69 zgłasza błąd, jeśli podciąg [#FileKey] w sformatowany ciąg odwołuje się do pliku, który nie został określony w tabeli File jako należący do tego samego składnika.

Przykład

Ice69 raportuje następujące przykłady.

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

Aby rozwiązać ten błąd, nie należy odwoływać się do składników referencyjnych. Zmień wartość [$componentkey], aby dopasować składnik skrótu.

tabeli skrótów (częściowe)

Skrót Składnik_ Argument
Test Szybki test -v [$Test]
Skrót2 Szybki test [$Test 2]

 

Tabele czasowników i rozszerzenia rozszerzenia są specjalnymi przypadkami, w których tabela Czasownik odwołuje się do rozszerzenia należącego do składnika. Rozszerzenie może jednak należeć do wielu składników, ponieważ klucz podstawowy tabeli rozszerzeń składa się z kolumn Extension i Component_. Logicznie można mieć następującą sytuację.

tabeli czasowników (częściowe)

Rozszerzenie Czasownik_ Argument
Tst otwierać -v [$comp 1][$comp 2]

 

tabeli rozszerzeń (częściowe)

Rozszerzenie Składnik_
Tst comp1
Tst comp2

 

FeatureComponents Table

Cecha_ Składnik_
Funkcja1 Szybki test
Funkcja1 Test
Funkcja2 Test2

 

W takim przypadku należy upewnić się, że co najmniej jedna z właściwości [$componentkey] zwraca wartość inną niż null. Jednak każda właściwość [$componentkey] w kolumnie Argument tabeli czasowników ([$comp 1] i [$comp 2] w powyższym przykładzie musi odwoływać się do możliwego składnika dołączonego do rozszerzenia skojarzonego z czasownikiem. Odwołanie takie jak [$comp 3] spowodowałoby ostrzeżenie z ICE69.

Tabela AppId ma podobną sytuację do tabeli Verb. Używa ona tabeli klasy na potrzeby odwołania do składników. W takim przypadku tabela AppId jest weryfikowana w taki sam sposób jak weryfikacja Verb-Extension (teraz AppId-Class).

Kolumna Argument tabeli Klasy jest weryfikowana, podobnie jak Skrót, Registryi podobne tabele.

Tabela używana podczas wykonywania (tylko w przypadku znalezienia)

IniFile

RemoveIniFile

Registry

removeRegistry

ServiceControl

ServiceInstall

skrótu

czasownik

rozszerzenia

klas

AppId

środowiska

dokumentacji ICE