2009-04-22 38 views
17

Tengo un instalador de una aplicación que necesita instalar sobre cualquier versión existente, independientemente del número de versión.WiX-- siempre sobrescriba la versión anterior

En su lugar, tengo un instalador que constantemente dice que tengo que ir a agregar o quitar programas. Ese es un comportamiento muy frustrante para mis evaluadores, ya que solo los ralentiza sin una razón real en sus mentes: el paquete instalador anterior siempre se instalaría, eliminando cualquier archivo que estuviese allí previamente, por lo que nunca tuvieron que hacer ese paso. También tenemos una base de clientes (grande) que ha recibido capacitación similar, ya que cualquier versión que instale ahora debe sobrescribir cualquier instalación que haya tenido antes.

Parece, por lo que puedo deducir, que el paradigma de WiX es hacer cosas como bloquear instalaciones de versiones anteriores y otras cosas complicadas, como parches. Nuestros clientes, francamente, no son lo suficientemente inteligentes como para saber o preocuparse por los parches, la fusión, lo que sea, y solo quieren un instalador que siempre funcione (y me inclino a estar de acuerdo con ellos, el ancho de banda es barato). Entonces, ¿cómo lo consigo?

He intentado esto, pero simplemente no parece tener importancia:

<InstallExecuteSequence> 
    <RemoveExistingProducts Before="InstallInitialize"/> 
</InstallExecuteSequence> 

Esta es la versión 3.0.5120 de WiX.

EDIT: De acuerdo con la sugerencia de Rob allí, he añadido este código:

<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallInitialize"/> 
</InstallExecuteSequence> 

<Upgrade Id="27cb76c7-544e-465f-b1f3-b11d9a49e416"> 
    <UpgradeVersion Minimum="0.8.0" 
        IncludeMinimum="yes" 
        Maximum="1.5.1" 
        Property="OLDERVERSIONBEINGUPGRADED" /> 
</Upgrade> 

No estoy añadiendo el código para no permitir una instalación de retrotracción; por razones que son increíblemente embarazosas para mí, digamos que un aumento en el número de versión no se correlaciona necesariamente con un aumento en la bondad del software. No quiero que nadie se bloquee de lo que creen que necesitan.

También, muy importante, es cambiar el GUID predeterminado para el producto a "*" para hacer un GUID diferente con un instalador diferente, que aparentemente fue el problema.

+2

No acabo de entender la última frase: Establecer el GUID predeterminado para el producto * genera un nuevo GUID para cada instalador compilado. Esto lleva a una nueva instalación una al lado de la otra para cada actualización. Al menos eso es lo que pensé. Todavía estoy tratando de encontrar un PoC de trabajo simple para su problema ... –

+0

Para mí, parece que las instalaciones nunca estarían una al lado de la otra. Siempre que los códigos de actualización coincidan, la versión anterior se desinstalará y la nueva se instalará en su lugar. ¿No es este comportamiento esperado de wix? – Shadoninja

Respuesta

18

Desea una actualización importante. Hay un tema dedicado a eso en WiX.chm "How To" (también en la web: http://wix.sourceforge.net/manual-wix3/major_upgrade.htm).

+0

Buscando interesante. Entonces, si solo quiero actualizar las cosas, pero también quiero permitir que vuelva una versión, entonces dejo fuera la segunda parte acerca de no permitir instalaciones de versión más baja, estoy pensando. – mmr

+0

@mmr ¿Puedes compartir lo que terminaste haciendo? El enlace proporcionado no parece responder completamente a su pregunta, si algo le dice cómo hacer lo contrario de lo que desea. – user145400

Cuestiones relacionadas