Por que meu novo arquivo do Windows Installer (MSI) não é instalado corretamente em uma versão mais antiga do MSI?
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 causaOs 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çãoEstou 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!