修補檔案中選定的區域
修補具有變數內容的檔案時,可能需要保留目標檔案的選取區域,以防止遺失重要資訊。 例如,某些應用程式會將使用者資訊戳記到可執行檔中。 由於目標檔案的內容可能取決於安裝應用程式的計算機,因此很難判斷特定檔案是否為修補程式的有效目標。 在目標檔案中寫入的使用者資訊也可以由修補程式覆寫。
當您產生具有 Msimsp.exe 和 PATCHWIZ.DLL的修補程式建立屬性 (PCP) 檔案時,您可以指定修補期間會忽略目標檔案特定區域中的資訊。 您也可以指定將目標檔案之其他區域中的資訊保留並複製到更新檔案中的位移位置。 您可以在撰寫 TargetFiles OptionalData、ExternalFiles和 FamilyFileRanges 數據表時,指定要忽略的目標檔案區域,以及要保留的區域。
使用 TargetFiles OptionalData 數據表的 RetainOffsets 數據行,以及 FamilyFileRanges 數據表的 RetainOffsets 和 RetainLengths 數據行,將目標檔案的資訊範圍複製到更新檔案中的位移範圍。 保留此範圍中的資訊。 使用 FamilyFileRanges 數據表的 RetainLengths 數據行指定範圍的長度。 在目標和更新的檔案中,保留範圍的長度是相同的。 使用 TargetFiles OptionalData 數據表的 RetainOffsets 數據行,指定目標檔案中範圍的位移。 使用 FamilyFileRanges 資料表中 RetainOffsets 欄位,指定該更新檔案中範圍的位移。 因此,保留的目標檔案範圍是 “TargetFiles OptionalData” 表中的 “RetainOffsets” 值加上 “RetainLengths” 的結果。 這項資訊會複製到更新檔案中,範圍由FamilyFileRanges資料表中的RetainOffsets值加上RetainLengths所指定的範圍決定。 您可以指定多個範圍,但長度的順序必須符合位移的順序。
使用 TargetFiles OptionalData 數據表來忽略目標檔案的範圍。 此範圍中目標檔案中的資訊仍然可以由修補程式覆寫。 在 IgnoreOffsets 數據行中指定範圍的位移,並在 IgnoreLengths 數據行中指定其長度。 您可以指定多個範圍,但長度的順序必須符合位移的順序。
長度和位移數據行中的值可以是十進位或十六進位。 如果值前面加上 「0x」,PATCHWIZ.DLL 會將值視為十六進位。 數據行是字串數據行,因此PATCHWIZ.DLL會將值轉換成ULONG。 length 欄指定的長度以位元組為單位。