Partilhar via


Redução do Tamanho do Patch

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

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

O Windows Installer fornece três métodos para atualizar e fazer a manutenção de aplicativos: pequenas atualizações, pequenas atualizaçõese atualizações principais. Uma pequena atualização também é conhecida como uma atualização de engenharia de correção rápida (QFE), e uma atualização secundária também é conhecida como uma atualização de service pack (SP). Uma atualização principal típica remove um aplicativo anterior e instala um novo aplicativo. O Windows Installer pode fornecer informações de manutenção para aplicativos como um pacote de instalação (arquivo.msi) 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 pequena atualização geralmente é muito menor do que o pacote de instalação equivalente que fornece as mesmas informações de manutenção. Recomenda-se que os pacotes de patch sejam usados para a distribuição de pequenas e pequenas atualizações. Recomenda-se 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 a partir de arquivos completos ou de diferenças de arquivos (também chamados deltas de arquivos). Um patch do Windows Installer gerado a partir de 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 informações de linha de base sobre 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:

  • Não são mantidas mais do que duas linhas de base para cada aplicativo: uma linha de base do arquivo conforme 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 seja corrigido. O cache de linha de base é do tipo copy-on-write.
  • Se o aplicativo nunca tiver sido atualizado, não há arquivos no cache de linha de base.
  • Quando a última manutenção do aplicativo foi uma pequena atualização (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 da linha de base RTM.
  • Quando a última manutenção do aplicativo foi uma pequena atualização (QFE), o aplicativo não está no estado inicial 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 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 para uma versão anterior durante a desinstalação de um patch. Isso pode permitir que os autores de patches se beneficiem de patches delta menores. Se o instalador achar que o patch delta não pode ser aplicado ao arquivo de destino, o instalador poderá tentar usar um arquivo salvo no cache de linha de base como ponto de partida. O instalador só recorre a solicitar a fonte de instalação original depois de tentar todas as possibilidades no cache.

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

  • Desenvolver patches que incluam 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 da linha de base. O valor da política MaxPatchCacheSize especifica a porcentagem máxima de espaço em disco que pode ser utilizada. 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 um máximo de 10% do espaço em disco pode 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á desativado, o instalador pode usar caches de linha de base do 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 patches usando ferramentas de criação de patches, como Msimsp.exe e PATCHWIZ.DLL.
  • Sempre direcione patches para a versão RTM do aplicativo ou uma versão de atualização secundária (service pack) do aplicativo. Os objetivos especificados na tabela TargetImages do arquivo Patch Creation Properties (PCP) devem ser marcos de verificação do produto definidos pelos três primeiros campos da propriedade ProductVersion.
  • Nunca direcione patches em pequenas imagens de atualização. Os destinos para a criação do patch não devem incluir imagens de atualizações incrementais anteriores.