Pregunta

Mi instalador de Wix funcionó al instalar mi programa, pero no funciona para la desinstalación.Un archivo se elimina demasiado pronto y será necesario 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 versiones de mi instalador (un inconveniente considerable).¿Cómo puedo forzar la eliminación del paquete?

¿Fue útil?

Solución

Actualización, Stein Åsmul : Inyectar esta nueva lista de enfoques de limpieza .


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

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

  3. Eliminar la acción personalizada ofensiva del Tabla de personalización

  4. Ahora debería poder desinstalar el paquete.

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


    Actualizar : HI WIM, ¡Gracias por la buena información de COM gratuito de registro que ha proporcionado anteriormente! Un par de actualizaciones sobre este problema de desinstalación: DarkRock76s Responder es incorrecta, Por favor, consulte mi comentario a él abajo . Además, en lugar de eliminar la acción personalizada en su Paso 3 anterior, puede configurar su condición en la Tabla de InstaleLEXECUTECHEETE a 0 (numérico cero== false) para evitar que se ejecute. Eliminar la entrada de la tabla de acción personalizada deja unas pocas referencias de clave extranjera rotas (podrían fallar en algún momento, supongo). la herramienta de fijación de Microsoft También se puede probar antes de recurrir a este hack. Hay Algunas herramientas / editores / editores / espectadores de MSI gratuitos (hacia la parte inferior) además de la ORCA. Tal vez el usuario también debe hacer una cremallera de la MSI original antes de editar, pero supongo que está implícita. Por favor, elimine este comentario desordenado una vez que lo obtiene, podría escribir un resumen rápido de diferentes formas de forzar dichas desinstalaciones si recibo el tiempo (la herramienta de Fixit MS, usando actualizaciones menores, edite la MSI en caché directamente, aplique la transformada para el desinstalar, y cualquier cosa que haya). Rock On con despliegue :-). Su respuesta COM sin registro, me ha ayudado (Stein) bastante en el pasado. Muchas gracias.

    y se olvidó de una cosa: Puede encontrar el archivo MSI de caché real usando PowerShell . Eso fue para un paquete, También puede obtener todos los paquetes (desplácese hasta la primera captura de pantalla).

Otros consejos

Este comando generalmente funciona para mí:

msiexec /fv installer.msi

Algo recacta al instalador, por lo que puede intentarlo de nuevo con uno corregido.

Una vez Este comando no funcionó y tuve que usar Microsoft Fixit.Resolvió el problema (bastante un shock para mí).

Dependiendo del motivo exacto del comportamiento que describió, es posible que tenga al menos un par de opciones.

Si el motivo del error es una acción personalizada que se ejecuta durante la desinstalación, y esta acción personalizada está condicionada por algunas propiedades sobre las que puede influir, puede intentar pasar el valor deseado a través de la línea de comando:

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

En esta muestra 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 se ejecutará.

De lo contrario, puede corregir la lógica (o simplemente deshabilitar explícitamente la acción personalizada) y crear el nuevo paquete MSI.Luego cárguelo en esa máquina de destino y ejecútelo así:

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

Aquí YourPackage.msi es un nuevo paquete fijo, REINSTALL=ALL instruye al msiexec reinstalar el producto usando este nuevo paquete, y REINSTALLMODE=vomus (el v parte de él) volverá a almacenar en caché el paquete MSI y luego podrá eliminarlo de la forma normal.

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

FYI: En Windows 8.1 Los instaladores se han movido aquí: C: \ ProgramData \ PAQUETE CACHE \

normalmente solo busco <Your Installer's Name>.msi o <Your Installer's Company Name> en el registro y eliminar algunas de las claves de desinstalación de algunos de los Products debajo de los árboles del instalador de Windows y normalmente todo funciona bien después, aunque esto HARÍA deje algunas cosas por ahí, como instaladores en caché y posiblemente toneladas de otras claves de registro para cada archivo instalado, etc.pero es SIEMPRE funcionó para mí al desarrollar instaladores porque, sinceramente, ¿a quién le importa si queda un MSI almacenado en caché en alguna parte?De todos modos estás usando la máquina para el desarrollo, ¿verdad?

También usé esta pequeña herramienta de Microsoft

https://support.microsoft.com/en-us/help/17588/fix-problems-that-block-programs-from-being-installed-or-removed

Básicamente, esta herramienta se puede usar para "reparar problemas que incluyen claves de registro dañadas que le bloquean de instalar o eliminar programas"

lo que corrige:

  1. Claves de registro dañadas en sistemas operativos de 64 bits

  2. Teclas de registro corruptas que controlan los datos de actualización

  3. problemas que evitan que se instalen nuevos programas

  4. problemas que impiden que los programas existentes sean desinstalados o actualizados

  5. problemas que le bloquean de desinstalar un programa a través de agregar o eliminar programas (o programas y características) en el panel de control

  6. Se puede utilizar para:

    • Windows 7
    • Windows 8
    • Windows 8.1
    • Windows 10
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top