Partilhar via


Aplicar patch em regiões selecionadas de um arquivo

Ao aplicar patch de arquivos com conteúdo variável, pode ser necessário reter regiões selecionadas do arquivo de destino para evitar a perda de informações críticas. Por exemplo, alguns aplicativos aplicam selos de informações do usuário no arquivo executável. Como o conteúdo do arquivo de destino pode depender do computador no qual o aplicativo está instalado, fica difícil determinar se um arquivo específico é um destino válido para o patch. As informações do usuário gravados no arquivo de destino também podem ser substituídas por um patch.

Ao gerar um arquivo de PCP (propriedades de criação de patch) com Msimsp.exe e PATCHWIZ.DLL, especifique que as informações em determinadas regiões do arquivo de destino sejam ignoradas durante a aplicação de patch. Você também pode especificar que as informações em outras regiões do arquivo de destino sejam retidas e copiadas para um local de deslocamento no arquivo atualizado. Especifique quais regiões do arquivo de destino ignorar e quais regiões reter ao criar as tabelas TargetFiles OptionalData, ExternalFiles e FamilyFileRanges.

Use a coluna RetainOffsets da tabela TargetFiles OptionalData e as colunas RetainOffsets e RetainLengths da tabela FamilyFileRanges para copiar um intervalo de informações do arquivo de destino para um intervalo de deslocamento no arquivo atualizado. As informações nesse intervalo são mantidas. Especifique o comprimento do intervalo usando as colunas RetainLengths da tabela FamilyFileRanges. O comprimento do intervalo retido é o mesmo nos arquivos de destino e atualizados. Especifique o deslocamento do intervalo no arquivo de destino usando a coluna RetainOffsets da tabela OptionalData de TargetFiles. Especifique o deslocamento do intervalo no arquivo atualizado usando a coluna RetainOffsets da tabela FamilyFileRanges. O intervalo do arquivo de destino retido é, portanto, o valor de RetainOffsets na tabela OptionalData de TargetFiles mais RetainLengths. Essas informações são copiadas para o arquivo de atualização no intervalo fornecido pelo valor de RetainOffsets nas tabelas FamilyFileRanges mais RetainLengths. Especifique vários intervalos, mas a ordem dos comprimentos deve corresponder à ordem dos deslocamentos.

Use a tabela OptionalData de TargetFiles para ignorar um intervalo do arquivo de destino. As informações nesse intervalo do arquivo de destino ainda podem ser substituídas pelo patch. Especifique o deslocamento do intervalo na coluna IgnoreOffsets e seu comprimento na coluna IgnoreLengths. Especifique vários intervalos, mas a ordem dos comprimentos deve corresponder à ordem dos deslocamentos.

Os valores nas colunas de comprimentos e deslocamentos podem ser decimal ou hexadecimal. O PATCHWIZ.DLL tratará o valor como hexadecimal se ele for prefixado por "0x". As colunas são colunas da cadeia de caracteres, então o PATCHWIZ.DLL converte os valores em ULONGs. A coluna de comprimento especifica o comprimento em bytes.