He arruinado mi instalador basado en WiX en varios servidores para que ya no elimine archivos o componentes (o incluso otras características) durante una desinstalación. El registro de MSI muestra que PreviouslyPinned = 1 en todos los componentes que no se desinstalarán.Eliminar un GUID = "" componente instalado con WiX
No tengo nada de lujos como usar el conteo de SharedDll o incluso componentes compartidos entre diferentes instaladores.
Creo que lo he rastreado hasta una revisión particular de mi código WiX. Hice un par de cosas estúpidas. I (involuntariamente) creado un componente no administrado con un espacio en blanco Guid
<Component Id="file.ext" Guid="">
<File .../>
<Component>
y también he cambiado la ubicación del archivo de otro componente y Id (pero no Es Guid). Todos los componentes presentes en las revisiones anteriores muestran PreviouslyPinned = 1 y no se desinstalarán, y los nuevos componentes agregados después de esta revisión se instalarán/desinstalarán correctamente.
¿Cómo puedo hacer que mi instalador vuelva a la normalidad y eliminar estos componentes previamente fijados?
Lo que oigo decir es que, dado que un GUID en blanco ni siquiera registra un componente, no debería tener ningún efecto en otros componentes. ¿Está bien? –
Sí, en general, el GUID en blanco no debería tener ningún efecto en otros componentes ya que MSI lo ignora después de instalar el archivo. Sin embargo, rara vez es un hecho sin modificaciones: el archivo instalado por el GUID en blanco no se desinstalará. Si se trata de un archivo versionado y no cambia la ubicación de instalación antes de volver a agregar un guid, es teóricamente posible que el archivo existente pueda bloquear la instalación de la nueva versión del archivo (si el archivo existente es una versión superior). También existen algunos otros escenarios poco probables si usa actualizaciones menores, pero si no las usa, no entraré en ellas. –
¡Gracias por su respuesta detallada! Al final, para obtener todo lo demás para que se desinstale correctamente (eliminando las referencias de PreviouslyPinned = 1 del registro de MSI), tuve que ingresar al registro en esa PC y eliminar todos los componentes de mi instalador en HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData \ \ Componentes basados en un consejo que encontré aquí http://blogs.msdn.com/icumove/archive/2008/06/17/windows-installer-error-2908-with-sub-errors- 1402-and-1450.aspx –