ICE69

ICE69 は、書式設定された文字列内の [$componentkey] という形式のすべての部分文字列が、コンポーネントを相互参照していないことを確認します。 コンポーネント間参照は、書式設定された文字列の [$componentkey] プロパティが、テーブルの Component_ 列に格納されているコンポーネント以外のコンポーネントを参照すると発生します。

コンポーネント間参照の問題は、書式設定された文字列の評価方法によって発生します。 [$componentkey] プロパティで参照されているコンポーネントが既にインストールされていて、現在のインストールの間に変更されていない場合 (たとえば、再インストール、ソースへの移動など)、[$componentkey] 内のコンポーネントのアクション状態は null であるため、式 [$componentkey] は null と評価されます。 アップグレードと修復の操作中にも、同様の問題が発生する可能性があります。

結果

書式設定された文字列内の [$componentkey] 部分文字列が別の機能のコンポーネントを相互参照している場合、ICE69 はエラーを返します。 書式設定された文字列内の [$componentkey] 部分文字列が同じ機能のコンポーネントを相互参照している場合、ICE69 は警告を返します。 (FeatureComponents テーブルは、このマッピングを決定するために使われます。警告の場合は、同じ機能にマップしている必要があります。親機能内のコンポーネントの参照または子機能内のコンポーネントの参照は、エラーと見なされます。)

書式設定された文字列内の [#FileKey] 部分文字列が、同じコンポーネントに属すものとして File テーブルで指定されていないファイルを参照している場合、ICE69 はエラーを報告します。

示されている例に対して、ICE69 は以下を報告します。

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

このエラーを解決するには、コンポーネントを相互参照しないでください。 ショートカットのコンポーネントと一致するように [$componentkey] を変更します。

Shortcut テーブル (一部)

ショートカット Component_ 引数
テスト QuickTest -v [$Test]
Shortcut2 QuickTest [$Test2]

 

VerbExtension テーブルは特殊なケースであり、Verb テーブルはコンポーネントに属する拡張機能を参します。 ただし、Extension テーブルの主キーは Extension 列と Component_ 列で構成されているため、Extension は複数のコンポーネントに属すことができます。 論理的には次のような状況が発生する可能性があります。

Verb テーブル (一部)

拡張機能 Verb_ 引数
tst 開く -v [$comp1][$comp2]

 

Extension テーブル (一部)

拡張機能 Component_
tst comp1
tst comp2

 

FeatureComponents テーブル

Feature_ Component_
Feature1 QuickTest
Feature1 テスト
Feature2 Test2

 

この場合、[$componentkey] プロパティの少なくとも 1 つが null 以外の値に評価されるようにする必要があります。 ただし、Verb テーブルの Argument 列のすべての [$componentkey] プロパティは (上記の例では [$comp 1] と [$comp 2])、動詞に関連付けられた拡張機能に含まれる可能性のあるコンポーネントを参照している必要があります。 [$comp 3] のような参照では、ICE69 からの警告が発生します。

AppId テーブルには、Verb テーブルと同様の状況があります。 そのコンポーネント参照には Class テーブルが使われています。 この場合、AppId テーブルは、Verb-Extension の検証と同じ方法で検証されます (ここでは AppId-Class)。

Class テーブルの Argument 列は、ShortcutRegistry、および同様のテーブルと同じように検証されます。

実行中に使われるテーブル (見つかった場合のみ)

IniFile

RemoveIniFile

レジストリ

RemoveRegistry

ServiceControl

ServiceInstall

ショートカット

動詞

拡張子

クラス

AppId

環境

ICE リファレンス