una subir metaetiqueta etiquetas entradas entrada encabezado ejemplos código como codigo añadir agregar agrega wix windows-installer

subir - Acción personalizada antes de la desinstalación de MSI con Wix



meta tags wix (2)

Estoy usando Wix para codificar mi propio instalador de MSI. Necesito ejecutar la acción personalizada solo antes de la desinstalación del producto, pero antes de eliminar cualquier valor de registro o archivo. Hice lo siguiente (solo para intentarlo):

<Property Id=''CALC''>Calc.exe</Property> <CustomAction Id=''BeforeUninstall01'' Property=''CALC'' ExeCommand='''' Return=''check'' /> <InstallExecuteSequence> <Custom Action=''BeforeUninstall01'' After=''InstallInitialize''>Installed</Custom> </InstallExecuteSequence>

Funciona si elijo uninstall desde el Panel de control, pero si ejecuto mi MSI en su lugar (mientras ya está instalado) la acción personalizada BeforeUninstall01 se desencadena de todos modos, lo que no debería BeforeUninstall01 .

¿Alguna idea de cómo cambiar esta condición?


Usted elige la condición "Instalado".

Dado su código, la condición deseada usando la propiedad incorporada "REMOVE" resultará en:

<InstallExecuteSequence> <Custom Action=''BeforeUninstall01'' After=''InstallInitialize''>REMOVE="ALL"</Custom> </InstallExecuteSequence>

Esto también le permite (incluso si no es necesario) desinstalar una sola característica, pero no todo el producto sin que se active su acción personalizada (ca). En otras palabras, la ca se activa siempre y solo, si

La condición de usted inicia siempre la ca, pero no para la primera instalación (incluyendo la reparación, actualización, desinstalación, modificación, parche, etc. Esto no es, lo que necesita, de hecho.

La condición de Reubz es levemente diferente, esto comenzaría siempre pero no para la primera instalación y no durante una actualización mayor, que no es una mejora real aquí.

Con respecto a la secuencia: si su ca realmente necesita derechos elevados, entonces debe ejecutar la acción personalizada "aplazada" con derechos del sistema y cambiar su definición de ca dada a (si no, dejarla):

<CustomAction Id=''BeforeUninstall01'' Property=''CALC'' ExeCommand='''' Execute="deferred" Impersonate="no" Return="check" />

(No soy un asistente de WiX, solo conozco bastante bien a MSI, así que no he verificado ninguna parte de tu código de WiX, solo los problemas).


pruebe una condición adicional para verificar que el producto no se esté actualizando

<Custom Action=''BeforeUninstall01'' After=''InstallInitialize''>Installed AND NOT UPGRADINGPRODUCTCODE</Custom>