ICE38

ICE38 會驗證目前使用者設定檔下所安裝的每個元件,也會在Component 資料表的 KeyPath 資料行的HKEY_CURRENT_USER根目錄下指定登錄機碼。

結果

如果安裝在使用者設定檔下的元件未指定 HKCU 登錄機碼,ICE38 就會張貼錯誤。

範例

ICE38 報告範例的下列錯誤。

ICE38 錯誤 Description
元件元件元件 1 會安裝至使用者設定檔。 它必須使用 HKCU 下的登錄機碼作為其 KeyPath,而不是檔案。 Component1 的屬性資料行值為 0,這表示元件必須使用檔案做為其 KeyPath。 這會導致多位使用者在同一部電腦上安裝元件時發生困難。 若要修正 Component1 上的此錯誤,請在 Component 資料表 的 Attributes 資料行中設定 RegistryKeyPath 位,並將 KeyPath 資料行中的專案變更為 Registry 資料表的 Registry 資料行中列出的值。
元件元件 2 會安裝至使用者設定檔。 它必須使用 HKCU 下的登錄機碼作為其 KeyPath。 KeyPath 目前為 Null。 Component2 已在 Component 資料表的 Attributes 資料行中設定 RegistryKeyPath 位。 因此,KeyPath 欄位必須包含登錄 資料表 之登錄資料行的索引鍵,但 KeyPath 資料行為 Null。 若要修正此錯誤,請將 KeyPath 值變更為登錄資料表中的有效專案。
元件元件 3 會安裝至使用者設定檔。 其 KeyPath 登錄機碼必須落在 HKCU 之下。 Component3 在 Component 資料表 的 Attributes 資料行中設定 RegistryKeyPath 位,但登錄資料表之 Root 資料行中指定的登錄專案根目錄會指定 HKEY_LOCAL_MACHINE ,而不是 HKEY_CURRENT_USER。 若要修正此錯誤, 請使用 HKEY_LOCAL_MACHINE 底 下的有效登錄專案作為此元件的 KeyPath,或將 登錄資料表 的 Root 資料行中的值變更為 -1 或 1。
Component4 的 KeyPath 登錄專案不存在。 Component4 在 Component 資料表 的 Attributes 資料行中設定 RegistryKeyPath 位,但 KeyPath 資料行中的專案不存在於 登錄資料表中。 若要修正此錯誤,請將 Reg4 的專案新增至位於 HKEY_CURRENT_USER下的登錄資料表。
登錄專案 Reg5 會設定為 Component5 的 KeyPath,但該登錄專案不屬於 Component5。 找到元件之 KeyPath 資料行中所參考的登錄專案,並位於 HKCU 樹狀結構下,但登錄專案的 [Component_] 資料行不會參考它列為 KeyPath 的相同元件。 這表示只有在安裝其他元件時,才會建立做為元件 KeyPath 的登錄專案。 若要修正此錯誤,請將 KeyPath 值變更為參考屬於元件的登錄專案,或將登錄專案變更為屬於該元件作為 KeyPath 的元件。

 

目錄資料表 (部分)

Directory Directory_Parent DefaultDir
Dir1 StartMenuFolder
Dir2 DesktopFolder
Dir3 Dir3 AppData
Dir4 Dir3 SubDir

 

元件資料表 (部分)

元件 目錄_ 屬性 KeyPath
Component1 Dir1 0 File1
Component2 Dir2 4
Component3 Dir3 4 Reg3
Component4 Dir4 4 Reg4
Component5 Dir5 4 Reg5

 

登錄表 (部分)

登錄 Root 元件_
Reg3 2 Component3
Reg5 0 Component4

 

ICE 參考