Por que meu novo arquivo do Windows Installer (MSI) não é instalado corretamente em uma versão mais antiga do MSI?

Sintomas

Eu criei recentemente o pacote de instalação (MSI) que instala uma nova versão do meu aplicativo.

Eu tenho um novo ProductCode para a minha instalação, mas deixei o UpgradeCode o mesmo.

Então, quando eu executo o novo MSI, ele primeiro desinstala a versão antiga corretamente. Mesmo o diretório Program Files \ MyProduct é removido.

Mas depois de desinstalar a versão antiga, o instalador instala apenas parcialmente a nova versão. Se eu reparar a nova instalação danificada (Usando Adicionar Remover Programas-> Modificar Instalação-> Reparar), tudo será corrigido.

Se eu desinstalar primeiro a versão antiga usando Adicionar Remover Programas e, em seguida, instalar a nova versão, tudo funciona muito bem. O problema só ocorre quando eu instalo a nova versão por cima da versão antiga.

Possível causa

Os números de versão de várias dlls e exes na versão antiga estavam confusos. A versão antiga do exe é 4.11.1234. A versão para o novo exe é 4.5.1234. De acordo com as "Regras de versão de arquivo", o novo arquivo não substituirá o arquivo antigo. A razão pela qual estou coçando a cabeça é que, quando a ação InstallFiles é executada, o arquivo de destino não reside mais no disco.

Outra informação

Estou direcionando o Windows Installer 3.1.

Minha sequência de execução de instalação é aproximadamente:

<code>...
InstallValidate
RemoveExistingProducts
InstallInitialize
...
InstallFiles
...
InstallExecute
InstallFinalize
....
</code>

Se esse contexto não esclarecer a questão, me avise ...

Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion