ICE69
ICE69 は、形式の 文字列内のフォーム [$componentkey] のすべての部分文字列がコンポーネントを相互参照しないことを確認します。 コンポーネント間参照は、書式設定された文字列の [$componentkey] プロパティが、テーブルのComponent_列に格納されているコンポーネント以外のコンポーネントを参照する場合に発生します。
コンポーネント間参照の問題は、書式設定された 文字列 評価される方法から発生します。 [$componentkey] プロパティで参照されているコンポーネントが既にインストールされていて、現在のインストール中に変更されていない場合 (たとえば、再インストール中、ソースに移動中など)、式 [$componentkey] は null と評価されます。これは、[$componentkey] 内のコンポーネントのアクション状態が null であるためです。 アップグレードおよび修復操作中にも同様の問題が発生する可能性があります。
結果
ICE69 は、書式設定された 文字列内の [$componentkey] 部分文字列が別の機能のコンポーネントを相互参照する場合にエラーを返します。 ICE69 は、書式設定された文字列内の [$componentkey] 部分文字列が同じ機能内のコンポーネントを相互参照する場合に警告を返します。 (FeatureComponents テーブルを使用して、このマッピングを決定します。警告の同じ機能にマップする必要があります。親フィーチャ内のコンポーネントの参照または子フィーチャ内のコンポーネントの参照は、エラーと見なされます)。
ICE69 は、形式の 文字列内の [#FileKey] 部分文字列が、File テーブルで同じコンポーネントに属するファイルを参照している場合にエラーを報告します。
例
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]を変更します。
ショートカット テーブルの (一部)
近道 | コンポーネント_ | 引数 |
---|---|---|
試験 | QuickTest | -v [$Test] |
Shortcut2 | QuickTest | [$Test 2] |
Verb テーブルと Extension テーブルは、Verb テーブルがコンポーネントに属する拡張機能を参照するという特殊なケースです。 ただし、拡張機能テーブルの主キーは Extension 列と Component_ 列で構成されているため、拡張機能は複数のコンポーネントに属している可能性があります。 論理的には次のような状況が発生します。
動詞テーブルの (部分)
延長 | 動詞_ | 引数 |
---|---|---|
tst | 開ける | -v [$comp 1][$comp 2] |
拡張テーブルの (部分的)
延長 | コンポーネント_ |
---|---|
tst | comp1 |
tst | comp2 |
FeatureComponents テーブル の
特徴_ | コンポーネント_ |
---|---|
Feature1 | QuickTest |
Feature1 | 試験 |
Feature2 | Test2 |
この場合、少なくとも 1 つの [$componentkey] プロパティが null 以外の値に評価されるようにする必要があります。 ただし、Verb テーブルの Argument 列のすべての [$componentkey] プロパティ (上記の例では [$comp 1] と [$comp 2] ) は、動詞に関連付けられている拡張機能に含まれる可能性のあるコンポーネントを参照する必要があります。 [$comp 3] のような参照では、ICE69 からの警告が発生します。
AppId テーブル には、Verb テーブルと同様の状況があります。 クラス テーブル をコンポーネント参照に使用します。 この場合、AppId テーブルは、Verb-Extension 検証と同じ方法で検証されます (現在は AppId-Class)。
クラス テーブルの引数列は、ショートカット、レジストリ、および同様のテーブルと同様に検証されます。
実行中に使用されるテーブル (見つかった場合のみ)
IniFile を する
RemoveIniFile の
RemoveRegistry を する
ServiceControl の
関連トピック