¿Por qué mi nuevo archivo de Windows Installer (MSI) no se instala correctamente en una versión anterior del MSI?

Los síntomas

He creado un paquete de instalación (MSI) que instala una nueva versión de mi aplicación.

Tengo un nuevo ProductCode para mi instalación pero he dejado el UpgradeCode igual.

Entonces, cuando ejecuto el nuevo MSI, primero desinstala la versión antigua correctamente. Incluso el directorio Archivos de programa \ MyProduct se elimina.

Pero después de desinstalar la versión anterior, el instalador solo instala parcialmente la nueva versión. Si reparo la nueva instalación dañada (utilizando Agregar quitar programas-> Modificar instalación-> Reparar), todo está arreglado.

Si primero desinstalo la versión anterior usando Agregar quitar programas y luego instalo la nueva versión, todo funciona muy bien. El problema solo ocurre cuando instalo la nueva versión sobre la versión anterior.

Causa posible

Los números de versión de varias dlls y exes en la versión anterior estaban en mal estado. La versión antigua del exe es 4.11.1234. La versión para el nuevo exe es 4.5.1234. De acuerdo con las "Reglas de versión del archivo", el nuevo archivo no sobrescribirá el archivo anterior. La razón por la que me estoy rascando la cabeza es que, en el momento en que la acción InstallFiles ejecuta el archivo de destino, ya no reside en el disco.

Otra información

Estoy apuntando a Windows Installer 3.1.

Mi secuencia de ejecución de la instalación es aproximadamente:

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

Si este contexto no aclara la pregunta, hágamelo saber ...

¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta