Como usar símbolos para reduzir o tamanho do patch binário
O uso de símbolos públicos para os binários de imagem de destino e atualização pode reduzir os tamanhos de patch binários em aproximadamente metade. A redução real depende dos símbolos usados. Observe que o uso de símbolos pode resultar em tempos de criação de patch mais lentos porque leva mais tempo para processar os arquivos de símbolo.
Para reduzir o tamanho de um patch binário usando símbolos, você deve fornecer símbolos para os binários de imagem de destino e de atualização. Especifique os símbolos na coluna SymbolPaths da tabela TargetImages e a coluna SymbolPaths da tabela UpgradedImages. Você deve usar o Visual C++ para gerar símbolos no formato de arquivo de banco de dados do programa (PDB). As versões mais recentes do Visual C++ fornecem todas as informações necessárias no arquivo PDB. Versões mais antigas do Visual C++ também geram o formato de arquivo de depuração (DBG). Nesse caso, o valor SymbolsPaths deve especificar o local dos arquivos PDB e DBG.
Por exemplo, TargetImage para um patch pode ser o pacote de instalação fornecido com o Windows 2000 e que instala a versão 1.1.1029.0 do MSI.DLL. UpgradedImage pode ser o pacote de instalação atualizado que acompanha o Windows 2000 com Service Pack 1 (SP1) e que instala a versão 1.11.1314.0 do MSI.DLL. Dois arquivos PCP (Propriedades de Criação de Patch) teriam que ser criados, um com a coluna SymbolPaths das tabelas TargetImages e UpgradedImages deixou NULL (em branco) e o outro com a coluna SymbolPaths das tabelas TargetImages e UpgradedImages preenchidas com o local dos símbolos para os binários. Nesse caso, o tamanho do patch gerado sem usar símbolos pode ser aproximadamente três vezes o tamanho do patch gerado usando símbolos.
O utilitário Mpatch.exe pode ser usado para testar a geração de patches binários para um único arquivo e para marcar se os símbolos são válidos ou não. O utilitário Mpatch.exe está incluído nos Componentes do SDK do Windows para Desenvolvedores do Windows Installer. A saída de Mpatch.exe indicará se os símbolos não correspondem.
Por exemplo, insira a linha de comando a seguir para marcar se os símbolos são válidos ou não.
mpatch.exe -NEWSYMPATH:d:\update -OLDSYMPATH:d:\target d:\target\example.dll d:\update\example.dll example.pat
Se os símbolos não estiverem no local correto, a saída de Mpatch.exe poderá incluir o aviso a seguir.
WARNING: no debug symbols for d:\update\example.dll