miércoles, 26 de diciembre de 2012

Instalar un servicio de Windows en una máquina de 64 bits

Si el PC con el que desarrollas es una máquina de 32 bits y el servidor en el que se va a instalar es de 64 bits puedes tener algunos problemas para realizar la instalación, ya que el instalador generado no funcionará.

Lo primero a tener en cuenta es que debes compilar todos los proyectos que incluyan el servicio, el propio servicio y todos los proyectos satélites, en x64. Esto se hace en la sección "Generar" de la ventana de propiedades de cada proyecto. Yo no lo dejaría en AnyCPU ya que no siempre funciona correctamente.

Pero con esto no es suficiente, ya que el instalador de Visual Studio, al menos hasta la versión 2008, tiene un  pequeño bug. Aunque la plataforma de destino sea x64, para generar el instalador Visual Studio usa una librería del sistema (InstallUtilLib.dll) compilada en 32 bits. Por tanto, al instalar el servicio en un servidor x64 se genera una excepción del tipo “BadImageFormat”.


Para solucionar este problema debes reemplazar la librería (InstallUtilLib.dll) introducida en 32bits  en el .msi instalador por la librería de 64bits.

Para reemplazar la librería debes seguir los siguientes pasos:

  1. Abre el fichero .msi generado en Orca
    1. Si no tienes instalada la aplicación Orca de Microsoft es necesario que la descargues e instales.
  2. Selecciona “Binary table”
  3. Haz doble click en la celda [Binary Data] para el registro “InstallUtil”
  4. Asegúrate de que “Read binary from filename” está seleccionado  y pulsa sobre el botón “Browse”
  5. Navega hasta la ruta %WINDIR%\Microsoft.NET\Framework64\v2.0.50727
    1. Esta ruta solo está disponible en máquinas con arquitectura de 64Bits, por tanto debes seleccionar esta ruta en un servidor remoto, o copiar este fichero desde un servidor a tu máquina local.
  6. Selecciona “InstallUtilLib.dll”
  7. Pulsa en el botón “Open”
  8. Pulsa en el botón “OK”
  9. Guarda el .msi


Este .msi ya es posible instalarlo en un servidor de 64Bits.



No hay comentarios:

Publicar un comentario