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


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

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

Чтобы уменьшить размер двоичного исправления с помощью символов, необходимо предоставить символы для двоичных файлов целевого и обновляемого образа. Укажите символы в столбце 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. Выходные данные 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