ICE69

ICE69 會檢查 格式化 字串內表單 [$componentkey] 的所有子字串都不會交叉參考元件。 當格式化字串的 [$componentkey] 屬性參照到資料表之Component_資料行中儲存之元件以外的元件時,就會發生跨元件參考。

跨元件參考的問題來自于評估 格式化 字串的方式。 如果已安裝 [$componentkey] 屬性所參考的元件,而且目前安裝期間尚未變更 (,例如重新安裝、移至來源) 等等,運算式 [$componentkey] 會評估為 null,因為 [$componentkey] 中的元件動作狀態為 null。 升級和修復作業期間可能會發生類似的問題。

結果

如果 格式化 字串內的 [$componentkey] 子字串會交叉參考另一個特徵中的元件,ICE69 會傳回錯誤。 如果格式化字串內的 [$componentkey] 子字串會交叉參考相同功能中的元件,ICE69 會傳回警告。 (FeatureComponents 資料表可用來判斷此對應。它必須對應至警告的相同功能。參考父功能中的元件或子功能中的參考元件會被視為 error.)

如果 格式化 字串內的 [#FileKey] 子字串參考屬於相同元件的 檔案 ,則 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] 以符合快捷方式的元件。

快速鍵資料表 (部分)

快速鍵 元件_ 引數
測試 QuickTest -v [$Test]
Shortcut2 QuickTest [$Test 2]

 

VerbExtension資料表是特殊案例,Verb 資料表會參考屬於元件的延伸模組。 不過,擴充功能可以屬於多個元件,因為延伸模組資料表的主鍵是由 Extension 和 Component_ 資料行所組成。 您可以邏輯上有下列情況。

動詞資料表 (部分)

分機 動詞_ 引數
Tst 開啟 -v [$comp 1][$comp 2]

 

延伸模組資料表 (部分)

分機 元件_
Tst comp1
Tst comp2

 

FeatureComponents 資料表

特徵_ 元件_
Feature1 QuickTest
Feature1 測試
Feature2 Test2

 

在此情況下,您必須確定至少有一個 [$componentkey] 屬性評估為非 Null 值。 不過,上述) 範例中 Verb 資料表之 Argument 資料行中的每個 [$componentkey] 屬性 ([$comp 1] 和 [$comp 2] 都必須參考與動詞相關聯的延伸模組所包含的可能元件。 類似 [$comp 3] 的參考會產生 ICE69 的警告。

AppId 資料表與 Verb 資料表類似。 它會使用 Class 資料表 進行其元件參考。 在此情況下,AppId 資料表會以與 appId 類別) Verb-Extension驗證 (相同的方式進行驗證。

類別資料表的 Argument 資料行會像 快捷方式登錄和類似的資料表一樣進行驗證。

只有在找到) 時,才會在執行期間使用的資料表 (

IniFile

RemoveIniFile

登錄

RemoveRegistry

ServiceControl

ServiceInstall

快速鍵

動詞命令

副檔名

類別

AppId

環境

ICE 參考