wix - que - Error LGHT0301: Error al abrir la base de datos
que es codigo de encabezado (7)
Después de estudiar el código fuente de WiX y ejecutar Process Monitor , descubrí que excluir los directorios de compilación del análisis de virus no es suficiente.
Explicación: cuando se ejecuta light.exe, crea el archivo MSI de destino en un directorio temporal. (Este archivo es la base de datos a la que se refiere el mensaje de error LGHT0301). Después de que light.exe cierre el archivo MSI, ntrtscan.exe abre el archivo MSI para el acceso de lectura y el uso compartido de solo lectura. Más adelante, en el paso de validación de la base de datos, light.exe intenta volver a abrir el archivo MSI para el acceso de lectura / escritura y se produce una infracción de uso compartido.
Solución: excluya el directorio temporal del análisis de virus en tiempo real. En Windows Server 2008, por ejemplo, este directorio es C:/Users/«username»/AppData/Local/Temp
.
Estoy usando WiX 3.5. Recientemente, el siguiente error de WiX comenzó a ocurrir con frecuencia en el servidor de compilación:
light.exe (,): error LGHT0301: Error al abrir la base de datos. Durante la validación, esto ocurre con mayor frecuencia cuando se intenta abrir una base de datos utilizando una página de códigos no compatible o un archivo que no es una base de datos válida de Windows Installer. Utilice una página de códigos diferente en el Módulo / @ Página de códigos, Paquete / @ Página de códigos de resumen, Producto / @ Página de códigos, o WixLocalization / @ Página de códigos; o asegúrese de proporcionar la ruta a una base de datos válida de Windows Installer.
¿A qué "base de datos" se refiere el error? (Ninguno de los archivos fuente de WiX ha cambiado en mucho tiempo, así que dudo que sea un problema de página de códigos).
Otras personas han informado que este error puede ser causado por Trend Micro Office Scan, que de hecho está instalado en el servidor de compilación. Le pedí al administrador del sistema que excluyera los directorios de compilación del análisis, pero este error aún ocurre. ¿Cómo puedo determinar si el detector de virus es el culpable? (El error no siempre se produce, por lo que si desactivo el antivirus y la siguiente compilación se realiza correctamente, aún no sé si el error desapareció de forma permanente).
Este es el error más común que encontré al usar WiX. La solución más fácil para esto es ir a Propiedades de su proyecto → Configuración de herramientas → (Verificar) Suprimir validación ICE .
Este es un problema común con los procesos de compilación y antivirus. El escáner detectará el nuevo paquete MSI e intentará escanearlo. Mientras tanto, el proceso de compilación también intenta validarlo ejecutando el conjunto de evaluadores de coherencia interna (ICE) y se produce un error porque la base de datos tiene una exclusión mutua.
Solo debes eliminar el análisis de virus de tus carpetas de salida de compilación. Alternativamente, desacople la validación del comando Light para que el análisis antivirus abandone el identificador de MSI antes de ejecutar la validación ICE.
La "Deshabilitar la validación de ICE" funcionó para mí, solo una configuración a través de Visual Studio 2012 en el .Setup.
La verdadera causa fue la exploración en tiempo real de Trend Micro .
(Lo siguiente es solo para referencia histórica)
Seguí la respuesta de @Michael Liu y resolví el problema.
Yo tuve el mismo problema.
No me refiero a la página de códigos (ni a la página de resumen de códigos) en ninguna de esas etiquetas, ni de hecho en ninguna parte del WXS. Poner Codepage = "1252" no cambió nada.
Finalmente, traté de añadir
encoding="utf-8"
a la etiqueta XML que anteriormente solo tenía un atributo version = ''1.0''. Esto solucionó el problema, como se describe en el error "Error al abrir la base de datos". - solucionado
También fue el programa antivirus para mí.
Una forma fácil de verificar si el problema está relacionado con el programa antivirus es deshabilitar la validación ICE en la configuración del proyecto WiX (usando la versión 3.7). Esto funcionó para mí, y es un ajuste permanente ahora, ya que en nuestra empresa no puede cambiar la configuración del software antivirus.
Tuve el mismo problema que estaba realmente relacionado con las páginas de códigos y la configuración de idioma de mi sistema.
Agregar idioma de entrada en inglés en la configuración regional de Windows solucionó el problema en mi instalación de Windows en alemán.