Pergunta

Eu tenho um instalador que não parece ser MSI seguintes regras de componente no momento da instalação.Eis o cenário:

OS:O Windows 7 x64

Produto a instala Um conjunto de arquivos anexados a um componente com o guid "123ABC" em C:\Program Files\Common Files\Foo.O componente possui os seguintes arquivos:
foo.dll versão 1.0.0.0, (caminho-chave)
foo.sys versão 1.0.0.0
foo.inf nenhuma versão
foo.gato, nenhuma versão

Produto B instala o mesmo conjunto de arquivos anexados para o mesmo guid do componente "123ABC" para o mesmo caminho C:\Program Files\Common Files\Foo.O componente possui os seguintes arquivos:
foo.dll versão 1.0.0.1, (caminho-chave)
foo.sys versão 1.0.0.0
foo.inf nenhuma versão
foo.gato, nenhuma versão

Um produto é instalado pela primeira vez, e o produto B não executar uma atualização de Um produto, eles apenas partilham um MSM que contém o componente "123ABC".A minha expectativa é a de que quando o produto B é instalado, a MSI irá comparar o caminho-chave versões de foo.dll e determinar que o produto B foo.dll é a mais recente.Em seguida, todos os quatro arquivos associados com o componente "123ABC" irá substituir os arquivos existentes no disco que foram instalados pelo produto A.Isto não está a acontecer :( em Vez, este é o resultante fileset:
C:\Program Files\Common Files\Foo
foo.dll versão 1.0.0.1 (produto B)
foo.sys versão 1.0.0.0 (De Um produto)
foo.inf nenhuma versão (Do produto)
foo.gato, sem a versão Do produto, B)

Apenas a dll e o gato de arquivo são substituídos.A partir do arquivo de log do msi eu posso ver o seguinte:

MSI (s) (4C:F0) [17:29:24:227]: File: C:\Program Files\Common Files\Foo\foo.dll;    Overwrite;  Won't patch;    Existing file is a lower version
MSI (s) (4C:F0) [17:29:24:305]: File: C:\Program Files\Common Files\Foo\foo.sys;    Won't Overwrite;    Won't patch;    Existing file is of an equal version
MSI (s) (4C:F0) [17:29:24:305]: File: C:\Program Files\Common Files\Foo\foo.inf;    Won't Overwrite;    Won't patch;    Existing file is unversioned and unmodified - hash matches source file
MSI (s) (4C:F0) [17:29:24:335]: File: C:\Program Files\Common Files\Foo\foo.cat;    Overwrite;  Won't patch;    Existing file is unversioned and unmodified - hash doesn't match source file

Eu pensei MSI componentes instalados todos os arquivos associados com base na existência ou não de caminho-chave é para ser instalado.O que poderia causar todos os arquivos associados com o mesmo componente individualmente e comparados?

Foi útil?

Solução

Caminho-chave estado determina se um componente pode se concretizar.Recursos dentro do componente, em seguida, siga as suas regras:por exemplo, arquivos siga as regras de versão do ficheiro.

Outras dicas

Supondo que cada produto é usando o padrão de custeio de regras (OMUS) módulos de Mesclagem que contém componentes compartilhados deve funcionar.FWIW, você pode querer considerar fazer um MSI que consome este módulo de mesclagem e, em seguida, adicioná-lo a um bootstrapper para ambos os produtos.Patch de manutenção pode ser mais limpo desta forma.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top