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


Использование символов для уменьшения размера бинарного патча

Использование общедоступных символов для целевых и обновляемых образов может уменьшить размеры двоичных патчей примерно вдвое. Фактическое сокращение зависит от используемых символов. Обратите внимание, что использование символов может привести к более медленному времени создания исправлений, так как для обработки файлов символов требуется больше времени.

Чтобы уменьшить размер двоичного исправления с помощью символов, необходимо предоставить символы как для двоичных файлов целевого образа, так и для файлов образа обновления. Укажите символы в столбце SymbolPaths таблицы TargetImages и в столбце SymbolPaths таблицы UpgradedImages. Для создания символов в формате файла базы данных программы (PDB) необходимо использовать Visual C++ . Новые версии Visual C++ предоставляют все необходимые сведения в PDB-файле. Более старые версии Visual C++ также создают формат файла отладки (DBG). В этом случае значение SymbolsPaths должно указывать расположение файлов PDB и DBG.

Например, TargetImage для исправления может быть пакетом установки, который поставляется с Windows 2000 и устанавливает версию 1.1.1029.0 MSI.DLL. UpgradedImage может быть обновленным пакетом установки, который поставляется с Windows 2000 с пакетом обновления 1 (SP1) и устанавливает версию 1.11.1314.0 MSI.DLL. Затем необходимо создать два файла свойств создания исправлений (PCP): один, в котором столбцы SymbolPaths как в таблицах TargetImages, так и UpgradedImages, оставлены NULL (пустыми), и другой, со столбцами SymbolPaths в таблицах TargetImages и UpgradedImages, заполненными расположением символов для двоичных файлов. В этом случае размер исправления, созданного без использования символов, может быть примерно в три раза больше, чем размер исправления, созданного с помощью символов.

Служебная программа Mpatch.exe может использоваться для проверки создания двоичных исправлений для одного файла и проверки допустимости символов. Программа Mpatch.exe включена в компоненты Windows SDK для разработчиков Windows Installer. Выходные данные Mpatch.exe указывают, не совпадают ли символы.

Например, введите следующую командную строку, чтобы проверить, являются ли символы допустимыми.

mpatch.exe -NEWSYMPATH:d:\update -OLDSYMPATH:d:\target d:\target\example.dll d:\update\example.dll example.pat

Если символы не находятся в правильном расположении, выходные данные Mpatch.exe могут содержать следующее предупреждение.

WARNING: no debug symbols for d:\update\example.dll