Regras de controle de versão de arquivo

No núcleo de qualquer instalador está a instalação real de arquivos. Determinar se instalar um arquivo é um processo complexo. No nível mais alto, essa determinação depende se o componente ao qual um arquivo pertence está marcado para instalação. Uma vez determinado que um arquivo deve ser copiado, o processo será complicado se outro arquivo com o mesmo nome existir na pasta de destino. Nessas situações, fazer a determinação requer um conjunto de regras envolvendo as seguintes propriedades:

  • Versão
  • Data
  • Idioma

O instalador só usa essas regras ao tentar instalar um arquivo em um local que já contém um arquivo com o mesmo nome. Nesse caso, o Windows Installer usa as seguintes regras, todos os outros aspectos iguais, para determinar se deve ser instalado.

Versão mais recente ganha: todos os outros aspectos iguais, o arquivo com a versão mais recente ganha, mesmo que o arquivo no computador tenha a versão mais recente.

Arquivos com controle de versão ganham: um arquivo com controle de versão é instalado sobre um arquivo sem controle de versão.

Favorecimento do idioma do produto: caso o arquivo que está sendo instalado tenha um idioma diferente do arquivo no computador, o instalador favorece o arquivo com o idioma que corresponde ao produto que está sendo instalado. Os arquivos neutros de idioma são tratados como apenas outro idioma para que o produto sendo instalado seja favorecido novamente.

Incompatibilidade de vários idiomas: depois de considerar todos os idiomas comuns entre o arquivo que está sendo instalado e o arquivo no computador, todos os idiomas restantes são favorecidos de acordo com o que é necessário para o produto que está sendo instalado.

Preservação de idiomas de superconjunto: preserva o arquivo que dá suporte a vários idiomas, independentemente de ele já estar no computador ou se estiver sendo instalado.

Arquivos sem controle de versão são dados do usuário: caso a data modificada seja posterior à data de criação do arquivo no computador, não instale o arquivo porque as personalizações de usuário seriam excluídas. Caso as datas de modificação e criação sejam iguais, instale o arquivo. Caso a data de criação seja posterior à data de modificação, o arquivo será considerado não modificado, instale o arquivo.

A instalação de um Arquivo complementar não depende de suas próprias informações de controle de versão de arquivo, mas do controle de versão de seu pai complementar. No caso de Arquivos complementares, a instalação será ignorada somente caso o arquivo pai tenha uma versão superior. Observe que um arquivo que é o caminho chave para seu componente, não deve ser um arquivo complementar porque isso resulta na lógica de controle de versão do arquivo de caminho chave que está sendo determinado pelo arquivo pai complementar.

Arquivos sem controle de versão usando Arquivos complementares: um arquivo sem controle de versão associado a um arquivo com controle de versão usando o mecanismo complementar cumpre as regras para o arquivo com controle de versão. A única exceção é caso o arquivo com controle de versão no computador e o arquivo com controle de versão sendo instalado tenham a mesma versão e idioma, mas o arquivo complementar esteja ausente no computador. Nesse caso, o arquivo complementar que está sendo instalado é usado mesmo que o arquivo com controle de versão no computador seja usado. Além disso, um arquivo sem controle de versão usando um arquivo complementar será instalado se a propriedade REINSTALLMODE incluir as opções de substituição de versões mais antigas ("o" ou "e") e a versão do arquivo complementar for igual a um arquivo já existente no computador.

As regras são globais: as regras para determinar quando instalar um arquivo residem em um só lugar dentro do instalador e são globais, o que significa que elas se aplicam a todos os arquivos igualmente.

Para obter exemplos do formato usado para versões de arquivo, consulte o tipo de dados da Versão. Para obter informações mais específicas, consulte Substituir arquivos existentes ou Controle de versão de arquivo padrão.