ICE43

ICE43 は、ターゲットとして機能を参照していないショートカット (アドバタイズされていないショートカット) が、キー パスとして HKCU レジストリ エントリを持つコンポーネントに含まれることを検証します。

結果

ICE43 は、アドバタイズされていないショートカットが、キー パスとして HKCU レジストリ エントリを持たないコンポーネントに含まれている場合、エラー メッセージを表示します。

示されている例では、ICE43 から次のエラーが報告されます。

ICE43 エラー 説明
コンポーネント Component1 には、アドバタイズされていないショートカットがあります。 ファイルではなく、HKCU の下のレジストリ キーを KeyPath として使う必要があります。 Component1 の属性列は 0 であり、コンポーネントでファイルが KeyPath として使われていることを意味します。 これにより、このコンポーネントのアドバタイズされていないショートカットは、そのコンピューターの最初のユーザーにのみインストールされます。 後でコンポーネントをインストールしたユーザーの場合、インストーラーにはコンポーネントがコンピューター上に既に存在するように見えるため、ショートカットは表示されません。 このエラーを解決するには、Attributes の RegistryKeyPath ビットを設定して Component をレジストリ エントリに切り替えた後、KeyPath の値を Registry テーブルの有効なエントリに変更します。
コンポーネント Component2 には、アドバタイズされていないショートカットがあります。 HKCU の下のレジストリ キーを KeyPath として使う必要があります。 KeyPath は現在 null です。 Attributes 列はレジストリを使うように設定されていますが、KeyPath は null です。 KeyPath では Registry テーブルのエントリを参照する必要があります。 このエラーを解決するには、KeyPath の値を Registry テーブルの有効なエントリに変更します。
コンポーネント Component3 には、アドバタイズされていないショートカットがあります。 その KeyPath レジストリ キーは HKCU の下にある必要があります。 Attributes 列はレジストリを使うように設定されていますが、参照されているレジストリ エントリは HKCU の下にありません。 このエラーを解決するには、このコンポーネントの KeyPath を別のレジストリ エントリに切り替えるか、レジストリ エントリの Root 値を -1 または 1 に変更します。
コンポーネント Component4 の KeyPath レジストリ エントリが存在しません。 コンポーネントの KeyPath 列で参照されているレジストリ エントリが、Registry テーブルにありません。 このエラーを解決するには、エントリを作成します。
コンポーネント Component5 の KeyPath としてレジストリ エントリ Reg5 が設定されていますが、そのレジストリ エントリは Component5 に属していません。 コンポーネントの KeyPath 列で参照されているレジストリ エントリは HKCU ツリーの下にありますが、そのレジストリ エントリの Component_ 列で、それが KeyPath として指定されているのと同じコンポーネントが参照されていません。 つまり、コンポーネントの KeyPath として使われているレジストリ エントリは、他のコンポーネントがインストールされた場合にのみ作成されます。 このエラーを解決するには、そのコンポーネントに属しているレジストリ エントリを参照するように KeyPath の値を変更するか、レジストリ エントリを KeyPath としてそれを使っているコンポーネントに属するように変更します。

 

Component テーブル (一部)

コンポーネント 属性 KeyPath
Component1 0 File1
Component2 4  
Component3 4 Reg3
Component4 4 Reg4
Component5 4 Reg5

 

Registry テーブル (部分)

レジストリ Root Component_
Reg3 2 Component3
Reg5 0 Component4

 

ICE リファレンス