continuous-integration - herramientas - integracion continua pdf
WiX 3.0 arroja el error 217, mientras se ejecuta por integraciĆ³n continua (11)
¡imagi tiene toda la razón! No podía creer que esta es la verdadera respuesta. Suprimir la validación y hacer que TFS User Administrator no sea una buena solución. Además, no pude encontrar a NT / Authority para agregarlo al grupo Administradores y estaba totalmente atrapado en esto.
Obtuve el mismo error en Windows Server 2012 Datacenter como agente de compilación. Para resolver el problema :
- Artículo de lista
- Vaya a Variables de entorno en la máquina del agente de compilación
- Crea dos variables de sistema
-
"PF86"
que es igual a"C:/Program Files (x86)"
-
"PF"
que es igual a"C:/Program Files"
- Son tan cortos porque quiero guardar caracteres. Los hice sin la barra invertida final porque TEMP, TMP y otros se hicieron así y decidí mantener el estándar MS para estas variables.
- Edite la variable PATH sustituyendo cada
"C:/Program Files (x86)"
con%PF86%
y cada"C:/Program Files"
con%PF%
- Cierra y construye y disfruta!
- Funcionó para mí :)
Este es el error que arroja nuestro conjunto de compilación automatizado en Windows 2008, mientras ejecuta ICEs (después de migrar de WiX 2.0 a WiX 3.0):
LGHT0217: Error al ejecutar la acción ICE ''ICE01''. La causa más común de este tipo de falla de ICE es un motor de scripting registrado incorrectamente. Consulte http://wix.sourceforge.net/faq.html#Error217 para obtener detalles y cómo resolver este problema. El registrador de mensajes de la interfaz de usuario externa no esperaba el siguiente formato de cadena: "No se pudo acceder al servicio de instalación de Windows. Esto puede ocurrir si el instalador de Windows no está instalado correctamente. Póngase en contacto con su personal de asistencia para obtener ayuda". en light.exe (0, 0)
Además, estos son los errores que aparecen en el registro de eventos:
MSIInstaller: no se pudo conectar al servidor. Error: 0x80070005 Producto: [ProductName] - Error 1719. No se pudo acceder al servicio Windows Installer. Esto puede ocurrir si Windows Installer no está instalado correctamente. Póngase en contacto con el personal de soporte para obtener ayuda.
Intuitivamente:
- VBScript y JScript se registraron bajo administración.
- El servicio de integración tiene permisos para la interacción del escritorio y todos los archivos
- Las compilaciones tienen éxito, cuando se ejecutan manualmente en la misma máquina por otro usuario o incluso el usuario que inició sesión como cuenta de integración (a través de RDP )
No tengo ideas hasta ahora.
¿Cómo resuelvo este problema mientras mantengo la validación de ICE?
Agregar la cuenta de controlador de compilación de TFS al grupo de administración local y reiniciar el servicio de Windows hizo el trabajo por mí.
De http://wix.sourceforge.net/faq.html#Error217 :
En WiX v3, Light ejecuta automáticamente la validación-- Evaluadores de consistencia interna de Windows Installer (ICE) - después de cada compilación exitosa. La validación es una forma excelente de detectar errores comunes de creación que pueden provocar problemas en el servicio, por lo que ahora se ejecuta de forma predeterminada. Desafortunadamente, hay un problema común que ocurre en Windows Vista y Windows Server 2008 que puede hacer que los ICE fallen. Para obtener detalles sobre la causa y cómo solucionarla, consulte el blog de Heath Stewart y el WebLog de Aaron Stebner .
Encontré la causa raíz. Intenté todo lo que encontré, incluida la extensión de validación personalizada similar a la publicada en Re: [Usuarios de WiX] light.exe falló aleatoriamente al ejecutar ICE. .
No es un problema de concurrencia como se sugiere en varios hilos. Es causado por un bloque de entorno de proceso demasiado grande (PEB).
Resulta que Windows Installer no puede manejar un bloque de entorno de proceso de más de 32 kB. En mi entorno, debido al número de variables establecidas por el sistema de compilación y su tamaño (por ejemplo, la variable PATH que contiene múltiples valores duplicados), PEB era de aproximadamente 34 kB.
Curiosamente, por variables de entorno , Windows XP y 2003 tenían un límite estricto de PEB establecido en 32 kilobytes. Eso probablemente causaría un salto de construcción fácil de atrapar en una fase anterior de la construcción. Windows más nuevo no tiene ese límite, pero supongo que los desarrolladores de Windows Installer limitaron sus búferes de entorno interno a 32 kB y fallaron correctamente cuando se excedió el valor.
El problema se puede reproducir fácilmente:
- Cree un archivo .bat que establezca variables de entorno cuyo tamaño exceda los 32 kB. Por ejemplo, puede ser 32 líneas de
set Variable<number>=<text longer than 1024 characters>
- Inicie cmd.exe
- Ejecute el archivo por lotes que creó
- Desde la misma ventana cmd.exe:
- Intente crear el paquete MSI usando WiX con la validación de ICE en O
- Ejecute
smoke.exe
para validar tu paquete O - Simplemente ejecute
msiexec /i Package.msi
- Todos los comandos anteriores terminarán informando el
Error 1719 - Windows Installer could not be accessed
.
Entonces, la solución es: revise sus scripts de compilación y reduzca el número y el tamaño de las variables de entorno para que quepan en 32 kB. Puede verificar fácilmente los resultados ejecutando:
set > environment.txt
El objetivo es obtener file environment.txt
menor que ~ 30 kB.
Enfrenté el mismo problema y no me gustó suprimir la validación de ICE. Mi configuración: utilicé mi propia computadora como agente de compilación en Visual Studio Online (VSO). Mi solución fue cambiar la cuenta utilizada para ejecutar el servicio en mi máquina. En lugar de usar el servicio de red o el servicio local, simplemente hice que el servicio iniciara sesión con mi propia cuenta, que tenía todos los derechos necesarios.
Estaba obteniendo el mismo error ICE, pero el problema se convirtió en un servicio Windows Installer dañado. Esta solución funcionó para mí: http://support.microsoft.com/kb/315353
- Inicie sesión en su computadora como administrador.
- Haga clic en Inicio y luego en Ejecutar.
- En el cuadro Abrir, escriba cmd y luego haga clic en Aceptar.
- En el símbolo del sistema, escriba msiexec.exe / unregister y presione ENTRAR.
- Escriba msiexec / regserver, y luego presione ENTER.
- Reiniciar Windows
Además, verifique que la cuenta SYSTEM tenga permisos de acceso de control total para HKEY_CLASSES_ROOT en el registro de Windows. En algunos casos, también puede tener que agregar cuentas de administrador.
La descripción correcta (sin una solución, excepto si se agrega la cuenta CruiseControl al grupo de administradores locales puede pasar como una solución) del problema:
La cita de Wix 3.5 & Cruise Control da errorLGHT0217 :
La validación de ICE necesita una cuenta interactiva o privilegios de administrador para ser feliz. Véase, por ejemplo, WiX Projects vs. TFS 2010 Team Build (2009-11-14) o Re: [WiX-users] Ayuda con la creación de parches (2009-11-20).
Ninguna de las sugerencias anteriores funcionó para mí, para mí el antivirus (mcafee) entró en escena y parece que actualizó la entrada de registro vbscript.dll a una ubicación DLL incorrecta. Estas son las cosas a tener en cuenta:
- Algunas de las validaciones de WiX ICE se implementan utilizando VBSCRIPT.
- Por lo tanto, al compilar el MSI, el servidor de compilación debería tener acceso a c: / windows / system32 / vbscript.dll.
- Es probable que de alguna manera el usuario que ejecuta su compilación pierda el acceso a esta DLL.
- Como se menciona en las respuestas anteriores, busque el acceso de administrador / acceso de registro y asegúrese de que su usuario lo tenga.
Estos son los pasos que tomé para solucionar el problema:
- Abra cmd (ejecutar como admin) en la máquina del agente de compilación.
- Ejecutar RegEdit
- Seleccione la raíz, luego haga clic en ctrl + f y busque la siguiente entrada de registro: {B54F3741-5B07-11cf-A4B0-00AA004A55E8}
- Busque la clave InprocServer32 / Default
- En mi agente de compilación, la ruta fue reemplazada por una ubicación de mcafee DLL. Actualicé la ruta de regreso a c: / windows / system32 / vbscript.dll
- Editar la entrada del registro no fue fácil, ya que era una entrada de registro protegida. Utilicé el siguiente enlace para cambiar los permisos de acceso antes de poder editar la propiedad: Editar entrada de registro protegida
Una vez que actualicé la ruta, todo comenzó a funcionar como de costumbre.
Tengo algunas sugerencias
- Intente actualizar la versión de Microsoft Installer en el servidor de compilación
- Asegúrese de utilizar la versión más reciente de WiX 3.0, ya que es 3.0 versión estable ahora.
- Si todo lo demás falla, intente ejecutar el servicio de compilación en un usuario de compilación específico al que pueda manipular con permisos para ...
Vaya a su máquina de compilación y reinicie el servicio Windows Installer
Fin de la historia :
Después de jugar con los permisos de la cuenta de integración, DCOM , activación del servicio, etc., sin suerte, finalmente simplemente deshabilité la validación de ICE en la compilación de integración continua, sin dejar de mantenerla en la compilación local.
Para desactivar la validación de ICE, puede configurar SuppressValidation en true en el archivo .wixproj:
<PropertyGroup>
<SuppressValidation>true</SuppressValidation>
</PropertyGroup>
O pase la opción de línea de comando light.exe
a light.exe
.