Tengo un producto empaquetado como MSI. Cuando mis clientes instalan una nueva versión de mi producto sobre la superior de una versión existente, no funciona bien debido a una acción VBS personalizada, como se explica a continuación. Mi pregunta es: ¿cómo puedo cambiar mi MSI para que la instalación en la parte superior siempre haga una desinstalación completa de cualquier versión existente de antemano?¿Cómo desinstalar la versión anterior como parte de la instalación de msi?
El detalle es:
Tengo un producto con una gran variedad de versiones desplegadas en varias empresas diferentes. Aproximadamente una vez al año, cada uno de mis clientes recibiría una nueva versión de mi producto y se implementaría en las estaciones de trabajo de la empresa. Las personas responsables de la implementación preferirían poder instalar la nueva versión sobre la anterior, en lugar de tener que incluir un paso de desinstalación en su paquete de instalación.
La instalación de msi crea y escribe algunos archivos en la carpeta [CommonApplicationData] \ MyApp. Durante la ejecución, la aplicación crea más archivos en la carpeta [CommonApplicationData] \ MyApp. Durante la desinstalación, necesito eliminar todos estos archivos. Como no están instalados por el msi, no se desinstalan automáticamente, así que creé un script vbs que elimina esa carpeta y cualquier otra cosa en él. Pongo un comando para ejecutar esa VBS en ExecuteDeferred:
...
RemoveFiles
RemoveFolders
CreateFolders
MoveFiles
InstallFiles
PatchFiles
If REMOVE="ALL" Then
REM line below is my custom script
call VBScript From Installation (MyApp_UninstallCleanup)
End
DuplicateFiles
BindImage
CreateShortcuts
...
Hasta ahora todo bien y funciona bien cuando se instala & desinstalación. Sin embargo, si instalo una nueva versión de mi producto sobre la superior de una versión existente, parece que las cosas suceden en este orden: a) instale una nueva versión, cree varios archivos en la carpeta [CommonApplicationData] \ MyApp y en [Archivos de programa] \ MyApp ..., sobrescribir archivos de la versión anterior b) ejecutar my vbs, eliminar la carpeta [CommonApplicationData] \ MyApp
Tengo los GUID para las versiones anteriores enumeradas en la tabla de actualización en mi nueva MSI, y aparte de este script personalizado, el proceso de actualización parece funcionar bien.
El producto en sí es bastante pequeño, por lo que estaría bien si el instalador siempre eliminara completamente las versiones anteriores antes de instalar la nueva versión. No hay configuraciones de usuario en la estación de trabajo que necesiten conservarse y los tamaños de archivo no son grandes. Por lo tanto, para simplificar, quiero desinstalar las versiones anteriores en lugar de actualizarlas solo con los bits que han cambiado.
¿Hay alguna forma de que pueda cambiar mi nueva MSI para que primero desinstale las versiones anteriores?
Cabe destacar que tengo muchas empresas que tienen instalada la versión existente de MSI que contiene los vbs personalizados. Entonces, la solución realmente necesita ser una que pueda hacer frente al msi instalado existente.
He utilizado Wise Installation Express 7.0 para crear el MSI.
gracias !!
(Cruz-registrado here)