2009-02-11 11 views
68

Estoy seguro que esto es bastante fácil, pero he de alguna manera tenía un tiempo duro con él. Tengo una acción personalizada que ejecuta un instalador diferente (no msi) en la instalación. Lamentablemente, me he dado cuenta de que también ejecuta el instalador en la desinstalación.la forma de ejecutar la acción personalizada sólo en la instalación (no desinstalar)

He mirado a través de las opciones pero no puede parecen encontrar la manera de detener esto. Si alguien pudiera ayudarme, estaría increíblemente agradecido.

Además, ¿cómo puedo configurar una acción personalizada para que suene sólo durante desinstalar? ¡Cualquier ayuda es muy apreciada chicos!

+4

Para una referencia: [** Hoja Común MSI Condiciones de trucos **] (http: // blogs. flexerasoftware.com/installtalk/2013/04/installer-cheat-sheet-series.html). –

Respuesta

154

agregar una condición en la acción por lo que sólo está activa durante la instalación, desinstalación no.

Acción plazo sólo se instalan durante

NOT Installed AND NOT PATCH 

acción se ejecuta durante la instalación y reparación

NOT REMOVE 

Ejecutar en la instalación inicial solamente:

NOT Installed 

Ejecutar en la instalación inicial o cuando la reparación es seleccionado.

NOT Installed OR MaintenanceMode="Modify" 

Para sólo se ejecutan una acción durante la desinstalación utilizar la siguiente condición:

REMOVE~="ALL" 

Para sólo se ejecutan una acción durante la actualización:

Installed AND NOT REMOVE 
+0

y para el modo de reinstalación? –

+1

@Rasa, ¿a qué te refieres con el modo reinstalar? No existe tal cosa en el lenguaje MSI, probablemente esté buscando "Reparación" (NO QUITAR). Si registra la salida de MSI, puede ver exactamente en qué se establecerán los diversos valores utilizados en las condiciones anteriores y averiguar cuál coincidiría con su situación. – saschabeaumont

+1

¿Qué hay de modificar? ¿Ejecuta una acción solo cuando se desinstala una característica? ¿Ejecuta una acción solo cuando se está instalando una característica? ¿Ejecuta una acción solo cuando se repara una característica? –

0

Una condición en la acción personalizada, probablemente con una acción personalizada coincidente para hacer la desinstalación. No estoy seguro de qué herramientas está utilizando, pero suponiendo que la instalación secundaria esté vinculada a un componente, usaría ese estado de componente. Un estado de = 3 significa un estado de destino de instalado. Un estado = 2 significa un estado objetivo de ausente. Tenga en cuenta que el estado no se establecerá si no hay cambios.

7

Un poco de una corrección:

Por último, sólo a ejecutar una acción durante la desinstalación utilizan la siguiente condición: REMOVE="ALL"

Esto parece más apropiado ya que la propiedad REMOVE contiene las características de ser desinstalados.
Así que si hago una modificación para eliminar una característica, REMOVE es verdadero y la acción que se iba a ejecutar solo en la desinstalación se ejecuta en modificar.
More details here on MSDN

+1

¡Gracias, eso fue útil! – M3NTA7

6

Un ejemplo:

<InstallExecuteSequence> 
.. 
    <Custom Action="QtExecIdOfCA" Before="InstallFinalize">NOT Installed</Custom> 
.. 
</InstallExecuteSequence> 

.. 
.. 
<CustomAction Id="QtExecIdOfCA" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/> 

Aviso!Condición se añade a la etiqueta <Custom> y no la <CustomAction> que me confundió, porque la costumbre es seguido por Acción attribué

Cuestiones relacionadas