Pregunta

he entregado la versión 1.0 del software de mi con un instalador generado por WiX, y ahora quiero entregar / versión DIFUNDIR 1.1. Si es posible me gustaría evitar la situación de decirle a la gente para eliminar 1.0 manualmente antes de instalar 1.1.

Sin embargo, he tenido que modificar el InstallScope, cambiándolo de perUser a perMachine por diversas razones técnicas. No es un gran problema, excepto que hace que la actualización de una molestia.

Lo que estoy viendo pasar es lo mismo que este post menciona, en donde a pesar de haber hecho todo el de trabajo adecuado para implementar una actualización, cuando se hace se ven dos entradas diferentes en la lista de programas instalados, uno es 1.0 y el otro es 1.1. Y esto está causando problemas en el software.

Por lo tanto, parecería que el básico "quitar la versión anterior" lógica no funciona aquí, así que necesito algún otro método de contar con la versión anterior desinstalado. Intenté ir por el camino de disparar el comando adecuado msiexec /x quitar la versión anterior a través de un ShellExecute CustomAction, pero a menos que me falta algo que no hay lugar en la secuencia en que esto funcionaría porque estás disparando un comando en el msiexec medio de otra carrera.

Entonces se topó con esta página que detalla un método poco documentada de "encadenamiento" juntas de MSI:

setupbld.exe -out $(TargetDir)setup.exe -msu FirstInstaller.msi -msu SecondInstaller.msi -setup $(ProjectDir)setup.exe

Suena muy bien - todo lo que necesito ahora es un poco de MSI cuya única función es la de eliminar la versión 1.0 y luego puedo cadena que junto con el antiguo.

Excepto que no estoy encontrando una gran cantidad de documentación sobre cómo se puede hacer eso. De hecho, ya que esto podría, en teoría, potencialmente ser utilizado para eliminar el software no instaló originalmente, no estoy seguro de que esto es aún técnicamente posible por razones de seguridad.

¿alguien sabe cómo crear un MSI utilizando WiX cuyo único propósito es desinstalar el software? O estoy atacando este problema completamente equivocado?

¿Fue útil?

Solución

Utilice esta Wix para desinstalar la versión anterior como parte de su versión 1.1. No estoy seguro de por qué necesita la cadena de MSI juntos.

Cómo implementar la actualización de WiX instalador?

EDIT: Me perdí el requisito de cambio de InstallScope. Así que lo que realmente se necesita es un programa previo.

he publicado cómo crear un programa previo aquí: necesito un proyecto Bootstrapper WIX que se instala el software y prerrequisitos

Otros consejos

Una solución es utilizar una acción personalizada que se ejecuta el comando "msiexec.exe / x". Asegúrese de que sea programada después de InstallFinalize en InstallExecuteSequence. Además, es Vuelta debe ser asyncNoWait (ejecución asincrónica, no espera el retorno).

Con esta configuración la desinstalación utiliza un proceso asíncrono diferente, evitando el conflicto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top