ICE38 會驗證目前使用者設定檔下所安裝的每個元件,也會在 Component 資料表之 KeyPath 資料行的 HKEY_CURRENT_USER 根目錄下指定登錄機碼,。
結果
如果安裝在使用者配置檔下的元件未指定 HKCU 登錄機碼,ICE38 就會張貼錯誤。
例
ICE38 會針對顯示的範例報告下列錯誤。
| ICE38 錯誤 | 描述 |
|---|---|
| Component1 會安裝至使用者配置檔。 它必須使用 HKCU 下的登錄機碼做為其 KeyPath,而不是檔案。 | Component1 的屬性數據行值為 0,這表示元件必須使用檔案作為 KeyPath。 當多個使用者在同一部計算機上安裝元件時,這會造成困難。 若要修正 Component1 上的此錯誤,請在 Component 數據表的 [屬性] 資料行中設定 RegistryKeyPath 位,並將 KeyPath 數據行中的項目變更為 Registry 數據表的 [登錄] 資料行中所列的值,。 |
| 元件元件 2 會安裝至使用者配置檔。 它必須使用 HKCU 下的登錄機碼作為其 KeyPath。 KeyPath 目前為 NULL。 | Component2 在 Component 資料表的 [屬性] 資料行中設定了 RegistryKeyPath 位,。 因此,KeyPath 字段必須包含 登錄數據表的登錄數據行索引鍵, 但 KeyPath 數據行為 Null。 若要修正此錯誤,請將KeyPath值變更為登錄數據表中的有效專案。 |
| 元件元件 3 會安裝至使用者配置檔。 KeyPath 登錄機碼必須落在 HKCU 之下。 | Component3 在 [元件] 資料表的 [屬性] 資料行中設定了 RegistryKeyPath 位,但登錄數據表之 [根] 資料行中指定的登錄專案的根目錄會指定 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_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 |
登入表 (部分)
| 註冊表 | 根 | 價值 | 元件_ |
|---|---|---|---|
| Reg3 | 2 | Component3 | |
| Reg5 | 0 | Component4 |
相關主題