Share via


Como reduzir o tamanho do patch

A partir do Windows Installer versão 3.0, os autores de patch podem usar a linha de base do produto armazenada em cache pelo instalador para fazer a manutenção mais facilmente em aplicativos com patches delta menores. Em muitos casos, um patch delta que fornece informações de manutenção para um aplicativo pode ser significativamente menor do que um patch de arquivo completo ou um pacote de instalação que fornece as mesmas informações.

Windows Installer 2.0: sem suporte. A partir do Windows Installer 3.0, o instalador salva seletivamente as informações de linha de base sobre os arquivos quando eles são atualizados.

O Windows Installer fornece três métodos para atualizar e fazer a manutenção em aplicativos: pequenas atualizações, atualizações secundárias e atualizações principais. Uma pequena atualização também é conhecida como uma atualização de QFE (engenharia de correção rápida) e uma atualização secundária também é conhecida como uma atualização de (SP) service pack. Uma atualização principal típica remove um aplicativo anterior e instala um novo. O Windows Installer pode fornecer informações de manutenção para aplicativos como um pacote de instalação (.msi arquivo) ou como um pacote de patch (arquivo .msp).

Um pacote de patch do Windows Installer que fornece informações de manutenção para uma pequena atualização ou atualização secundária geralmente é muito menor do que o pacote de instalação equivalente que fornece as mesmas informações de manutenção. É recomendável que os pacotes de patch sejam usados para a distribuição de pequenas atualizações e atualizações secundárias. É recomendável que um pacote de instalação seja usado para a distribuição de uma atualização principal.

Os patches do Windows Installer (arquivos .msp) podem ser gerados em arquivos completos ou em diferenças de arquivo (também chamadas de deltas de arquivo). Um patch do Windows Installer gerado em deltas de arquivo pode ser muito menor do que o patch de arquivo completo equivalente. Todas as versões do Windows Installer podem usar patches de arquivo completo ou patches delta.

A partir do Windows Installer versão 3.0, o instalador salva seletivamente as informações de linha de base sobre os arquivos quando eles são atualizados. As informações sobre o aplicativo base original (a versão RTM) e a atualização secundária mais recente (service pack) são salvas em um local privado, quando o aplicativo é instalado ou recebe uma atualização secundária.

O instalador faz o seguinte para minimizar o tamanho do cache de linha de base:

  • No máximo, duas linhas de base são mantidas para cada aplicativo: uma linha de base do arquivo como lançado originalmente (RTM) e uma linha de base do arquivo na atualização secundária mais recente (service pack).
  • Um arquivo não é adicionado ao cache até que ele seja corrigido. O cache de linha de base é copy-on-write.
  • Se o aplicativo nunca tiver sido atualizado, não haverá arquivos no cache de linha de base.
  • Quando a última manutenção do aplicativo foi uma atualização secundária (service pack), o aplicativo está em um nível de linha de base e, no máximo, duas cópias de um arquivo podem estar presentes no computador. Uma cópia do arquivo está no diretório de destino da instalação. A outra cópia pode estar no cache de linha de base RTM.
  • Quando a última manutenção do aplicativo foi uma pequena atualização (QFE), o aplicativo não está em um nível de linha de base e, no máximo, três cópias de um arquivo podem estar presentes no computador. A primeira cópia do arquivo está no diretório de destino da instalação. A segunda cópia do arquivo está no cache de linha de base RTM. A última cópia do arquivo está no cache de linha de base mais recente.
  • O cache de linha de base do aplicativo é removido quando o produto é desinstalado.

A partir do Windows Installer versão 3.0, o instalador pode usar o cache de linha de base quando os patches são aplicados ao aplicativo. As informações de linha de base podem ser usadas para aplicar um patch delta ou para reverter um arquivo a uma versão anterior, durante uma desinstalação de patch. Isso pode permitir que os autores de patch utilizem patches delta menores. Se o instalador descobrir que o patch delta não pode ser aplicado ao arquivo de destino, o instalador pode tentar usar um arquivo salvo no cache de linha de base como ponto de partida. O instalador só recorre à solicitação da fonte de instalação original depois de tentar todas as possibilidades no cache.

A adesão às seguintes diretrizes pode ajudar os autores de patch a usar patches do Windows Installer versão 3.0 e o cache de linha de base para criar patches delta menores:

  • Crie patches que incluem a tabela MsiPatchSequence. Esta tabela é necessária para usar o cache de linha de base e está disponível a partir do Windows Installer versão 3.0.
  • Não defina uma política que impeça o cache de linha de base. O valor da política MaxPatchCacheSize especifica o percentual máximo de espaço em disco que pode ser usado. Se a política MaxPatchCacheSize estiver definida como 0, nenhum arquivo adicional será salvo no cache de linha de base. Se a política não estiver definida, o padrão é que no máximo 10% do espaço em disco possa ser usado. Se o tamanho total do cache atingir a porcentagem máxima de espaço em disco, nenhum arquivo adicional será salvo. A política não afeta os arquivos que já foram salvos. Mesmo quando o cache está desabilitado, o instalador pode usar os caches de linha de base de produto existentes.
  • Se o primeiro patch aplicado incluir a tabela MsiPatchSequence, o cache será habilitado para o aplicativo.
  • Se qualquer patch na transação de manutenção não incluir a tabela MsiPatchSequence, o cache será habilitado para o aplicativo somente se um patch de atualização secundária (service pack) que inclui a tabela MsiPatchSequence for aplicado com êxito ao produto.
  • Gere o pacote de patch usando ferramentas de criação de patch, como Msimsp.exe e PATCHWIZ.DLL.
  • Sempre direcione os patches para a versão RTM do aplicativo ou uma versão de atualização secundária (service pack) do aplicativo. Os destinos especificados na tabela TargetImages do arquivo PCP (Propriedades de Criação de Patch) devem ser pontos de verificação do produto definidos pelos três primeiros campos da propriedade ProductVersion.
  • Nunca direcione os patches em imagens de atualização pequena. Os destinos para a criação do patch não devem incluir imagens de atualização pequena anteriores.