.NET Tutorial 55. Crystal Reports, aplicaciones x86 y Windows de 64 bits

Este es un ‘error’ que ya había detectado hace bastante tiempo. Os pongo en situación:

Cuando se desarrolla una aplicación con el target "x86", Crystal Reports "no se instala correctamente" en un sistema operativo de 64 bits. Cuando se lanza el reportviewer se obtiene una bonita excepción indicando que faltan runtimes por instalar.

La solución pasa por instalar "manualmente" los archivos CRRedist2008_x86.msi y CRRedist2008_x86_es.msi, lo cual no deja de ser un poco "cutre".

Esto es debido a un "bug" en los xml de los paquetes de instalación que usa el Project Wizard de Visual Studio.

Nota: Esto lo tengo más que comprobado con Visual Studio 2008 + Crystal Reports 10.5. No sé si con Visual Studio 2010 + Crystal Reports 13.1 ocurre lo mismo, pero en caso afirmativo, la solución es la misma.

Bien, al lio.

Lo que tendremos que hacer es acceder a la carpeta donde Visual Studio busca los paquetes para generar el fichero msi  de la instalación.

Por defecto deberían estar en esta carpeta: 

Las SKDs son:

v5.0: Para Visual Studio 2005
V6.0A: Para Visual Studio 2008
V7.0A: Para Visual Studio 2010

Supongo que el nuevo Visual Studio 2012 se instalará en v8.0A (aún no he tenido tiempo de trastear con el Visual Studio 2012, sorry 😀 )

Bien, en nuestro caso, los paquetes de instalación que el usa Visual Studio 2008 para instalar Crystal Reports están en esta carpeta:

v6.0ABootstrapperPackagesCrystalReports10_5

Aquí se encuentra el fichero products.xml que usa el Wizard del proyecto de Setup del Visual Studio para añadir los paquetes de Crystal Reports para generar nuestro msi de instalación


(Haz click para agrandar)

Lo que deberemos hacer es comentar las siguientes líneas:

<BypassIf Property="ProcessorArchitecture" Value="Intel" Compare="ValueNotEqualTo"/>
<BypassIf Property="CRVSInstalled" Value="0" Compare="ValueGreaterThan"/>

El resultado del fichero products.xml una vez realizado el cambio sería algo como esto: 


(Haz click para agrandar)

Por otro lado, también tendremos que modificar el fichero que instala los runtimes "regionalizados", en este caso los del idioma español, que se encuentran en la subcarpeta es

El fichero a modificar se llama package.xml:

El contenido del fichero es el siguiente:


(Haz click para agrandar)

Al igual que antes, debermos comentar las siguientes líneas:

<BypassIf Property="ProcessorArchitecture" Value="Intel" Compare="ValueNotEqualTo"/>
<BypassIf Property="CRVSLangInstalled" Value="0" Compare="ValueGreaterThan"/>

El resultado del fichero package.xml una vez realizado el cambio sería algo como esto: 


(Haz click para agrandar)

 

Pues bien, si ahora generas un proyecto de instalación, de una aplicación "x86" que utilice Crystal Reports en un sistema operativo de 64 bits, se instalará correctamente el rutime y ya no se producirá la excepción cuando se lance un reportviewer.

 

Aclaración final: Da igual que la "máquina de desarrollo" sea de 32 o de 64 bits. El error se produce cuando se instala una aplicación "x86" en un S.O. de 64 bits.

 

Espero que os sea útil 🙂

 

Tutoriales relacionados:
.NET Tutorial 46. Visual Studio 2010, Crystal Reports 13 y .NET Framework 3.5 SP1

.NET Tutorial 47. Visual Studio 2010, Crystal Reports y RecordSelectionFormula

 

 Tags: Crystal Reports target x86 os 64 bits, Crystal Reports error no runtime installed, Crystal Reports sistema operativo 64 bits aplicación x86

Saludos.
mov eax,ollydbg; Int 13h

 

 


Ollydbg ProSignature