No existe un ensamblado en la caché de ensamblados global o SxS después de realizar una actualización importante mediante un paquete de Windows Installer

Síntomas

Después de realizar una actualización importante mediante un paquete de Microsoft Windows Installer, es que falta un ensamblado en la caché de ensamblados global o SxS (side-by-side carpeta, \Windows\WinSxS\).

Causa

Este problema se produce cuando se ordena la acción RemoveExistingProducts del instalador de Windows en una ubicación que impide la referencia apropiada el recuento de la Asamblea y que la eliminación prematura de la Asamblea. La acción RemoveExistingProducts es secuencial en la tabla InstallExecuteSequence en el paquete de Windows Installer. Este problema se produce cuando se ordena la acción RemoveExistingProducts para que se quite el producto anterior antes de instalar el producto nuevo.

Cuando se coloca un ensamblado en la caché de ensamblados global, se cambia el nombre del ensamblado. Windows Installer no puede determinar el nombre correcto del ensamblado. Windows Installer debe basarse en el Microsoft.NET Framework para administrar el nombre.

Al realizar una actualización importante mediante un paquete de Windows Installer, Windows Installer llama a la de.NET Framework para comprobar si ya está instalado el ensamblado en la caché de ensamblados global. Si el.NET Framework devuelve yes, no se permite el componente que contiene el ensamblado en el paquete de Windows Installer de actualización principales para la instalación. A continuación, la acción RemoveExistingProducts se ejecuta y desinstala el ensamblado existente en la caché de ensamblados global. La acción RemoveExistingProducts hace porque no se ha registrado el nuevo producto como un cliente del ensamblado y no existe ningún otro cliente. Porque no se permitió el componente en la actualización importante para la instalación, el ensamblado no se reinstalará cuando la actualización principal instala los componentes.

Si volver a ordenar la acción RemoveExistingProducts para programar la desinstalación del producto anterior después de instala el producto nuevo, no se quitará el ensamblado. El ensamblado no se quitará porque el ensamblado ahora tiene más un recuento de referencia del nuevo producto. Por lo tanto, aunque la actualización principal se omite la instalación del ensamblado, el ensamblado sigue siendo porque otro cliente hace referencia al ensamblado. El nuevo producto y el producto antiguo hacen referencia al ensamblado.

Nota: Cuando no se encuentra un ensamblado en la caché de ensamblados global, no hay cambio de nombre se produce. Se aplican las reglas estándar de control de versiones de archivo de Windows Installer, y el componente en la actualización principal está permitido para la instalación.

Solución alternativa

Para evitar este problema, utilice uno de los métodos siguientes.

Método 1

Aumentar el atributo AssemblyVersion del ensamblado que está intentando instalar para crear una instalación en paralelo en la caché de ensamblados global.

Método 2

Utilice una herramienta de creación de tabla de Windows Installer para cambiar la secuencia de la acción RemoveExistingProducts en la tabla InstallExecuteSequence tenga lugar después de la acción InstallFinalize. Por ejemplo, utilice el editor de tablas de base de datos Orca.exe para crear o editar paquetes de Windows Installer.

Más información

Puede crear un paquete de Windows Installer en un
Proyecto Setup and Deployment Projects en Microsoft Visual Studio. NET. Cuando se ordena la acción RemoveExistingProducts en este paquete de Windows Installer, la ubicación predeterminada de la acción RemoveExistingProducts en la tabla InstallExecuteSequence causa el problema que se describe en la sección "Síntomas".

Para obtener más información, visite los siguientes sitios Web de Microsoft Developer Network (MSDN):
Propiedades

Id. de artículo: 905238 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios