Поделиться через


Исправление выбранных регионов файла

При исправлении файлов с переменным содержимым может потребоваться сохранить выбранные области целевого файла, чтобы предотвратить потерю критически важной информации. Например, некоторые приложения поменяют сведения о пользователе в исполняемом файле. Поскольку содержимое целевого файла может зависеть от компьютера, на котором установлено приложение, становится трудно определить, является ли конкретный файл допустимым целевым объектом для исправления. Сведения о пользователе, записанные в целевом файле, также могут быть перезаписаны исправлением.

При создании файла свойств создания исправлений (PCP) с Msimsp.exe и PATCHWIZ.DLLможно указать, что сведения в определенных регионах целевого файла будут игнорироваться во время установки исправлений. Можно также указать, что сведения в других регионах целевого файла будут сохранены и скопированы в расположение смещения в обновленном файле. Вы указываете, какие области целевого файла следует игнорировать и какие регионы следует сохранить при создании таблиц TargetFiles OptionalData, ExternalFiles и FamilyFileRanges .

Используйте столбец RetainOffsets таблицы TargetFiles OptionalData и столбцы RetainOffsets и RetainLengths таблицы FamilyFileRanges , чтобы скопировать диапазон сведений из целевого файла в диапазон смещения в обновленном файле. Сведения в этом диапазоне сохраняются. Укажите длину диапазона с помощью столбцов RetainLengths таблицы FamilyFileRanges. Длина сохраненного диапазона одинакова в целевом и обновленном файлах. Укажите смещение диапазона в целевом файле с помощью столбца RetainOffsets таблицы TargetFiles OptionalData. Укажите смещение диапазона в обновленном файле с помощью столбца RetainOffsets таблицы FamilyFileRanges. Таким образом, диапазон сохраняемого целевого файла является значением RetainOffsets в таблице TargetFiles OptionalData плюс RetainLengths. Эти сведения копируются в файл обновления в диапазоне, заданном значением RetainOffsets в таблицах FamilyFileRanges и RetainLengths. Можно указать несколько диапазонов, но порядок длин должен соответствовать порядку смещений.

Используйте таблицу TargetFiles OptionalData , чтобы игнорировать диапазон целевого файла. Сведения в этом диапазоне целевого файла по-прежнему могут быть перезаписаны исправлением. Укажите смещение диапазона в столбце IgnoreOffsets и его длину в столбце IgnoreLengths. Можно указать несколько диапазонов, но порядок длин должен соответствовать порядку смещений.

Значения в столбцах длины и смещения могут быть десятичными или шестнадцатеричными. PATCHWIZ.DLL рассматривает значение как шестнадцатеричное, если оно имеет префикс "0x". Столбцы являются строковыми столбцами, поэтому PATCHWIZ.DLL преобразует значения в ULONG. Столбец length указывает длину в байтах.