Cómo ejecutar una acción personalizada solo en instalar (no desinstalar)


Estoy seguro de que esto es bastante fácil, pero he tenido un tiempo difícil con él. Tengo una acción personalizada que ejecuta un instalador diferente (no msi) en la instalación. Desafortunadamente, he notado que también ejecuta el instalador en la desinstalación!

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

Además, ¿cómo establezco una acción personalizada para que se active solo durante la desinstalación? Cualquier ayuda es en gran medida apreciados chicos!

Author: Cyprus106, 2009-02-11

5 answers

Agregue una condición a la acción para que solo se active durante la instalación, no durante la desinstalación.

La acción se ejecuta solo durante la instalación

NOT Installed AND NOT PATCH

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

NOT REMOVE

Ejecutar solo en la instalación inicial:

NOT Installed

Se ejecuta en la instalación inicial o cuando se selecciona reparar.

NOT Installed OR MaintenanceMode="Modify"

Para ejecutar solo una acción durante la desinstalación, utilice la siguiente condición:

REMOVE~="ALL"

Para ejecutar solo una acción durante la actualización:

Installed AND NOT REMOVE
 161
Author: saschabeaumont,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-25 20:45:10

Un poco de corrección:

Finalmente, para ejecutar solo una acción durante la desinstalación, utilice la siguiente condición: REMOVE="ALL"

Esto parece más apropiado ya que la propiedad REMOVE contiene las características que se están desinstalando.
Entonces, si hago una modificación para eliminar una característica, REMOVE es true y la acción que se ejecutó solo al desinstalar se ejecuta al modificar.
Más detalles aquí en MSDN

 7
Author: Jean-Francois Fortin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-31 14:04:16

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! La condición se agrega a la etiqueta <Custom> y no la <CustomAction> me confundió, porque la costumbre es seguida por la acción attribue

 6
Author: kristoffer_o,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-24 11:45:04

Tenga cuidado con REMOVE=ALL. No está disponible antes de la secuencia installvalidate.
Y consulte los enlaces a continuación para obtener más detalles:
http://msdn.microsoft.com/en-us/library/aa371194 (v=vs.85). aspx
http://msdn.microsoft.com/en-us/library/aa368013 (v=vs.85). aspx

 5
Author: Anand Choubey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-31 14:04:44

Una condición en la acción personalizada, probablemente con una acción personalizada coincidente para realizar la desinstalación. No estoy seguro de qué herramientas estás usando, pero asumiendo 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 ausencia. Tenga en cuenta que el estado no se establecerá si no hay cambios.

 1
Author: Darren Clark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-11 21:41:57