Metí la pata, ¿cómo puedo desinstalar mi programa?


Mi instalador Wix funcionó instalando mi programa, pero está roto para la desinstalación. Un archivo se elimina demasiado pronto, y se necesita más adelante. El desinstalador falla y revierte sus cambios.

Esto significa que no puedo eliminar el paquete de mi máquina, y por lo tanto no puedo instalar más compilaciones de mi instalador (un inconveniente considerable). ¿Cómo puedo forzar la retirada del paquete?

Author: PhilDW, 2012-03-14

7 answers

  1. Encuentre su paquete en C:\Windows\Installer, donde Windows guarda copias de los paquetes MSI instalados. Los nombres se generan aleatoriamente, por lo que tendrás que mirar las fechas de creación de los archivos.

  2. Abra el archivo MSI con Orca. (Desafortunadamente no hay una descarga simple para el instalador de orca. Puede obtenerlo instalando las" Herramientas MSI " del SDK de Windows 10, y luego buscando orca.msi in C:\Program Files (x86)\Windows Kits.)

  3. Eliminar el personalizado ofensivo acción desde la tabla CustomAction

Ahora debería poder desinstalar el paquete.

Editar : de acuerdo con la respuesta de @darkrock76 a continuación, la carpeta para el paso 1 también podría ser C:\ProgramData\Package Cache\. Tengo ambos en mi máquina Windows 7 SP1. No pude encontrar inmediatamente documentación sobre esto.


ACTUALIZACIÓN: Hola Wim, gracias por el buen registro-libre COM info que ha proporcionado anteriormente! Un par de actualizaciones sobre este problema de desinstalación: darkrock76s respuesta es incorrecta, por favor, ver mi comentario a él a continuación. Además, en lugar de eliminar la acción personalizada en el paso 3 anterior, puede establecer su condición en la tabla InstallExecuteSequence en 0 (cero numérico == false) para evitar que se ejecute. Eliminar la entrada de la tabla de acciones personalizadas deja algunas referencias de claves foráneas rotas (podría fallar en algún momento, supongo). La herramienta Microsoft FixIt también se puede probar antes de recurrir a este hack. Hay algunos herramientas / editores / visores MSI alternativos y gratuitos (hacia abajo) además de Orca. Tal vez el usuario también debería hacer un zip del MSI original antes de editar, pero supongo que eso está implícito. Por favor, elimine este comentario desordenado una vez que lo obtenga - Podría escribir un resumen rápido de diferentes maneras de forzar tales desinstalaciones si tengo el tiempo (La herramienta FixIt MS, utilizando actualizaciones menores, editar el MSI almacenado en caché directamente, aplicar transformar para la desinstalación, y cualquier otra cosa que haya). Rock en con despliegue :-). Su registro libre COM respuesta me han ayudado (Stein) un poco en el pasado. Muchas gracias.

Y olvidó una cosa: puede encontrar el archivo MSI de caché real usando Powershell. Eso fue para un paquete, también puede obtener para todos los paquetes (desplácese hacia abajo hasta la primera captura de pantalla).

 19
Author: Wim Coenen,
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
2018-06-09 17:57:46

Dependiendo de la razón exacta del comportamiento que describiste, podrías tener al menos un par de opciones.

Si la razón del error es una acción personalizada que se ejecuta al desinstalar, y esta acción personalizada está condicionada con algunas propiedades sobre las que puede influir, puede intentar pasar el valor deseado a través de la línea de comandos:

msiexec /x {YOUR-PRODUCTCODE-HERE} RUNMYACTION=false

En este ejemplo RUNMYACTION es una propiedad de Windows Installer que participa en una condición de acción personalizada, y si pasa false como su valor, la acción no funcionará.

De lo contrario, puede arreglar la lógica (o simplemente deshabilitar la acción personalizada explícitamente) y compilar el nuevo paquete MSI. Luego cárguelo a esa máquina de destino, y ejecute así:

msiexec /i YourPackage.msi REINSTALL=ALL REINSTALLMODE=vomus

Aquí YourPackage.msi es un nuevo paquete fijo, REINSTALL=ALL le indica a msiexec que vuelva a instalar el producto usando este nuevo paquete, y REINSTALLMODE=vomus (la parte v de él) volverá a almacenar en caché el paquete MSI y podrá eliminarlo de la manera normal después.

Una nota al margen: debe probar su instalación en una máquina virtual para no arriesgar la real.

 6
Author: Yan Sklyarenko,
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-03-14 11:51:55

Este comando generalmente funciona para mí:

msiexec /fv installer.msi

De alguna manera vuelve a cargar el instalador, por lo que puede volver a intentarlo con uno corregido.

Una vez este comando no funcionó y tuve que usar Microsoft FixIt. Se resolvió el problema (todo un shock para mí).

 6
Author: nuoritoveri,
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-09-27 13:52:35

FYI: En Windows 8.1 los instaladores se han movido aquí: C:\ProgramData\Package Cache\

 4
Author: darkrock76,
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-11 04:48:34

El FixIt de Microsoft lo solucionó para mí, encontré detalles en la base de conocimiento.

 1
Author: fredley,
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-03-14 12:10:21

Si estás realmente desesperado y todas las soluciones anteriores no funcionan, prueba

Msizap.exe

Esto borrará todo lo que su instalador puso en una máquina
PEQUEÑA ADVERTENCIA

No ejecute msizap sin saber con qué opciones desea ejecutarlo (para una lista de opciones, ejecute msizap /? primero).

 0
Author: CheGueVerra,
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-03-14 18:22:00

Normalmente solo busco <Your Installer's Name>.msi o <Your Installer's Company Name> en el registro y elimino algunas de las claves de desinstalación de algunos de los Products bajo los árboles de Windows installer y todo generalmente funciona bien y dandy después, aunque esto dejaría algunas cosas por ahí como instaladores en caché y posiblemente toneladas de otras claves de registro para cada archivo instalado, etc. pero su SIEMPRE funcionó para mí al desarrollar instaladores porque honestamente, a quién le importa si un MSI queda y se almacena en caché ¿en alguna parte? Estás usando la máquina para el desarrollo de todos modos, ¿verdad?

 -1
Author: Alexandru,
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-10-08 19:27:13