WiX 3.0 lanza el error 217, mientras se ejecuta mediante integración continua


Este es el error que genera nuestra suite de compilación automatizada en Windows 2008, mientras ejecuta I (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 incorrectamente registrado. Véase http://wix.sourceforge.net/faq.html#Error217 para más detalles y cómo resolver este problema. La interfaz de usuario externa no esperaba el siguiente formato de cadena message logger: "No se pudo acceder al servicio de Windows Installer. Esto puede ocurrir si el instalador de Windows no está instalado correctamente. Póngase en contacto con su personal de soporte para obtener ayuda.". en la luz.exe (0, 0)

Además, estos son los errores que aparecen en el registro de eventos:

MsiInstaller: Error al conectarse al servidor. Error: 0x80070005 Producto: [Nombre del producto] Error Error 1719. No se pudo acceder al servicio de Windows Installer. Esto puede ocurrir si las ventanas El instalador no está instalado correctamente. Póngase en contacto con su personal de soporte para obtener ayuda.

Intuitivamente:

  • VBScript y JScript se registraron bajo admin.
  • El servicio de integración tiene permisos para la interacción del escritorio y todos los archivos
  • Se construye correctamente, cuando se ejecuta manualmente en la misma máquina por otro usuario o incluso por un usuario que ha iniciado sesión como cuenta de integración (a través de RDP)

Se me acabaron las ideas, así que lejos.

¿Cómo resuelvo este problema manteniendo la validación ICE?

Author: Peter Mortensen, 2009-06-30

11 answers

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, mientras que la mantuve en la compilación local.

Para deshabilitar la validación ICE puede establecer SuppressValidation a true en el .archivo wixproj:

    <PropertyGroup>
        <SuppressValidation>true</SuppressValidation>
    </PropertyGroup>

O pase la opción de línea de comandos -sval a light.exe.

 42
Author: Rinat Abdullin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-21 18:47:18

Agregar la cuenta de TFS build controller al grupo de administración local y reiniciar el servicio de Windows hizo el trabajo por mí.

 28
Author: Casper Leon Nielsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-01 22:16:01

Encontré la causa raíz. Probé todo lo que encontré, incluida la extensión de validador personalizada similar a una publicada en Re: [Usuarios de WiX] luz.exe falló aleatoriamente al ejecutar el CIEm..

No es un problema de concurrencia como se sugiere en varios hilos. Es causada por un Bloque de Entorno de Proceso (PEB) demasiado grande.

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, variable de RUTA 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 duro de PEB establecido en 32 kilobytes. Eso probablemente causaría una ruptura de construcción fácil de atrapar en una fase anterior de la construcción. Windows más reciente no tiene tal límite, pero supongo que los desarrolladores de Windows Installer limitaron sus buffers de entorno interno a 32 kB y fallar con gracia cuando se excede el valor.

El problema se puede reproducir fácilmente:

  • Crear un.archivo bat que establece variables de entorno cuyo tamaño supera 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ó
  • Del mismo cmd.ventana exe:
    • Intente construir el paquete MSI usando WiX con validación ICE en OR
    • Ejecute smoke.exe para validar su paquete O
    • Simplemente ejecute msiexec /i Package.msi
  • Todos los comandos anteriores terminarán reportando Error 1719 - Windows Installer could not be accessed.

Entonces, la solución es revisar sus scripts de compilación y reducir el número y el tamaño de las variables de entorno para que todas encajen en 32 kB. Puede verificar fácilmente los resultados ejecutando:

set > environment.txt

El objetivo es obtener el archivo environment.txt más pequeño que ~30 kB.

 22
Author: imagi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-21 19:01:15

La descripción correcta (sin una solución, excepto si agregar la cuenta CruiseControl al grupo local administradores puede pasar como una solución) del problema:

Cita de Wix 3.5 y Control de crucero da errorLGHT0217:

La validación ICE necesita una cuenta interactiva o privilegios de administrador para ser feliz. Ver por ejemplo WiX Projects vs. TFS 2010 Team Build (2009-11-14) o Re: [Wix-users] Ayuda con la construcción parche (2009-11-20).

 9
Author: vlad2135,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-21 19:12:16

Imagi tiene toda la razón! No podía creer que esta fuera la verdadera respuesta. Suprimir la validación y hacer Administrador de usuarios de TFS no son buenas soluciones. Además, no pude encontrar NT \ Autoridad para agregarlo al grupo de administradores y estaba totalmente atascado en esto.

Tengo el mismo error en Windows Server 2012 Datacenter como Build Agent. Para resolver el problema :

  1. List item
  2. Ir a Variables de entorno en la máquina agente de compilación
  3. Crear dos Variables del Sistema
  4. "PF86" que es igual a "C:\Program Files (x86)"
  5. "PF" que es igual a "C:\Program Files"
  6. Son tan cortos porque quiero guardar caracteres.Los hice sin la barra invertida final porque TEMP, TMP y otros se hicieron así y decidí atenerme al estándar de MS para estas variables.
  7. Edite la variable PATH sustituyendo cada "C:\Program Files (x86)" por %PF86% y cada "C:\Program Files" por %PF%
  8. Cerrar y construir y disfrutar!
  9. Funcionó para mí. :)
 4
Author: Ognyan Dimitrov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-09 14:29:00

Estaba recibiendo mismo error de HIELO, pero el problema se convirtió en servicio de Windows Installer dañado. Esta solución funcionó para mí: http://support.microsoft.com/kb/315353

  1. Inicie sesión en su computadora como administrador.
  2. Haga clic en Inicio y, a continuación, en Ejecutar.
  3. En el cuadro Abrir, escriba cmd y, a continuación, haga clic en Aceptar.
  4. En el símbolo del sistema, escriba msiexec.exe / unregister y, a continuación, pulse INTRO.
  5. Escriba msiexec / regserver y, a continuación, pulse ENTRAR.
  6. Reiniciar Windows

Además, verifique que la cuenta del SISTEMA tenga permisos de acceso de control total HKEY_CLASSES_ROOT hive en el registro de Windows. En algunos casos, es posible que también tenga que agregar cuentas de administrador.

 2
Author: Vladimir Demirev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-13 10:54:43

De http://wix.sourceforge.net/faq.html#Error217:

En WiX v3, Light ejecuta automáticamente la validación-- Evaluadores de Coherencia Interna de Windows Installer (I) -- después de cada construcción exitosa. La validación es un excelente manera de detectar errores de autoría comunes que pueden provocar problemas de servicio, es por eso que ahora se ejecuta por defecto. Desafortunadamente, hay un problema común que se produce en Windows Vista y Windows Server 2008 que puede causar ICEs a fallar. Para obtener más información sobre la causa y cómo solucionarla, consulte El blog de Heath Stewart y El WebLog de Aaron Stebner .

 1
Author: gregmac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-03 22:13:22

Tengo algunas sugerencias.

  • Intente actualizar la versión de Microsoft Installer en el servidor de compilación
  • Asegúrate de usar la nueva versión de WiX 3.0, ya que ahora es estable en la versión 3.0.
  • Si todo lo demás falla, intente ejecutar el servicio de compilación bajo un usuario de compilación específico para el que pueda jugar con los permisos...
 1
Author: Christopher Karper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-21 18:44:21

Me enfrenté al mismo problema y no me gustaba suprimir la validación de ICE. Mi configuración: Utilicé mi propio equipo 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 se iniciara con mi propia cuenta, que tenía todos los derechos necesarios.

 0
Author: nath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-14 06:57:51

Vaya a su máquina de compilación y reinicie el servicio de Windows Installer

 0
Author: TVSuser1654136,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-21 09:30:17

Ninguna de las sugerencias anteriores funcionó para mí, para mí el antivirus (mcafee) entró en escena y parece que actualizó el vbscript.dll entrada de registro a una ubicación DLL incorrecta. Estas son las cosas a tener en cuenta:

  1. Algunas de las validaciones de Wix ICE se implementan usando VBSCRIPT.
  2. Así que mientras se compila el MSI, el servidor de compilación necesitaría c:\windows\system32\vbscript.DLL.
  3. Lo más probable es que de alguna manera el usuario que ejecuta su compilación perdió el acceso a esta DLL.
  4. Como se mencionó en las respuestas anteriores, busque el acceso de administrador/registro y asegúrese de que su usuario lo tenga.

Estos son los pasos que tomé para solucionar el problema:

  1. Abra cmd (ejecute como administrador) en la máquina del agente de compilación.
  2. Ejecutar RegEdit
  3. Seleccione la raíz, haga clic en ctrl + f y Busque la siguiente entrada del registro : {B54F3741-5B07-11cf-A4B0-00AA004A55E8}
  4. Busque el InprocServer32 \ Default Clave

introduzca la descripción de la imagen aquí

  1. En mi agente de compilación, la ruta fue reemplazada por una ubicación DLL de mcafee. He actualizado el camino de vuelta a c:\windows\system32\vbscript.dll
  2. Editar la entrada del registro no fue fácil, ya que era una entrada de registro protegida. Usé el siguiente enlace para cambiar los permisos de acceso antes de poder editar la propiedad: Editar entrada de registro protegida

Una vez que actualizé la ruta, todo comenzó a funcionar como de costumbre.

 0
Author: Isaiah4110,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-17 15:56:03