ICE69

ICE69 verifica che tutte le sottostringhe del form [$componentkey] all'interno di una stringa formattata non facciano riferimento incrociato ai componenti. Un riferimento tra componenti si verifica quando la proprietà [$componentkey] di una stringa formattata fa riferimento a un componente diverso dal componente archiviato nella colonna Component_ delle tabelle.

I problemi di riferimento tra componenti derivano dal modo in cui vengono valutate le stringhe formattate . Se il componente a cui fa riferimento la proprietà [$componentkey] è già installato e non viene modificato durante l'installazione corrente (ad esempio, essere reinstallato, spostato nell'origine e così via), l'espressione [$componentkey] restituisce null, perché lo stato dell'azione del componente in [$componentkey] è Null. Possono verificarsi problemi simili durante le operazioni di aggiornamento e ripristino.

Risultato

ICE69 restituisce un errore se una sottostringa [$componentkey] all'interno di una stringa formattata fa riferimento a un componente in un'altra funzionalità. ICE69 restituisce un avviso se una sottostringa [$componentkey] all'interno di una stringa formattata fa riferimento a un componente nella stessa funzionalità. La tabella FeatureComponents viene usata per determinare questo mapping. Deve eseguire il mapping alla stessa funzionalità per l'avviso. Il riferimento ai componenti nelle funzionalità padre o ai componenti di riferimento nelle funzionalità figlio è considerato un errore.

ICE69 segnala un errore se la sottostringa [#FileKey] all'interno di una stringa formattata fa riferimento a un file non specificato nella tabella File come appartenente allo stesso componente.

Esempio

ICE69 riporta quanto segue per gli esempi illustrati.

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

Per correggere questo errore, non fare riferimento a componenti incrociati. Modificare [$componentkey] in modo che corrisponda al componente del collegamento.

Tabella di scelta rapida (parziale)

Tasto di scelta rapida Componente_ Argomento
Test Quicktest -v [$Test]
Collegamento 2 Quicktest [$Test 2]

 

Le tabelle verbo ed estensione sono casi speciali in cui la tabella verbo fa riferimento a un'estensione appartenente a un componente. Un'estensione, tuttavia, può appartenere a più componenti perché la chiave primaria per la tabella di estensione è costituita dalle colonne Extension e Component_. È possibile avere logicamente la situazione seguente.

Tabella verbo (parziale)

Estensione Verbo_ Argomento
Tst apre -v [$comp 1][$comp 2]

 

Tabella di estensione (parziale)

Estensione Componente_
Tst comp1
Tst comp2

 

Tabella FeatureComponents

Funzionalità_ Componente_
Feature1 Quicktest
Feature1 Test
Feature2 Test2

 

In questo caso, è necessario assicurarsi che almeno una delle proprietà [$componentkey] restituisca un valore non Null. Tuttavia, ogni proprietà [$componentkey] nella colonna Argument della tabella Verb ([$comp 1] e [$comp 2] nell'esempio precedente) deve fare riferimento a un possibile componente incluso nell'estensione associata al verbo. Un riferimento come [$comp 3] genera un avviso da ICE69.

La tabella AppId presenta una situazione simile alla tabella Verb. Usa la tabella Class per il relativo riferimento al componente. In questo caso, la tabella AppId viene convalidata nello stesso modo della convalida Verb-Extension (ora AppId-Class).

La colonna Argument della tabella Class viene convalidata come collegamento, Registro di sistema e tabelle simili.

Tabella usata durante l'esecuzione (solo se trovato)

IniFile

RemoveIniFile

Registro

RemoveRegistry

ServiceControl

ServiceInstall

Scelte rapide

Verbo

Estensione

Classe

Appid

Environment

Riferimento ICE